Aceasta este o continuare a unei serii de articol pentru un interviu pe java-programator:
tehnologii și cadre legate de Java se nasc și mor, și fără cunoștințe de bază Java nu merge departe. Cum pot să știu Hibernare, dar nu știu JDBC și SQL? Cum pot să înțeleg MVC de primăvară sau Struts, dar este de înot în servleturile? Cum se poate utiliza blocarea cozile ekzekyutorami și încuietori, dar nu înțeleg cum de așteptați / notifica? Pentru mine, încă rămâne un mister.
Pe de altă parte, am uneori întreb întrebările angajaților, le cere candidaților. De ce întrebați despre Vector și Hashtable - șantierul va mileniu în curând patra. Sau „De ce am nevoie UNION“? Așa că vreau să spun - pentru SQL-injecție. În detrimentul modelelor de design și UML, în general, am să tac - într-adevăr încă nu au jucat suficient? Dar nu e așa de rău. Uneori, intervievatorii se recunosc mai degrabă gafe. Mai multe despre asta mai târziu.
Întrebări de interviu în Core Java
Pentru poziții, cum ar fi senior, aceste întrebări pot fi omise. Dar, uneori, merită în siguranță.
1. modificatori în Java.
Mai ales profundă nu este nevoie de a cere - pe scurt despre cazurile de scop și utilizare. Puteți întreba despre contextele de utilizare a acestor modificatori (clasa / câmp / metodă). întrebări detaliate despre modificatorii de acces, moștenirea modificatori de expansiune, imperative și metode de mascare, modificator de abstract și finale pentru clase / metode sunt cel mai bine la stânga la problemele de OEP în Java. Cunoașterea detaliată a modificatori sincronizate și materii volatile pot fi verificate prin multithreading.
2. Ierarhia colecțiilor în Java.
Noi considerăm Collection, Set, List, Coadă, Harta și punerea lor în aplicare de bază. Este posibil, în principiu, să întreb despre metodele care sunt în interfața de colectare, dar nu mai bine. Este de a cere ceea ce persoana colecții folosit, dar din nou, fără fanatism. Reamintesc, Vector și Hashtable (stiva și modul în care prea) - ultimul secol, mai ales atunci când se lucrează cu codul moștenire poate fi văzut întotdeauna sortsy. Totuși, este posibil să vorbim despre matrice, iar următorul cod ar putea duce la un dialog interesant:
Despre proprietatile si contractul este egal cu / hashCode merită să ne întrebăm cu privire la defalcarea colecțiilor, de asemenea, dar nu de mult dus de val, deoarece aceasta poate duce la un subiect preferat al majorității dispozitivului intervievatori HashMap. La rândul său, acest lucru ne conduce direct la o structură de date probleme, algoritmi și complexitatea lor. Opinia mea în această privință - cu algoritmi olimpiadniki familiare și pe cei care au predat la universitatea este la nivelul adecvat. Eu, de exemplu, în acest sens, nu noroc cu nici una, nici alta. Și pentru a înțelege algoritmi / ADT în cursul activității lor numai atunci când există o problemă relevantă sau pur și simplu a avut timp și dorința de a citi și înțelege. Ca rezultat - sortare rapidă, îmbinare sortare, sortare Radix va scrie; harta hash, lista legate, binar de căutare arbore de scriere; semaforului, piscina fir, blocarea coadă de a scrie, de asemenea. Este nevoie de altceva? Bine, voi scrie.
Ce se întâmplă dacă sula încă interferează și doresc cel puțin o dată în viața lor pentru a arăta cunoștințele lor profunde de algoritmi si structuri de date deja candidat speriat. Să începem cu faptul că astfel de întrebări merită să numai dezvoltator senior și numai dacă obiectivele planului se regăsesc în proiect destul de des (care este rar). Așa să fie, întrebați despre HashMap dispozitivului și viteza de căutare a dispozitivului LinkedList și complexitatea operațiunilor pe ele. Puteți cere oamenilor din propriile cuvinte a spus cum în rapid / îmbinare sortare ia log2 n. Puteți chiar și unele probleme algoritmice set. Dar, amintiți-vă, este posibil cu acest om încă mai trebuie să lucreze ca o echipă.
3. Ierarhia excepțiilor și erori.
Apoi, ca și în cazul în care totul este clar, dar se întâmplă că oamenii nu știu lucruri de bază. Ar trebui să întrebați despre ierarhia de erori / excepții verificate și neverificate atunci când se utilizează aceste sau alte ca și atunci când au nevoie să se ocupe. Puteți începe chiar și un mic dialog despre OutOfMemoryError. În cazul în care o persoană familiară cu JDBC, puteți vorbi despre SQLEXCEPTION și întrebați-l chekced sau necontrolată și este OK în funcție de candidat.
Răspunsul la această întrebare poate fi găsit aici
4. clase imbricate în Java.
Unii cred că nu este nevoie de această chestiune. Personal, eu nu cred. Merită întrebat despre clasificarea, cazuri de utilizare, o încălcare a încapsulare și cel mai interesant - de ce am nevoie de opinia candidatului.
probleme SEN în Java
Ca o continuare, în același exemplu, putem vorbi despre expansiunea / contracția tipuri de argumente suprascrie metoda în cazul în cazul în care într-o listă Java de parametri formale care nu sunt incluse în semnătura metodei.
6. Design Patterns
Amintiți-vă, nu este necesar să întreb profund despre modelele de design. Și, în orice caz, nu învață poveștile despre candidat „deoarece acestea sunt sănătoase,“ și „cum să le pună în aplicare în mod corect.“ Apropo, despre frumusețea / inteligibilitatea de cod și viteza de scriere sale, prietenul meu spune: „Pentru a putea să se răcească hack în Java, aveți nevoie pentru a hack dohera Java“.
Catalogul de modele de design pot fi găsite aici
întrebări de interviu pentru multithreading în Java
7. Multithreading în Java.
Vreau să dedic această temă o serie de articole: un singur paragraf nu va primi oprit. Pe scurt, întrebați de ce multithreading, care este un obiect de monitor, întrebați despre modificatori syhcnronized și volatile, metodele de așteptare / notificare / notifyAll, precum și despre pachetul java.util.concurrent. Și următorul fragment de cod ar trebui să conducă la o conversație destul de interesantă:
Problemele legate de bazele de date
Pentru a începe este de a pune întrebări despre ANSI SQL. Mai mult, în funcție de baza de date utilizată în proiect, puteți întreba despre diferențele importante între dialectul ei. Deci, lasa persoana vorbi despre elementele de bază ale bazei de date - tabele, proceduri, funcții, etc. konstreyntah Despre konstreyntah poate cere în jurul valorii de un pic mai mult. Este de a cere modul în care o persoană înțelege nulă în bazele de date. Du-te la funcțiile de agregate și modul în care acestea funcționează cu null, nu uita grupul de și având. Puteți da câteva mici probleme cu privire la acest subiect (a se vedea. 1-2 următoarele sarcini). Adresați-vă în jurul despre tipurile de alăture și să dea un cuplu de Brainteasers (a se vedea alin. 3-4 de mai jos sarcină).
Problema 1. Dana tabel T cu o coloană de tip A întreg care conține valorile 10, 20, 30, nule. Care sunt expresii egale de "AVG (A)" și "SUM (A) / COUNT (*)"?
Problema 2. Dana tabel T la coloana A de tip întreg. Scrie o interogare care va returna toate valorile pozitive găsite în tabelul de mai mult de o dată.
Problema 3. tabele Letter T1 și T2. In fiecare coloana A este de tip întreg. Valorile din primul tabel - 1, 2, iar în al doilea - 2, 3. Ce Cererile de returnare se alăture interior, stânga / dreapta exterior / completă se alăture și să se alăture transversală de tip „selectați T1.A, T2.A din T1 T2 se alăture pe. T1.A = T2.A“.
Zadcha 4. 2 Scrisoarea Un tabel cu coloane de tip întreg. Scrie o interogare care va returna toate valorile din coloana A din primul tabel pentru care nu există nici un meci în a doua coloană a A.
Aici, de asemenea, fără distorsiuni. Întrebați despre conectare, Statement, PreparedStatement, CallableStatement, ResulSet, de ce fiecare dintre aceste entități este necesară. Puteți întreba despre ceea ce ei sunt klassamm abstracte, clase specifice sau interfețe, și de ce.
O altă întrebare - cum de a crea o conexiune la JDBC, cel mai bun mod de a adăuga un număr mare de înregistrări în tabel, bine și sigur tranzacții și autocommit. Aproape am uitat - problema nivelurilor de izolare tranzacție, ia în considerare cel puțin țara - în data viitoare când doriți să-l întreb, amintiți-vă de câte ori nivelurile de izolare le-ați experimentat personal.
Citiți pe blog un tutorial detaliat pe JDBC.
Întrebări despre interviu de programare web
Mai întâi trebuie să întrebați despre HTTP ca un întreg. Ce este anteturile, care sunt toate tipurile de interogări care un cod de stare HTTP.
Apoi, trebuie să întrebați despre clasa HttpServlet, forma în care se poate lucra cu solicitare și răspuns. Ce este o sesiune (HttpSession) și cum să-l. Nu uitați să întrebați despre ServletFilter și opțiuni pentru utilizarea lor.
Organismul necesită somn. Articolul se va încheia după un timp. Mult noroc tuturor.
Și niciodată nu vă pun întrebări despre lucruri care „fiecare dezvoltator bun știe perfect“, dar puțini pot justifica? În opinia mea, uneori poate arăta cât de mult o persoană care iubește și știe cum să se angajeze în cercetare (și, prin urmare, crește nivelul), + cât de mult el are încredere în experiența sa de posturi în bloguri și forumuri, în măsura în care documentație și sursă cărți de cod. Răspunsul corect de aici nu poate fi, la fel ca în orice astfel de întrebare poate aprofunda pe termen nelimitat. Dar, cu aprofundarea acest lucru arată cât de profund candidatul înțelege diferitele aspecte.
De exemplu, - în cazul în care acesta funcționează rapid de reflecție în Java? Fiecare elev știe că încet? Remarcabil, și de ce? Nu tiv, încercați să descrie în detaliu procesul de asteptare direct o metodă în JVM (candidatul poate aminti despre invokevirtual, de exemplu, și alte bytecode), precum și modul de a face un apel prin reflecție? Prin JNI și necesită trecerea de la JVM-codul în nativ și vice-versa? Bine, ceea ce este de comutare context, și de ce este scump (de altfel, și costisitoare - acest lucru este cât de mult?). Știați că puteți apela prin refledction accelerat foarte mult în cazul în care cauza înaintea lui setAccessible (adevărat)? Și știi, că este adesea cauzată de metoda creează Java-stub, prin care se face în continuare apeluri directe?
- În cazul în care un candidat a ajuns aici - face oferta
Multumesc pentru articol, Kostya și aș dori să întreb ... cum crezi, există o șansă de a fi intervievat pentru junior'a poziția cu cunoștințe de bază numai Java și SQL? (Plus OOP și modele)
2 sasha: mai bine tinkered cel puțin la nivelul cel mai de bază cu tehnologiile care sunt în prezent „în vogă“. Plus nu va fi exact. Mai ales cu o astfel de cunoștințe de bază privind lui Junior iau exact fara probleme.
O alta ar face bine pentru a alege un început pentru o anumită direcție, și tinkered un pic mai adânc în ea. În mod firesc, atunci specializarea poate fi înlocuit. Principalul lucru pe care acum sunteți în măsură să interesul angajatorului. exemple:
Acum, eu stau documentul vayayu mic, cu o listă de întrebări pentru interviu, acesta merită să ne întrebăm, și plătește să știe pentru ei înșiși și pentru alții.
În întrebările mele practica la interviu slab corelat cu ceea ce a trebuit să se ocupe de mai târziu. De-a lungul timpului, acest lucru doar devine enervant. De ce în loc de muncă listarea 22 de tehnologii, în cazul în care avem de a face cu două sau trei? De ce a interviu pentru a întreba despre orice drojdiilor controversate? Să exemple doar prostie. Pentru testul de stres al candidatului?
Opțiunea cea mai realistă - pentru a vorbi cu candidatul despre ceea ce a făcut într-adevăr, în trecut, ce probleme și cum să rezolve văzut. Înșiși (!) A auzit că el se referă ar trebui să facă și să evalueze riscurile. Multe dintre „ignoranță“ este de fapt foarte ieftin în ceea ce privește decizia lor. De exemplu, prețul poate fi de 2 zile pentru o carte. Aceasta va tulpina companiei? Mai degrabă nu. Dar dacă o persoană este, în principiu, nu este în măsură să gândească abstract, dacă este nevoie companiei programator poziții?
Deci, aici este o întrebare: existența Oracle Certified Java Programmer (fosta SCJP) a primit șase luni înainte de interviu, angajatorul va satisface curiozitatea sau de fiecare dată când trebuie să re-amintiți materiale?
În primul rând despre mine, sa întâmplat că, în practica sa a scris de la ASM care se încheie @Formula, și Lotus Script pentru Lotus Notes, inclusiv Java, C ++. A trebuit să iau și cum să lucreze în echipe. Acum crescut la PM-o.
Deci, asta e ceea ce noi înșine stabilit pentru a negativitate în căutarea de candidați:
1) cunoașterea teoriei nu ecou practica, și, de fapt, nu contează. Și capacitatea de a decora nashkryabat cod perfectă, acest show-off pentru o discuție la o ceașcă de ceai, acestea nu se aplică în cazul proiectelor reale.
2) „gadzhetomaniya“ - în primul rând o problemă de proiecte. Permiteți-mi să explic mania de a încerca ceva nou, de brand nou unitate de țiței, baze de date, tehnologie, etc ... întotdeauna cu o probabilitate de aproape 100% din prejudiciu la proiect, ceea ce duce la costuri excesive, cererea instabilitate, și dureri de cap au departamente întregi și companii. Cu excepția cazurilor justificate, desigur, dar din nou, folosind noua tehnologie pentru a merge în mod conștient asupra riscului.
Că pentru el însuși pozitiv, a declarat:
2) candidatul de succes, indiferent de experiență, de a cunoaște și de a pune în practică o serie de algoritmi standard despre ei, poți vorbi întotdeauna, susțin chiar mai mult, dar cred că cei care înțeleg ce vreau să spun.
Ce toate aceste întrebări în timpul interviului? Se simte ca mentalitatea fratelui nostru nu se va schimba. Cine este acolo de angajatori .... Aici aveți o decizie normală pentru adulți! Pregătiți testele normale pe hârtie de aceleași probleme care sunt de fapt folosite în practică și împinge candidații dumneavoastră! În cazul în care 80-90 la suta se potrivesc, chiar și atunci, și discută despre „dragoste“ și alte virtuți! Sau puteți utiliza un serviciu adecvat obișnuit on-line pentru a rezolva problemele. Nu fi ultimul secol. Da, iar candidații vor fi cu tine mai ușor și mai plăcut de a comunica, iar apoi au sentimentul că este în mod constant pe interviurile trebuie să fie comparat cu un singur loc, este o scuza pentru franchețea)). Despre proiecte interesante, tot ceea ce a fost interesant pentru o lungă perioadă de timp nu este nou, totul este făcut și pus în aplicare. Apel cel puțin un proiect care poate fi numit interesant? Care este nivelul mediu al programatorul nu va fi în măsură să pună în aplicare și să afișeze? Sau Senor? probleme la nivel de diferite sunt rezolvate de către persoanele relevante. Seniori decide sarcinile de server, client Orientul Mijlociu. Ei bine, Junior construi Servleturi desena interfețe. Toate în locurile lor. Deci Domnul angajatorii, arunca toate aceste lucruri din capul meu cu întrebări și lăsați-o în cunoștință de tipi câștiga pâinea ta.