15 Sarcina de interviu pentru programator, biblioteca programatorului

În acest articol, voi vorbi despre sarcinile și întrebările care așteaptă programatorii să intervieveze la locul de muncă.

15 Sarcina de interviu pentru programator, biblioteca programatorului

Intervievații nu diferă în originalitate, și aceeași întrebare se găsește pe 3-5 interviuri diferite.






Dar chiar și programatorii cu experiență, aflați într-o situație stresantă, sunt deseori pierduți și nu pot găsi răspunsuri la întrebări destul de simple. Prin urmare, propun să practică în avans, să-mi verific cunoștințele și, în același timp, să privesc întrebările preferate ale intervievatorului. Este posibil să îi răspundeți la următorul interviu.
Structurile de date și întrebările despre algoritmi reprezintă partea principală a oricărui interviu pentru programatori, indiferent de specializarea lor

Toți programatorii știu că elementul intermediar în LinkedList este ușor de găsit prin determinarea lungimii listei, trecând toate nodurile sale succesiv, până când ajungeți la NULL în prima trecere. Și apoi, după ce au trecut jumătate din ele în a doua trecere. Când li se cere să rezolve această problemă într-o singură trecere, mulți se pierd.

Cele mai multe dintre sarcinile stabilite în interviu au o soluție destul de simplă și stau într-un mediu liniștit, îl puteți găsi cu ușurință.

În această sarcină, introduceți doar două indicatoare. Primul va crește cu trecerea unei liste de noduri, a doua - cu trecerea a 2 noduri. În momentul în care indicatorul 2 ajunge la sfârșitul listei (se împiedică pe NULL), primul va indica spre mijlocul listei.
Ați depășit cu succes această problemă? Ia următorul.

Sursă Codul sursă

Întrebând astfel de întrebări, interlocutorul dvs., desigur, dorește să audă o definiție care nu este învățată din manual sau să obțină un link de la Wikipedia și să evalueze înțelegerea proprie a diferenței dintre aceste două tipuri de structuri de date.
Stiva și coada sunt similare cu lipsa accesului liber la toate elementele structurii de date. Diferența principală este că stiva este o structură de tip LIFO (Last In First Out), unde accesul liber este posibil numai pentru ultimul element adăugat și atunci când este eliminat prin metoda "pop" la elementul adăugat în fața acestuia. Atunci când un element nou este adăugat la stivă, devine disponibil doar.






Coada de așteptare este de tip FIFO (First In First Out), adică este disponibil numai primul element adăugat. Dacă este șters, oa doua este disponibilă și așa mai departe.

Această întrebare este adesea auzită la interviu de cei care au reușit să găsească rapid un element duplicat în matrice. Pentru a rezolva această problemă, puteți utiliza HashMap. După cum știți fără îndoială, HashMap stochează datele în perechi - cheie / valoare, și prin crearea numărului corect de cărți, veți găsi cu ușurință toate repetițiile și numerele acestora.

În ambele liste, nodurile sunt legate prin pointeri. Numai într-o listă unică, pointerul de la fiecare nod duce exclusiv la următoarea și o tranziție este posibilă numai către ea, adică în exclusivitate într-o singură direcție. Și în dublu-conectat din fiecare nod, cu excepția primului și ultimului, este posibil să mergem atât la următorul, cât și la nodul anterior, adică să ne mișcăm în ambele direcții.

Dacă cineva dintr-o dată nu știe, numerele Fibonacci sunt o secvență în care fiecare următor număr după 1 este suma celor două precedente. Adică, o serie de numere Fibonacci arată astfel: 1,1, 2, 3, 5, 8, 13, 21 ...

Această problemă poate fi rezolvată după cum urmează:

Un arbore binar sau binar de căutare este o structură de date, fiecare nod în care poate avea de la 1 la 2 subnoduri (copii) sau nu le-au deloc.

Locația datelor în arborele binar are o serie de limitări:

  1. La fel ca la toți copacii, orice nod al unui copac binar nu poate avea mai mult de un părinte.
  2. Datele din arbore sunt distribuite în funcție de valorile lor. Dacă valoarea sub-nodului (copil) este mai mică decât valoarea nodului (părinte), acest sub-nod devine stânga sau copilul sub-nodului stâng, dacă sub-nodul din stânga există deja. În consecință, dacă valoarea sub-nodului este mai mare decât valoarea nodului, acesta devine drept sau copilul dreptului.

Arborii binari sunt folosiți în implementarea unor rețele și seturi asociative, de exemplu TreeMap sau TreeSet, în unele algoritmi de geometrie computațională.

Această întrebare vă permite să vă demonstrați abilitățile în utilizarea metodelor standard (push and pop) pentru a lucra cu această structură de date. Atunci când efectuați această sarcină, va trebui să utilizați o matrice sau o listă legată pentru a stoca elementele.
Puteți scrie, de exemplu, programul unui calculator standard.

Nu uitați că atunci când rezolvăți această problemă într-un interviu, este recomandabil să explicați fiecare pas logic intervievatorului. La interviul inițial se evaluează nu numai viteza și corectitudinea soluției sarcinilor atribuite, ci și logica gândirii în general.
De aceea, uneori chiar și o soluție incompletă a unei probleme complexe va permite intervievatorului să vă evalueze cunoștințele ca fiind suficiente pentru o poziție vacantă.
Chiar dacă sunteți un programator experimentat cu zeci de proiecte de portofoliu implementate, nu fi leneși înainte de interviu pentru a repeta teoria. La urma urmei, răspunsul este "bine, funcționează undeva și ... în general, în ultimii 3 ani nu am folosit această structură de date" este puțin probabil să se potrivească intervievatorului.
Unele materiale sunt traduse din această sursă.

Creativitate pentru tine și noroc în interviu!








Articole similare

Trimiteți-le prietenilor: