Løs disse ofte stillede kodningsproblemer for at klare dig godt til din næste jobsamtale i programmering.
Kodningsinterviews er en så vigtig ting i en programmørs liv, at han bare ikke kan slippe af sted med det. Det er den første hurdle, de skal krydse for at få det softwareudviklerjob, de ønsker i løbet af deres skole- og universitetsdage.
For at gøre sagen værre, vil du finde, at så mange mennesker på internettet fortæller, at kodningsinterview er fejlbehæftet, at ansættelsesprocessen for programmører stinker og så videre, men du behøver ikke at være opmærksom på dem, ikke i det mindste i starten af din karriere.
De har måske ret, men de er inde i det tog, som du forsøger at komme ind i. Uanset, hvor meget de kritiserer kodningsinterviews og programmører ansættelsesprocessen, har mange af dem gået gennem den samme rute til der, hvor de er.
Vi ved alle, at systemet med kodningsinterviews ikke er perfekt, og mange forsøger at ændre det, men indtil det er ændret, skal du følge dets regler for at komme ind i systemet. Dette er noget for erfarne udviklere at håndtere, som en juniorudvikler bør din prioritet være at klare kodningsinterviewet og få det job, du ønsker.
Som forfatter af en Java-blog og en Medium-publikation modtager jeg mange forespørgsler relateret til kodningsproblemer og hvordan man håndterer dem, og det er derfor, jeg bliver ved med at skrive artikler som denne, som har hjulpet mange programmører direkte og indirekte i deres karriere.
I denne artikel vil jeg dele med dig top 100 kodningsinterviewproblemer fra programmeringsjobinterviews, som enhver programmør bør kende.
Nu har jeg ryddet den forvirring, at Coding Interview er vigtig, og du bør ikke distrahere, lad os komme ind i det virkelige arbejde. Det store spørgsmål er, hvad man skal forberede til kodningsinterviews?
Det vigtigste at forberede er datastrukturbaserede kodningsproblemer som array-baserede kodningsproblemer, strengproblemer, problemer med linkede lister, problemer med binære træer osv.
Afhængigt af datastrukturbaserede spørgsmål stiller de fleste jobinterviews inden for programmering også spørgsmål om algoritmer, design, bitmanipulation og generelle logikbaserede spørgsmål, som jeg vil beskrive i dette afsnit.
Det er vigtigt, at du øver dig på disse begreber, fordi de nogle gange bliver vanskelige at løse i det egentlige interview. At have øvet dem før gør dig ikke kun fortrolig med dem, men giver dig også mere selvtillid til at forklare løsningen til intervieweren.
Et af de største problemer med kodningsproblemer er, at der er hundredvis og tusindvis af kodningsproblemer på interviews, der er endda websteder som LeetCode, HackerRank, Codewars, Topcoder, freeCodeCamp, HackerEarth, som træner programmører til kodningsinterviews med masser af svære spørgsmål, hvilket nogle gange bare overvælder en nybegynder, der leder efter et job.
Jeg tror på enkelhed og de 10 % af indsatsen, som giver 90 % af resultaterne, og derfor har jeg samlet top 100 kodningsproblemer, som ikke er for svære, og som også ofte bliver stillet i rigtige interviews.
Løsningen af disse problemer giver dig ikke kun selvtillid, men hjælper dig også med at genkende nogle af de mest almindelige algoritmiske mønstre, som også vil hjælpe dig med at løse nogle usete problemer på rigtige interviews.
Ressourcer til kodningsinterviews
Vælgelse af gode ressourcer er meget vigtigt for succes i dine kodningsinterviews. Hvis du vælger en forkert ressource, så mere end penge, vil du miste værdifuld tid, som du har brug for til forberedelse, og derfor skal du bruge lidt tid på at søge efter en god ressource.
Hvis du har brug for anbefalinger, er følgende nogle af mine afprøvede og testede ressourcer til at lære datastruktur og algoritmer i dybden til kodningsinterviews:
- Data Structures and Algorithms: Deep Dive Using Java for Java-udviklere. Lær om Arrays, Linked Lists, Trees, Hashtables, Stacks, Queues, Heaps, Sort algorithms and Search algorithms
- Algorithms and Data Structures in Python for dem, der elsker Python
En guide til at implementere de mest opdaterede algoritmer fra bunden: arrays, linked lists, graph algorithms, and sorting
- JavaScript Algorithms and Data Structures Masterclass by Colt_Steele for JavaScript-programmører. The Missing Computer Science and Coding Interview Bootcamp. Lær alt, hvad du behøver for at klare dig godt i svære kodningsinterviews.
- Mastering Data Structures & Algoritmer ved hjælp af C og C++ for dem, der er gode til C/C++
- Datastrukturer i Java: An Interview Refresher by The Educative Team to refresh important Data Structure and algorithms concepts in Java. Dette kursus indeholder en detaljeret gennemgang af alle de almindelige datastrukturer og giver detaljer på implementeringsniveau i Java for at give læserne mulighed for at blive godt rustet.
- Grokking the Coding Interview: Patterns for Coding Questions by Fahim ul Haq and The Educative Team
Dette er ligesom metakurset for kodningsinterviews, som ikke vil lære dig, hvordan du løser et kodningsproblem, men i stedet lære dig, hvordan du løser en bestemt type kodningsproblemer ved hjælp af mønstre. Behersk disse 15 underliggende mønstre til interviewspørgsmål, og du vil være i stand til at tackle alt, hvad du møder til interviewet
Og hvis du foretrækker bøger, er der ikke noget bedre end Cracking The Coding Interview, af Gayle Laakmann McDowell, som præsenterer 189+ Programmeringsspørgsmål og løsning. En god bog til at forberede sig til programmeringsjobsamtaler på kort tid. Btw, jeg vil også tjene nogle penge, hvis du køber nogen af disse ressourcer nævnt her.
Some Tips for Coding Interviews
- Der er ingen bedre måde at klare sig godt i Coding interviews end at øve sig på så mange kodningsproblemer som muligt. Dette vil ikke kun træne din hjerne til at genkende algoritmiske mønstre i problemer, men også give dig den hårdt tiltrængte selvtillid til at løse det problem, du aldrig har set før.
- Mine andet tip er at lære om så mange datastrukturer og algoritmer som muligt. Dette er en forlængelse af det foregående tip, men det indebærer også læsning og ikke kun øvelse. Hvis du f.eks. kender til hashtabellen, kan du også mange array- og tællerbaserede problemer nemt. Det samme gælder for træer og grafer.
- Valg af den rigtige datastruktur er en meget vigtig del af softwareudvikling og kodningsinterview, og medmindre og indtil du kender dem, vil du ikke kunne vælge.
- Time dig selv – kandidater, der løser interviewopgaver inden for tidsgrænsen og hurtigt, har større sandsynlighed for at klare sig godt i interviewet, så du bør også time dig selv.
- Tænk på edge cases, og kør din kode igennem dem. Nogle gode edge cases kan være et tomt input, et mærkeligt input eller et virkelig stort input for at teste grænsebetingelserne og grænserne.
- Når du har løst problemet, så prøv at forklare det til en ven eller kollega, som også er interesseret i kodningsproblemer. Dette vil fortælle dig, om du virkelig har forstået problemet eller ej. Hvis du kan forklare nemt betyder det, at du har forstået det. Diskussionen får også din hjerne til at arbejde, og du kan komme med en alternativ løsning og finde nogle fejl i dine eksisterende algoritmer.
- Et andet nyttigt tip til at udmærke sig ved kodningsinterviews er at deltage i kodningsinterviews og mange af dem. Du vil opdage, at du bliver bedre efter hvert interview, og det hjælper dig også med at få flere tilbud, hvilket yderligere giver dig mulighed for at forhandle bedre og få de ekstra 30K til 50K, som du normalt lader ligge på bordet, hvis du kun har ét tilbud i hånden.
- Btw, Hvis du er klar til Coding Interview, kan du også tage TripleByte’s quiz og gå direkte til den endelige runde af interviews med top tech-virksomheder som Coursera, Adobe Acrobat, Dropbox, Grammarly, Uber, Quora, Evernote, Twitch og mange flere. Jeg kendte ikke Triplebyte før, men de yder en fantastisk service til jobsøgere. En stor tak til dem.
Top 100 Coding Problems from Programming Job interviews
Suden at spilde mere af din tid, er her min liste over 100 ofte stillede kodningsproblemer fra programmeringsjobsamtaler. For at få mest ud af denne liste, foreslår jeg at du rent faktisk løser problemet.
Gør det selv, uanset om du sidder fast, for det er den eneste måde at lære på. Når du har løst et par problemer, vil du få selvtillid. Jeg foreslår også, at du kigger på løsningen, når du sidder fast eller efter du har løst problemet, på den måde lærer du at sammenligne forskellige løsninger, og hvordan du nærmer dig et problem fra en anden vinkel.
- Hvordan implementeres en bubble sort-algoritme? (løsning)
- Hvordan implementeres en flersorteringsalgoritme? (løsning)
- Hvordan tæller man forekomsten af et givet tegn i en streng? (løsning)
- Hvordan udskriver man det første ikke-gennemgangne tegn fra en streng? (løsning)
- Hvordan konverterer du en given String til int som atoi()? (løsning)
- Hvordan implementerer du en spand sorteringsalgoritme? (løsning)
- Hvordan implementerer du en tællende sorteringsalgoritme? (løsning)
- Hvordan fjerner man dubletter fra et array på stedet? (løsning)
- Hvordan vender man et array om på stedet i Java? (løsning)
- Hvordan fjernes dubletter fra et array uden brug af et bibliotek? (løsning)
- Hvordan implementeres en radix-sorteringsalgoritme? (løsning)
- Hvordan bytter man to tal uden at bruge den tredje variabel? (løsning)
- Hvordan kontrollerer man, om to rektangler overlapper hinanden? (løsning)
- Hvordan designer man en salgsautomat? (løsning)
- Hvordan finder man det manglende tal i et givet heltalsmønster fra 1 til 100? (løsning)
- Hvordan finder man det dobbelte tal i et givet heltalsmønster? (løsning)
- Hvordan finder du det dobbelte tal i et array, hvis det indeholder flere dubletter? (løsning)
- Forskellen mellem en stabil og ustabil sorteringsalgoritme? (svar)
- Hvordan implementeres en iterativ quicksort-algoritme? (løsning)
- Hvordan finder man det største og mindste tal i et usorteret heltalsmatrix? (løsning)
- Hvordan vender man en linket liste om på stedet? (løsning)
- Hvordan tilføjer man et element i midten af den linkede liste? (løsning)
- Hvordan sorterer man en linket liste i Java? (løsning)
- Hvordan finder man alle par i et heltalsarray, hvis sum er lig med et givet tal? (løsning)
- Hvordan implementerer du en indsætnings-sorteringsalgoritme? (løsning)
- Hvordan fjernes dubletter fra et givet array i Java? (løsning)
- hvordan fjernes dublettegn fra String? (løsning)
- Hvordan finder man det maksimalt forekommende tegn i en given String? (løsning)
- Hvordan sorteres et heltal array på stedet ved hjælp af quicksort-algoritmen? (løsning)
- Hvordan omvendes en given streng på stedet? (løsning)
- Hvordan udskriver man dobbelte tegn fra en streng? (løsning)
- Hvordan kontrollerer man, om to strenge er anagrammer af hinanden? (løsning)
- Hvordan finder man alle permutationer af en streng? (løsning)
- Hvordan kan en given streng omvendes ved hjælp af rekursion? (løsning)
- Hvordan kan man kontrollere, om en given streng er et palindrom? (løsning)
- Hvordan finder man længden af den længste delstreng uden gentagelse af tegn? (løsning)
- Givet streng str, Hvordan finder du den længste palindrome delstreng i str? (løsning)
- Hvordan kontrollerer du, om en streng kun indeholder cifre? (løsning)
- Hvordan fjernes Nth Node fra slutningen af en linket liste? (løsning)
- Hvordan fletter man to sorterede linked list? (løsning)
- Sådan konverteres en sorteret liste til et binært søgetræ? (løsning)
- Hvordan finder man dobbelte tegn i en given streng? (løsning)
- Hvordan tæller du et antal vokaler og konsonanter i en given streng? (løsning)
- Hvordan vender du ord i en given sætning om uden at bruge en biblioteksmetode? (løsning)
- Hvordan kontrollerer du, om to strenge er en rotation af hinanden? (løsning)
- Hvordan konverteres et byte array til String? (løsning)
- Hvordan fjerner du et givet tegn fra String? (løsning)
- Hvordan finder du det midterste element i en enkeltkoblet liste i én arbejdsgang? (løsning)
- Hvordan kontrollerer man, om en given linket liste indeholder en cyklus? Hvordan finder man cyklens startknudepunkt? (løsning)
- Hvordan vender man en linket liste om? (løsning)
- Hvordan vender man en enkeltkoblet liste om uden rekursion? (løsning)
- Hvordan fjernes dobbelte knuder i en usorteret kædet liste? (løsning)
- Hvordan finder man længden af en singly linked list? (løsning)
- Hvordan finder man det tredje knudepunkt fra slutningen i en enkeltkoblet liste? (løsning)
- Hvordan finder du summen af to linkede lister ved hjælp af Stack? (løsning)
- Hvad er forskellen mellem array og linked list? (svar)
- Hvordan fjerner man dubletter fra en sorteret linked list? (løsning)
- Hvordan finder man det knudepunkt, hvor skæringspunktet mellem to enkeltkædede lister begynder? (løsning)
- Givet en linket liste og en værdi x, partitionér den således, at alle knuder mindre end x kommer før knuder større end eller lig med x. (løsning)
- Hvordan kan man kontrollere, om en given linket liste er et palindrom? (løsning)
- Hvordan fjerner man alle elementer fra en knyttet liste af hele tal, som passer til en given værdi? (løsning)
- Hvordan implementeres et binært søgetræ? (løsning)
- Hvordan udføres preorder traversal i et givet binært træ? (løsning)
- Hvordan traverserer man et givet binært træ i præorden uden rekursion? (løsning)
- Hvordan udfører man en inorder-traversal i et givet binært træ? (løsning)
- Hvordan udskriver man alle knuder i et givet binært træ ved hjælp af inorder-traversal uden rekursion? (løsning)
- Hvordan implementerer du en postorder-traversal-algoritme? (løsning)
- Hvordan traverserer man et binært træ i postorder-traversal uden rekursion? (løsning)
- Hvordan udskrives alle blade i et binært søgetræ? (løsning)
- Hvordan tæller man et antal bladknuder i et givet binært træ? (løsning)
- Hvordan udfører man en binær søgning i et givet array? (løsning)
- Hvordan bytter man to tal uden at bruge den tredje variabel? (løsning)
- Hvordan kontrolleres det, om to rektangler overlapper hinanden? (løsning)
- Hvordan man designer en salgsautomat? (løsning)
- Hvordan implementeres en LRU Cache i dit foretrukne programmeringssprog? (løsning)
- Hvordan tjekker man, om et givet tal er et palindrom? (løsning)
- Hvordan tjekker man, om et givet tal er et Armstrong-tal? (løsning)
- Hvordan finder man alle primfaktorer af et givet tal? (løsning)
- Hvordan tjekker man, om et givet tal er positivt eller negativt i Java? (løsning)
- Hvordan finder man den største primfaktor af et givet heltal? (løsning)
- Hvordan kan man udskrive alle primtal op til et givet tal? (løsning)
- Hvordan udskriver man Floyds trekant? (løsning)
- Hvordan udskriver man Pascals trekant? (løsning)
- Hvordan beregner man kvadratroden af et givet tal? (løsning)
- Hvordan tjekker man, om det givne tal er et primtal? (løsning)
- Hvordan adderer man to tal uden at bruge plusoperatoren i Java? (løsning)
- Hvordan kontrolleres det, om et givet tal er lige/uligt uden brug af aritmetisk operatør? (løsning)
- Hvordan man udskriver en given Pyramid struktur? (løsning)
- Hvordan finder man den højeste gentagende verden fra en given fil i Java? (løsning)
- Hvordan omvendes givet Integer i Java? (løsning)
- Sådan konverteres et decimaltal til binært tal i Java? (løsning)
- Hvordan tjekker man, om et givet år er et skudår i Java? (løsning)
- Kan du implementere en binær søgealgoritme uden rekursion? (løsning)
- Forskellen mellem en stabil og ustabil sorteringsalgoritme? (svar)
- Hvad er Depth First Search Algorithm for et binært træ? (løsning)
- Hvordan er en iterativ quicksort-algoritme implementeret? (løsning)
- Hvordan implementeres en indsætningssorteringsalgoritme? (løsning)
- Hvordan implementeres en sammenlægningssorteringsalgoritme? (løsning)
- Hvad er forskellen mellem sammenligningsalgoritmer og ikke-sammenlignende sorteringsalgoritmer? (svar)
- Hvordan implementeres Sieve of Eratosthenes-algoritmer for primtal? (løsning)
Disse mange spørgsmål burde være nok, men hvis du har brug for flere sådanne kodningsspørgsmål, kan du tage hjælp fra bøger som Cracking The Code Interview, af Gayle Laakmann McDowell, der præsenterer 189+ Programmeringsspørgsmål og løsning. En god bog til at forberede sig til programmeringsjobsamtaler på kort tid.
Nu er du klar til kodningsinterviewet
Dette er nogle af de mest almindelige spørgsmål uden for datastruktur og algoritmer, som hjælper dig til at klare dig rigtig godt i din samtale.
Jeg har også delt mange af disse spørgsmål på min blog, så hvis du virkelig er interesseret, kan du altid gå derhen og søge efter dem.
Disse almindelige spørgsmål om kodning, datastruktur og algoritmer er dem, du skal kende for at få en vellykket samtale med en hvilken som helst virksomhed, stor som lille, til et programmeringsjob på ethvert niveau.
Hvis du leder efter et job inden for programmering eller softwareudvikling i 2019, kan du starte din forberedelse med denne liste over kodningsspørgsmål, og hvis du er klar til interview, kan du også tage TripleByte’s quiz og gå direkte til den endelige runde af interviews med de bedste tech-virksomheder som Coursera, Adobe, Dropbox, Grammarly og mange flere.
Denne liste giver gode emner at forberede sig på og hjælper også med at vurdere din forberedelse for at finde ud af dine styrke- og svaghedsområder.
Godt kendskab til datastruktur og algoritmer er vigtigt for at få succes i kodningsinterviews, og det er der, du bør fokusere mest på.
videre læring
Datastrukturer og algoritmer: Deep Dive Using Java
10 bøger til forberedelse af tekniske programmerings-/kodningsjobsamtaler
10 algoritmebøger, som enhver programmør bør læse
Top 5 datastruktur- og algoritmebøger for Java-udviklere
Fra 0 til 1: Data Structures & Algorithms in Java
Data Structure and Algorithms Analysis – Job Interview
20+ String based coding problems from interviews
20+ linked list problems from interviews
20+ basic algorithms based problems from interviews
Closing Notes
Tak, Du nåede frem til slutningen af artiklen … Held og lykke med din programmeringsinterview! Det bliver bestemt ikke let, men ved at følge disse søge- og sorteringsalgoritmespørgsmål er du et skridt nærmere end andre. Forresten, jo flere spørgsmål du løser i praksis, jo bedre bliver din forberedelse.
Så, hvis du synes, at 100 kodningsproblemer ikke er nok, og du har brug for mere, så tjek disse yderligere 50 programmeringsspørgsmål til telefoninterviews og disse bøger og kurser for en mere grundig forberedelse.
Alle held og lykke med din kodningssamtale.
Andre artikler, du måske kan lide: