Top 25 întrebări pentru un interviu telefonic

Top 25 întrebări pentru un interviu telefonic

Aceste întrebări sunt potrivite pentru mai multe posturi, dezvoltatori, ingineri de software, de asigurare a calității, deoarece acestea acoperă aspectele cele mai de bază ale programării, dar acestea sunt cele mai potrivite pentru candidații pentru funcția de dezvoltator. Apropo, dacă sunteți Java-dezvoltator, atunci aveți o listă separată. Întrebările de mai jos sunt potrivite pentru toate: Python-, Ruby-, Perl- și C # -programmistov.

1. Cât timp durează pentru a obține un element dintr-o listă înlănțuită? Dintr-un arbore binar de căutare? Sau din tabelul hash? Și dacă în aceste structuri vor fi un milion de înregistrări?

Din tabel hash poate obține un element în timp constant, dintr-o listă legată - pentru liniară, a unui arbore binar - pentru jurnal. Numărul de elemente nu afectează comportamentul asimptotic al structurii de date, dacă totul merge așa cum trebuie: în tabelul hash fără rezerve sau foarte puține coliziuni și arbore binar este echilibrat. În caz contrar, cu numărul de elemente ale performanței va scădea.

2. Care este diferența dintre supraîncărcare și imperative ceva?

Redefinire se face în timpul rulării, și suprasarcină - la momentul compilarii. De asemenea redefinire și suprasolicitarea sunt efectuate în diferite moduri: de exemplu, în Java metoda supraîncărcat trebuie să fie diferită de semnătura metoda originală, iar în cazul unei redefinire a acesteia poate fi la fel. Citește mai mult aici.

3. Care este diferența dintre procesul de ramificare și crearea unui nou fir?

Când procesul de ramificare creează un nou proces cu același cod, dar într-un spațiu de memorie separat, în timp ce crearea unui nou cod de fir este executat în același timp cu firul principal, dar în același spațiu în memorie.

4. Ce este o secțiune critică?

secțiunea critică - o bucată de cod care poate fi modificat de toate firele. Pentru a proteja secțiunile critice, semafoarele și încuietori utilizate (în Java acest lucru se face folosind cuvântul cheie sincronizat sau prin ReentrantLock). Citește mai mult.

5. Care este diferența dintre un tip de valoare și tipul de link-uri?

Tipuri de valori mai optimizate și stoca o valoare, în timp ce tipurile de link-uri sunt stocate de referință obiect. Citește mai mult aici.

6. Ce este un morman și stiva procesului?

Kucha și stiva - acestea sunt două zone de memorie diferite ale procesului. Teancul Java este utilizat pentru a stoca valorile primitive și tipuri de link-uri, dar obiectele sunt întotdeauna create pe movila. O altă diferență crucială - o mulțime de aceleași pentru toate firele, dar fiecare fir are propria stiva. Mai multe aici.

7. Ce este un sistem de control al versiunii?

Sistemele de control al versiunii sunt utilizate pentru a stoca în mod eficient și pentru a compara diferite versiuni ale produsului. Atunci când dezvoltarea profesională se folosește întotdeauna una sau alt sistem de control al versiunii: Git, SVN, CVS, perforce sau alta, și mai mulți dezvoltatori implicați în proiect, cu atât mai mare nevoia de un astfel de sistem. Sistemele de control al versiunii joacă un rol important în soluționarea conflictelor în codul și să sprijine istoria proiectului. Detalii aici.
aproximativ Trans. Apropo, aici sunt câteva cărți bune pe această temă.

8. Ce este limbajul de programare silnotipizirovanny?

În compilator silnotipizirovannyh asigură corectitudinea tipurilor de date. De exemplu, nu puteți stoca un număr de tip șir, și vice-versa. Java - limbaj silnotipizirovanny, și, prin urmare, are mai multe tipuri, cum ar fi int. float. String. char. boolean, etc. Puteți stoca valori numai în clasele lor. În slabotipizirovannyh tip limba unei variabile este determinată la momentul compilării, în funcție de context. Limbi slabotipizirovannye populare: Python și Perl. Citește mai mult.

9. Care este diferența dintre un XML valid si bine format?

Ei bine-format XML-fișier conține tag-ul rădăcină, toate etichetele sunt închise, toate atributele dacă aceasta este definită în mod corect, etc. Pe de altă parte, un fișier XML valid este verificat XSD-fișier sau o schemă. Deci, ca XML poate fi bine format, dar, în același timp, să nu fie verificate, deoarece conține în sine tag-uri nerezolvate, etc.

10. Care este diferența dintre DOM- și XML SAX-parserul?

loturile DOM-parser în memorie dintr-o dată fișier XML și de a crea pe baza ei DOM-tree si analizat. Din cauza modului de lucru parserul DOM, nu este potrivit pentru-mari fișiere XML, deoarece acestea ocupă prea mult de memorie, dar este mai rapid. SAX-interpretor funcționează pe baza unor evenimente: deschidere / închidere tag-ul, start / atribut final, etc. Astfel, SAX-parser are o memorie pic, dar mai lent DOM-parser. răspuns detaliat aici.

11. Cum se referă la fiecare alte fire și procese?

Un proces poate fi de mai multe fire, dar fiecare fir poate aparține doar un singur proces. Două procese rula în diferite zone de memorie și nu pot face schimb de date cu altele, și două flux de un singur proces se execută întotdeauna în aceeași zonă de memorie. Citește mai mult aici.

12. Ce este o clasă imuabil?

13. De ce Mock obiecte?

Mock-obiecte sunt utile pentru testarea unei anumite zone în cod. De exemplu, creați un program pentru a monitoriza ratele de schimb valutar, care preia date de pe Internet, dar nu aveți URL-ul, la care s-ar putea conecta. Mock-crearea de obiect, simulează comportamentul care aveți nevoie, puteți testa codul. Există mai multe biblioteci cu care puteți crea obiecte de Machete pentru Java. De exemplu, Mockito și PowerMock. Răspunsul este aici.

14. Ce este un SQL injecție?

SQL-injecție - o vulnerabilitate în sistemul de securitate, în care un atacator trimite în locul datelor din baza de date execute SQL-cod, câștigând astfel un control deplin asupra bazei de date. Din cauza SQL-injecție scurgeri de multe ori parole, login-uri și informații personale ale utilizatorilor. SQL-injectare pot fi evitate în avans „pregătirea“ datele de intrare.

15. Care este diferența dintre INTERIOARĂ afilieze și să STÂNGA inscriem?

În SQL, există două tipuri de operator JOIN. INNER și TE OUTER JOIN. OUTER JOIN, de asemenea, poate fi de două tipuri: STÂNGA și DREAPTA ÎNREGISTREAZĂ-TE. Diferența principală dintre INTERIOARĂ afilieze și să STANGA ÎNSCRIEȚI este că, în primul caz, din ambele tabele sunt selectate numai înregistrările corespunzătoare, iar în al doilea caz din primul tabel selectează toate înregistrările, iar al doilea este singurul caz. Acordați întotdeauna o atenție la solicitările formulate de «tot», deoarece acestea necesită, de obicei, o LEFT JOIN. de exemplu, o interogare care necesită pentru a găsi toate ramurile și numărul de angajați în ele. Dacă utilizați INNER JOIN. sari peste birouri goale, în cazul în care nimeni nu lucrează. Mai multe aici.

16. Ce litera V în MVC acronim?

V - Vezi-l în MVC model. Vezi - aceasta este ceea ce vede utilizatorul, uita la pagina web. Ideea de model MVC este că toate aplicație web este împărțit în trei părți reciproc independente care pot fi editate, nu se teme să atingă alții: Model, View, Controller. Modelul - it yourself obiecte de afaceri (cum ar fi un utilizator, dezvoltator, director, etc), iar controlerul - care gestionează modele. Pentru Java există multe cadre care implementează MVC - de exemplu, lonjeroanele 2 și Spring MVC. Detalii aici.
aproximativ Trans. puteți citi aici ca o paradigmă a MVC.

17. Care este diferența dintre o clasă și un obiect?

Class - „desen“, în care este creat un obiect. El descrie comportamentul posibil al obiectului creat, iar obiectul pune în aplicare acest comportament. Nu puteți crea un obiect fără clasă care îi corespunde. Citește mai mult.

18. Care este cuplajul slab (Ing. Loose-cuplare)?

Cuplaj Loose - software-ul de calitate dorit, prin care un modul poate fi modificat în mod liber, fără a afecta al doilea. De exemplu, dacă efectuați modificări la interfața cu utilizatorul, aceasta nu ar trebui să nu afecteze structura claselor la backend.

19. Care este diferența dintre compoziția, agregarea și asocierea?

În asociere două obiecte sunt legate, dar pot exista de asemenea separat. Compoziție - o formă de asociere, atunci când un obiect este compus din mai multe altele care pot exista numai împreună. De exemplu, corpul uman - este compoziția corpurilor. Orice un organ specific nu se poate lucra în afara corpului. Agregarea - o colecție de obiecte. De exemplu, orașul - este agregarea cetățenilor. răspuns detaliat.

20. Care este diferența dintre o interfață și o clasă abstractă?

Clasic. Interface - o abstracție pură, care nu conține nimic altceva decât numele de metode, în timp ce o clasă abstractă se poate conține un alt cod și. Diferența poate fi diferită în funcție de limba - într-o clasă Java poate moșteni doar o singură clasă abstractă, dar mai multe interfețe. Citește mai mult aici.

21. Ce este unitate de testare?

Unitatea de testare - este o modalitate de a testa comportamentul nu este întreaga aplicație ca întreg și a piesei de cod special. Există mai multe modalități de a efectua teste de unitate în diferite limbi. În Java, în acest scop, acolo JUnit și TestNG bibliotecă. De obicei, testele unitare sunt rulate automat la momentul compilării, sau într-un mediu cum ar fi Jenkins. Exemplul aici.

22. Care sunt cele trei tipuri de teste există?

Yunit-, de sistem și de testare a fumului. Unitatea de testare este utilizat pentru a testa o anumită secțiune de cod, testarea sistemului - pentru a verifica întregul sistem, și testarea de fum se efectuează în scopul de a asigura performanța funcționalității principale și cel mai frecvent utilizate ale sistemului, de exemplu, pe site-ul pentru rezervarea rezervarea biletelor de avion ar trebui să se și abolirea ei locul de muncă.

23. Care este diferența dintre iteratie și recursivitate?

Iterație folosește o buclă pentru a repeta o acțiune de câteva ori și funcția recursivă se numește. De multe ori, recurențe poate oferi o soluție mai curată și intuitivă pentru anumite sarcini, cum ar fi liste legate de „Turnul din Hanoi“ lovitură de stat sau șir de caractere. Pe de altă parte, fiecare apel la funcția reduce spațiul în stivă, și după un anumit timp, puteți obține o eroare de stivă de preaplin. Din acest motiv, iterație este de obicei preferabilă recursivitate. Mai multe aici.

24. Care este diferența dintre operatorii și ?

- un operator de biți și - logic. poate fi aplicat ca numere întregi, iar tipul boolean, în timp ce - numai boolean. Se aplică pentru fiecare bit din cele două variabile fiind comparate, în timp ce utilizați al doilea argument nu poate fi implicat deloc, în cazul în care prima este falsă. Îmi place această întrebare, și eu de multe ori să-l întreb ca Junior și Senior-developers. Detalii aici.

25. Care este rezultatul operatiei 1 XOR 1?

A: 0, deoarece XOR returnează unitatea numai în cazul în care unul dintre argumentele este egal cu unu și unu la zero. De exemplu, 0 xor 0 1 1 xor zero și 1 și xor 0 xor 0 1 - unul.