Rezolvați aceste probleme de codare puse frecvent pentru a vă descurca bine la următoarele interviuri de angajare în programare.
.
Interviurile de codare sunt un lucru atât de important în viața unui programator încât acesta nu poate scăpa de asta. Este primul obstacol pe care trebuie să îl treacă pentru a obține jobul de programator software pe care și-l doresc pe tot parcursul școlii și facultății.
Pentru a înrăutăți lucrurile, veți găsi atât de mulți oameni pe internet care spun că interviul de codare este defect, că procesul de angajare pentru programatori este nașpa și așa mai departe, dar nu trebuie să le acordați atenție, cel puțin la începutul carierei.
Poate că au dreptate, dar sunt în interiorul trenului în care încercați să urcați. Indiferent cât de mult critică ei interviurile de programare și procesul de angajare a programatorilor, mulți dintre ei au trecut prin același traseu pentru a ajunge acolo unde sunt ei.
Știm cu toții că sistemul de interviuri de programare nu este perfect și mulți încearcă să îl schimbe, dar până când va fi schimbat, trebuie să îi urmezi regulile pentru a intra în sistem. Acest lucru este ceva cu care trebuie să se confrunte dezvoltatorii cu experiență, ca dezvoltator junior, prioritatea ta ar trebui să fie să treci de interviul de codare și să obții slujba pe care ți-o dorești.
Ca autor al unui blog Java și al unei publicații Medium, primesc o mulțime de întrebări legate de problemele de codare și cum să le rezolv și de aceea continui să scriu articole ca acesta care au ajutat o mulțime de programatori în mod direct și indirect în cariera lor.
În acest articol, voi împărtăși cu dvs. top 100 probleme de interviu de codificare de la interviurile de angajare în programare pe care fiecare programator ar trebui să le cunoască.
Acum că, am clarificat confuzia că interviul de codificare este important și că nu ar trebui să vă distrageți, să trecem la munca reală. Marea întrebare este ce să pregătești pentru interviurile de codare?
Bine, cel mai important lucru pe care trebuie să-l pregătești sunt problemele de codare bazate pe structuri de date, cum ar fi problemele de codare bazate pe matrice, probleme de șiruri de caractere, probleme de liste legate, probleme de arbori binari etc.
Pe lângă întrebările bazate pe structura de date, majoritatea interviurilor de angajare în programare pun, de asemenea, întrebări bazate pe algoritmi, proiectare, manipulare de biți și logică generală, pe care le voi descrie în această secțiune.
Este important să exersați aceste concepte, deoarece uneori devin dificil de rezolvat în interviul real. Faptul că le-ați exersat înainte nu numai că vă familiarizează cu ele, dar vă oferă și mai multă încredere în explicarea soluției către intervievator.
Una dintre principalele probleme cu problemele de codare este că există sute și mii de probleme de codare la interviuri, există chiar site-uri precum LeetCode, HackerRank, Codewars, Topcoder, freeCodeCamp, HackerEarth care antrenează programatorii pentru interviuri de codare cu o mulțime de întrebări dificile, ceea ce uneori copleșește pur și simplu un începător în căutarea unui loc de muncă.
Cred în simplitate și în cei 10% de efort care produc 90% din rezultate și de aceea am adunat top 100 de probleme de codare care nu sunt prea dificile și care, de asemenea, sunt puse frecvent la interviurile reale.
Rezolvarea acestor probleme nu numai că vă oferă încredere, dar vă ajută și să recunoașteți unele dintre cele mai comune modele algoritmice care vă vor ajuta, de asemenea, să rezolvați unele probleme nevăzute la interviurile reale.
Resurse pentru interviurile de codare
Salegerea unor resurse bune este foarte importantă pentru succesul la interviurile de codare. Dacă ați ales o resursă greșită, atunci mai mult decât bani, veți pierde timp prețios de care aveți nevoie pentru pregătire, prin urmare, petreceți ceva timp cercetând pentru o resursă bună.
Dacă aveți nevoie de recomandări, următoarele sunt câteva dintre resursele mele încercate și testate pentru a învăța în profunzime Data Structure and Algorithms pentru interviurile de codare:
- Data Structures and Algorithms: Deep Dive Using Java pentru dezvoltatorii Java. Învățați despre Array-uri, Linked Lists, Trees, Hashtables, Stacks, Queues, Heaps, Algoritmi de sortare și algoritmi de căutare
- Algoritmi și structuri de date în Python pentru cei care iubesc Python
Un ghid de implementare de la zero a celor mai actuali algoritmi: array-uri, liste legate, algoritmi de grafice și sortare
- JavaScript Algorithms and Data Structures Masterclass by Colt_Steele pentru programatorii JavaScript. The Missing Computer Science and Coding Interview Bootcamp. Învățați tot ce aveți nevoie pentru a trece cu brio de interviurile dificile de codare.
- Mastering Data Structures & Algoritmi folosind C și C++ pentru cei care se pricep la C/C++
- Structuri de date în Java: An Interview Refresher by The Educative Team pentru a reîmprospăta conceptele importante de structuri de date și algoritmi în Java. Acest curs conține o trecere în revistă detaliată a tuturor structurilor de date comune și oferă detalii la nivel de implementare în Java pentru a permite cititorilor să devină bine echipați.
- Grokking the Coding Interview: Patterns for Coding Questions by Fahim ul Haq and The Educative Team
Este un fel de meta-curs pentru interviurile de codare, care nu vă va învăța cum să rezolvați o problemă de codare, ci, în schimb, vă va învăța cum să rezolvați un anumit tip de probleme de codare folosind modele. Stăpâniți aceste 15 tipare care stau la baza întrebărilor de interviu și veți fi capabili să abordați orice vă veți confrunta la interviu
Și, dacă preferați cărțile, nu există ceva mai bun decât Cracking The Coding Interview, de Gayle Laakmann McDowell, care prezintă 189+ întrebări de programare și soluție. O carte bună pentru a te pregăti pentru interviurile de angajare în programare într-un timp scurt. Btw, voi câștiga și eu niște bani dacă veți cumpăra oricare dintre aceste resurse menționate aici.
Câteva sfaturi pentru interviurile de programare
- Nu există o modalitate mai bună de a te descurca la interviurile de programare decât să exersezi cât mai multe probleme de programare. Acest lucru nu numai că vă va antrena mintea să recunoască modelele algoritmice în probleme, dar vă va da și încrederea atât de necesară pentru a rezolva problema pe care nu ați mai văzut-o niciodată.
- Al doilea sfat al meu este să învățați despre cât mai multe structuri de date și algoritmi posibil. Aceasta este o extensie a sfatului anterior, dar implică și cititul și nu doar exersarea. De exemplu, dacă știți despre tabela hash, puteți, de asemenea, multe probleme bazate pe matrice și contoare cu ușurință. Același lucru este valabil și pentru arbore și graf.
- Alegerea structurii de date potrivite este o parte foarte importantă a interviului de dezvoltare software și de codare și dacă și până când nu le cunoașteți, nu veți putea alege.
- Cronometrați-vă – candidații care rezolvă problemele de interviu în limita de timp și rapid au mai multe șanse să se descurce bine la interviu, așa că ar trebui, de asemenea, să vă cronometrați.
- Gândiți-vă la cazuri limită și rulați-vă codul prin ele. Unele cazuri limită bune ar putea fi o intrare goală, o intrare ciudată sau o intrare foarte mare pentru a testa condițiile limită și limitele.
- După ce ați rezolvat problema, încercați să o explicați unui prieten sau coleg care este de asemenea interesat de probleme de codare. Acest lucru vă va spune dacă ați înțeles cu adevărat problema sau nu. Dacă puteți explica cu ușurință înseamnă că ați înțeles. De asemenea, discuția vă face mintea să lucreze și ați putea veni cu o soluție alternativă și ați putea găsi unele defecte în algoritmii existenți.
- Un alt sfat util pentru a excela la interviurile de codare este să vă prezentați la interviurile de codare și multe dintre ele. Veți descoperi că vă veți îmbunătăți după fiecare interviu și acest lucru vă ajută, de asemenea, să obțineți mai multe oferte, ceea ce vă permite în continuare să negociați mai bine și să obțineți acele 30K la 50K în plus pe care, în general, le lăsați pe masă dacă aveți doar o singură ofertă în mână.
- Btw, Dacă sunteți gata pentru interviul de codare, atunci puteți, de asemenea, să faceți testul TripleByte și să mergeți direct la runda finală de interviuri cu companii de top din domeniul tehnologiei, cum ar fi Coursera, Adobe Acrobat, Dropbox, Grammarly, Uber, Quora, Evernote, Twitch și multe altele. Nu știam de Triplebyte până acum, dar oferă un serviciu excelent celor care își caută un loc de muncă. O mare mulțumire pentru ei.
Top 100 de probleme de codare de la interviurile de angajare în programare
Fără să vă mai pierd timpul, iată lista mea cu 100 de probleme de codare puse frecvent la interviurile de angajare în programare. Pentru a obține cea mai mare parte din această listă, vă sugerez să rezolvați efectiv problema.
Făceți-o singur, indiferent dacă v-ați blocat sau nu, deoarece aceasta este singura modalitate de a învăța. După ce veți rezolva câteva probleme veți căpăta încredere. De asemenea, vă sugerez să vă uitați la soluție atunci când v-ați blocat sau după ce ați rezolvat problema, în acest fel învățați să comparați diferite soluții și cum să abordați o problemă dintr-un unghi diferit.
- Cum este implementat un algoritm de sortare cu bule? (soluție)
- Cum este implementat un algoritm de sortare prin îmbinare? (soluție)
- Cum se numără apariția unui anumit caracter într-un șir de caractere? (soluție)
- Cum se tipărește primul caracter nerepetat dintr-un șir? (soluție)
- Cum convertiți un anumit șir de caractere în int ca în cazul atoi()? (soluția)
- Cum se implementează un algoritm de sortare de tip bucket? (soluția)
- Cum se implementează un algoritm de sortare prin numărare? (soluția)
- Cum se elimină duplicatele dintr-un array în loc? (soluție)
- Cum se inversează un array in place în Java? (soluție)
- Cum se elimină dublurile dintr-un array fără a folosi vreo bibliotecă? (soluție)
- Cum se implementează un algoritm de sortare radix? (soluție)
- Cum se schimbă două numere fără a folosi a treia variabilă? (soluție)
- Cum se verifică dacă două dreptunghiuri se suprapun unul peste celălalt? (soluție)
- Cum se proiectează un aparat de vending? (soluție)
- Cum găsiți numărul care lipsește dintr-o matrice de numere întregi date de la 1 la 100? (soluție)
- Cum se găsește numărul duplicat într-un array întreg dat? (soluție)
- Cum găsiți numerele duplicate într-un array dacă acesta conține mai multe numere duplicate? (soluție)
- Diferența dintre un algoritm de sortare stabil și unul instabil? (răspuns)
- Cum se implementează un algoritm iterativ de quicksort? (rezolvare)
- Cum se găsește cel mai mare și cel mai mic număr dintr-un array de numere întregi nesortate? (soluție)
- Cum se inversează o listă legată în loc? (soluția)
- Cum se adaugă un element la mijlocul listei legate? (soluție)
- Cum se sortează o listă legată în Java? (soluția)
- Cum găsiți toate perechile dintr-o matrice de numere întregi a căror sumă este egală cu un număr dat? (soluție)
- Cum se implementează un algoritm de sortare prin inserție? (soluție)
- Cum se elimină dublurile dintr-un array dat în Java? (soluție)
- cum se elimină caracterul duplicat din String? (soluție)
- Cum se găsește caracterul maxim care apare în String-ul dat? (soluție)
- Cum se ordonează un array de numere întregi în loc folosind algoritmul quicksort? (soluție)
- Cum se inversează un șir dat în loc? (soluție)
- Cum se tipăresc caracterele duplicate dintr-un șir de caractere? (soluție)
- Cum verificați dacă două șiruri sunt anagrame unul altuia? (soluție)
- Cum se găsesc toate permutările unui șir de caractere? (soluție)
- Cum se poate inversa un șir dat folosind recursivitatea? (soluție)
- Cum se verifică dacă un șir dat este un palindrom? (soluție)
- Cum găsiți lungimea celui mai lung subșir fără a repeta caractere? (soluția)
- Dat șirul str, Cum găsiți cea mai lungă subșir palindromică din str? (soluția)
- Cum se verifică dacă un șir conține numai cifre? (soluție)
- Cum se elimină al N-lea nod de la sfârșitul unei liste legate? (soluția)
- Cum se îmbină două liste legate sortate? (soluție)
- Cum se convertește o listă sortată într-un arbore de căutare binar? (soluție)
- Cum se găsesc caracterele duplicate într-un șir dat? (soluție)
- Cum numărați un număr de vocale și consoane într-un șir dat? (soluție)
- Cum se inversează cuvintele dintr-o propoziție dată fără a folosi vreo metodă de bibliotecă? (soluție)
- Cum verificați dacă două șiruri sunt o rotație unul față de celălalt? (soluție)
- Cum se convertește o matrice de octeți în String? (soluție)
- Cum se elimină un anumit caracter din String? (soluție)
- Cum găsiți într-o singură trecere elementul din mijloc al unei liste legate simplu? (soluție)
- Cum verificați dacă o listă legată dată conține un ciclu? Cum găsiți nodul inițial al ciclului? (soluție)
- Cum se inversează o listă legată? (soluție)
- Cum se inversează o listă legată simplu fără recursivitate? (soluție)
- Cum se elimină nodurile duplicate într-o listă legată nesortată? (soluție)
- Cum se află lungimea unei liste legate simplu? (soluție)
- Cum se găsește al treilea nod de la capăt într-o listă legată simplu? (soluție)
- Cum găsiți suma a două liste legate folosind Stack? (soluție)
- Care este diferența dintre array și linked list? (răspuns)
- Cum se elimină dublurile dintr-o listă legată sortată? (rezolvare)
- Cum se găsește nodul la care începe intersecția a două liste legate simplu. (soluția)
- Dată o listă legată și o valoare x, partiționați-o astfel încât toate nodurile mai mici decât x să vină înaintea nodurilor mai mari sau egale cu x. (soluția)
- Cum se verifică dacă o listă legată dată este un palindrom? (soluție)
- Cum se elimină toate elementele dintr-o listă legată de numere întregi care se potrivește cu o valoare dată? (soluție)
- Cum se implementează un arbore de căutare binar? (soluție)
- Cum se realizează traversarea preordonată într-un arbore binar dat? (soluție)
- Cum se parcurge un arbore binar dat în preordine fără recursivitate? (soluție)
- Cum efectuați o traversare în ordine într-un arbore binar dat? (soluție)
- Cum se tipăresc toate nodurile unui arbore binar dat folosind traversarea în ordine fără recursivitate? (soluție)
- Cum se implementează un algoritm de traversare postordine? (soluție)
- Cum parcurgeți un arbore binar în postorder traversal fără recursivitate? (soluție)
- Cum se tipăresc toate frunzele unui arbore binar de căutare? (soluția)
- Cum se numără un număr de noduri frunză dintr-un arbore binar dat? (soluție)
- Cum se efectuează o căutare binară într-un array dat? (soluția)
- Cum se face schimbul a două numere fără a folosi a treia variabilă? (soluție)
- Cum se verifică dacă două dreptunghiuri se suprapun unul peste celălalt? (soluție)
- Cum se proiectează un automat de vending? (soluție)
- Cum se implementează o memorie cache LRU în limbajul de programare preferat? (soluție)
- Cum se verifică dacă un număr dat este un palindrom? (soluție)
- Cum se verifică dacă un număr dat este un număr Armstrong? (soluție)
- Cum se găsesc toți factorii primi ai unui număr dat? (soluție)
- Cum se verifică dacă un număr dat este pozitiv sau negativ în Java? (soluție)
- Cum să găsiți cel mai mare factor prim al unui număr integral dat? (soluție)
- Cum se tipăresc toate numerele prime până la un număr dat? (soluție)
- Cum se tipărește triunghiul lui Floyd? (soluție)
- Cum se tipărește triunghiul lui Pascal? (soluție)
- Cum se calculează rădăcina pătrată a unui număr dat? (soluție)
- Cum se verifică dacă un număr dat este un număr prim? (soluție)
- Cum se adună două numere fără a folosi operatorul plus în Java? (soluția)
- Cum se verifică dacă un număr dat este par/impar fără a folosi operatorul aritmetic? (soluție)
- Cum să imprimați o structură dată de piramidă? (soluție)
- Cum să găsiți cea mai mare lume care se repetă dintr-un fișier dat în Java? (soluție)
- Cum se inversează un număr întreg dat în Java? (soluție)
- Cum se convertește un număr zecimal în binar în Java? (soluție)
- Cum să verificați dacă un an dat este un an bisect în Java? (soluție)
- Puteți implementa un Algoritm de căutare binară fără recursivitate? (soluție)
- Diferența dintre un algoritm de sortare stabil și unul instabil? (răspuns)
- Ce este Algoritmul de căutare Depth First pentru un arbore binar? (soluție)
- Cum se implementează un algoritm iterativ de quicksort? (soluție)
- Cum se implementează un algoritm de sortare prin inserție? (soluție)
- Cum se implementează un algoritm de sortare prin îmbinare? (soluție)
- Care este diferența dintre algoritmii de sortare prin comparație și prin necomparare? (răspuns)
- Cum se implementează algoritmii Sieve of Eratosthenes pentru numere prime? (soluție)
Aceste multe întrebări ar trebui să fie suficiente, dar dacă aveți nevoie de mai multe astfel de întrebări de codare, puteți lua ajutor din cărți precum Cracking The Code Interview, de Gayle Laakmann McDowell, care prezintă 189+ întrebări de programare și soluția. O carte bună pentru a vă pregăti pentru interviurile de angajare în programare într-un timp scurt.
Acum sunteți gata pentru interviul de programare
Acestea sunt unele dintre cele mai frecvente întrebări în afara structurii de date și a algoritmilor care vă ajută să vă descurcați foarte bine la interviu.
Am împărtășit, de asemenea, multe dintre aceste întrebări pe blogul meu, așa că, dacă sunteți cu adevărat interesați, puteți oricând să mergeți acolo și să le căutați.
Aceste întrebări comune de codare, structură de date și algoritmi sunt cele pe care trebuie să le știți pentru a reuși să susțineți cu succes un interviu cu orice companie, mare sau mică, pentru orice nivel de job de programare.
Dacă sunteți în căutarea unui loc de muncă de programare sau de dezvoltare de software în 2019, vă puteți începe pregătirea cu această listă de întrebări de codare, iar dacă sunteți pregătit pentru interviu, atunci puteți, de asemenea, să faceți testul TripleByte și să mergeți direct la runda finală de interviuri cu companii de top din domeniul tehnologiei, cum ar fi Coursera, Adobe, Dropbox, Grammarly și multe altele.
Această listă oferă subiecte bune pentru a vă pregăti și, de asemenea, ajută la evaluarea pregătirii dvs. pentru a afla zonele dvs. de forță și de slăbiciune.
Cunoașterea bună a structurii de date și a algoritmilor este importantă pentru succesul în interviurile de codificare și acolo ar trebui să vă concentrați cea mai mare parte a atenției dvs: Deep Dive Using Java
10 cărți pentru a pregăti interviurile tehnice de programare/codificare pentru locuri de muncă
10 cărți despre algoritmi pe care orice programator ar trebui să le citească
Top 5 cărți despre structuri de date și algoritmi pentru dezvoltatorii Java
De la 0 la 1: Structuri de date & Algoritmi în Java
Analiză de structură de date și algoritmi – Interviu de angajare
20+ probleme de codificare bazate pe stringuri de la interviuri
20+ probleme de liste legate de la interviuri
20+ probleme bazate pe algoritmi de bază de la interviuri
Note de încheiere
Mulțumesc, Ați ajuns până la sfârșitul articolului … Mult succes la interviul de programare! Cu siguranță nu va fi ușor, dar urmărind aceste întrebări de algoritm de căutare și sortare, sunteți cu un pas mai aproape decât ceilalți. Apropo, cu cât rezolvi mai multe întrebări în practică, cu atât mai bună va fi pregătirea ta.
Atunci, dacă crezi că 100 de probleme de programare nu sunt suficiente și ai nevoie de mai multe, atunci verifică aceste 50 de întrebări suplimentare de programare pentru interviuri telefonice și aceste cărți și cursuri pentru o pregătire mai temeinică.
Toate cele bune pentru interviul tău de programare.
Alte articole care ți-ar putea plăcea: