Articles

15 Core tehnic Java Interviu Întrebări Răspunsuri pentru dezvoltatori cu experiență

atunci când experiența unui programator Java crește în anii de exemplu, atunci când merge de la incepator ani ( 2-4) la mai multă experiență sau un fel de nivel superior ( 5-7 ani), Core Java Interviu Întrebări schimba, de asemenea, un pic. Desigur, elementele de bază precum structura datelor, algoritmii și programarea orientată pe obiecte rămân aceleași, dar tipurile de întrebări vor deveni mai avansate, iar răspunsurile lor vor trebui cu siguranță să fie mai detaliate și mai exacte. Adesea primesc întrebări despre întrebările Java de bază adresate unui dezvoltator senior de experiență de 5 până la 6 ani sau, uneori, mă duc la un interviu cu dezvoltatorul Java senior, la ce fel de întrebări ar trebui să mă aștept. Acest lucru mă încurcă uneori, că odată ce devii senior, începi automat să participi la interviu și ar trebui să ai o idee despre ce să te aștepți la interviuri, dar în același timp, pot înțelege că a avea o idee despre întrebări înainte de a merge la interviu, ajută la pregătire. Desigur, nu veți primi o întrebare precum cea cu care v-ați confruntat la interviurile Java de 2 până la 3 ani, dar depinde și de diferite runde de interviuri.
Nu am văzut multe schimbări în întrebările adresate în runda telefonică, care aproape rămâne aceeași. Veți găsi câteva întrebări bazate pe fapte, câteva întrebări de codificare și câteva întrebări dificile. Pe de altă parte, față în față, interviurile au devenit mai detaliate și mai dificile, mai ales cu urmăriri urâte.
în acest articol, am de gând să împărtășească unele 15 de bază tehnice întrebări interviu Java, pe care l-am văzut cerut Dezvoltatori seniori și cu experiență de 4 până la 6 ani de experiență în diferite interviuri, mai ales pe runde telefonice. Nu postez răspunsuri de acum, dar puteți găsi răspunsuri la majoritatea întrebărilor aici sau pe blogul Javarevisited.
dacă sunteți în grabă și în mod activ în căutarea pentru un loc de muncă dezvoltator Java, puteți lua, de asemenea, ajutor de la unele cărți bune scrise pentru a vă pregăti pentru interviuri Java J2EE. Cărți precum, interviul de programare Java expus acoperă toate subiectele importante atât pentru interviurile core Java, cât și pentru interviurile Java EE, care includ întrebări Java de bază, structura și algoritmii de date, JVM internals și GC tuning, Hibernate și Spring interview questions, JUnit ant unit testing questions și unele lucruri Java 8.acesta acoperă, de asemenea, cunoașterea altor limbi JVM, cum ar fi Scala, Groovy și alte platforme, cum ar fi Android. Un companion perfect pentru a face bine în interviuri Java.
dacă doriți să se pregătească mai mult pe partea de codificare, atunci puteți verifica, de asemenea, afară de cracare interviu de codificare, care conține aproape 150 de întrebări de programare și soluții de interviuri tehnice de companii mari tech, cum ar fi Amazon, Facebook, Google, Twitter, și Microsoft.

15 întrebări Core Java pentru 5 până la 6 ani cu experiență

toate aceste întrebări au fost colectate de la dezvoltatori destul de senior, care are cel puțin 5 ani de experiență. Au văzut aceste întrebări în diferite runde ale interviurilor lor Java de bază, inclusiv runde telefonice și față în față pe diferite companii, mai ales pe bănci de investiții precum Barclays, Morgan, RBS și altele.

ce este filare ocupat? De ce ar trebui să-l utilizați în Java?

una dintre cele mai interesante întrebări multithreading pentru programatori Java senior, filare ocupat este o strategie de așteptare, în care un fir doar așteptați într-o buclă, fără a elibera CPU pentru a merge la culcare. Aceasta este o strategie de așteptare foarte avansată și specializată utilizată în aplicația de tranzacționare de înaltă frecvență atunci când timpul de așteptare dintre două mesaje este foarte minim.
prin faptul că nu eliberați CPU-ul sau suspendați firul, firul dvs. păstrează toate datele și instrucțiunile din cache, care pot fi pierdute dacă firul a fost suspendat și reluat înapoi într-un nucleu diferit al procesorului.
această întrebare este destul de popular în domeniul de programare latență joasă de înaltă frecvență, în cazul în care programatorii încearcă pentru latență extrem de scăzută în intervalul de micro la milisecunde. Vezi AICI mai mult de 50 + întrebări avansate interviu fir pentru programatori cu experiență.

Core Java Interviu Întrebări pentru dezvoltatori senior

ce este de blocare Citire-Scriere? ConcurrentHashMap în Java utilizează blocarea ReadWrite?

ReadWrite Lock este o implementare a unei tehnici de decupare a blocării, în care două încuietori separate sunt utilizate pentru operația de citire și scriere. Deoarece operația de citire nu Modifică starea obiectului, este sigur să permiteți accesul mai multor fire la un obiect partajat pentru citire fără blocare și prin împărțirea unei încuietori în blocarea de citire și scriere, puteți face acest lucru cu ușurință.
Java oferă o implementare a unui blocare citire-scriere sub forma clasei ReentrantReadWritLock în java.util.concurentă.pachet de blocare. Acest lucru merită privit înainte de a vă decide să vă scrieți propria implementare de blocare citire-scriere.
De asemenea, punerea în aplicare actuală a java.util.ConcurrentHashMap nu utilizează ReadWriteLock, în schimb, împarte harta în mai multe segmente și le blochează separat folosind diferite încuietori. Acest lucru înseamnă orice moment dat, doar o parte din ConcurrentHashMap este blocat, în loc de întreaga hartă. Vedeți cum funcționează intern ConcurrentHashMap în Java pentru mai multe detalii.

această întrebare Java de bază este, de asemenea, foarte populară în interviurile Java de nivel superior și mai experimentat, de exemplu, 4 până la 6 ani, unde vă așteptați ca intervievatorul să intre în mai multe detalii, cum ar fi cerându-vă să furnizați o implementare a blocării de citire-scriere cu politici diferite. Dacă sunteți un programator Java cu experiență, luați în considerare citirea concurenței Java în practică pentru a câștiga mai multă încredere în multithreading și concurență în Java.

cum se face un obiect imuabil în Java? De ce ar trebui să faci un obiect imuabil?

Ei bine, imutabilitate oferă mai multe avantaje, inclusiv fir de siguranță, capacitatea de a cache și duce la un cod multithreading mai ușor de citit. Vedeți aici pentru a afla cum să faceți obiectele imuabile. Încă o dată, această întrebare poate intra și mai detaliat și, în funcție de răspunsul dvs., poate aduce alte câteva întrebări, de ex. când menționați că primăvara este imuabilă, fiți gata cu câteva motive pentru care șirul este imuabil în Java.

ce modele de Design ați folosit în proiectul dvs. Java?

se așteaptă întotdeauna unele modele de design legate de întrebare pentru Core Java Interviu de poziție senior developer. Este o strategie mai bună pentru a menționa orice model de design GOF, mai degrabă decât Singleton sau MVC, pe care aproape orice alt dezvoltator Java îl folosește.
Cel mai bun pariu poate fi un model de Decorator sau poate un model de injecție de dependență, care este destul de popular în cadrul primăverii. De asemenea, este bine să menționăm doar modelele de design pe care le-ați folosit de fapt în proiectul dvs. și știe că sunt compromisuri.
este comun că, odată ce ați menționat un anumit model de design spune fabrica sau fabrica Abstract, intervievatorul pe următoarea întrebare ar fi, ai folosit acest model în proiectul dumneavoastră? Deci, să fie gata cu exemple adecvate și de ce alegeți un anumit model. De asemenea, puteți vedea acest articol pentru întrebări mai avansate despre modelul de design din interviurile Java.

știi despre principiul de proiectare deschis închis sau principiul de substituție Liskov?

modelele de proiectare se bazează pe principii de proiectare orientate pe obiecte, pe care am simțit cu tărie că fiecare dezvoltator orientat pe obiecte și programatorul ar trebui să le cunoască sau, cel puțin, să aibă o idee de bază despre care sunt aceste principii și cum vă ajută să scrieți un cod mai bine orientat pe obiecte. I
dacă nu știți răspunsul la această întrebare, puteți spune politicos Nu, deoarece nu este de așteptat de la dvs. să știți răspunsul la fiecare întrebare, dar răspunzând la această întrebare, puteți face cererea dvs. mai puternică, deoarece mulți dezvoltatori experimentați nu reușesc să răspundă la întrebări de bază ca aceasta. Consultați Codul curat aflați mai multe despre principiile de proiectare orientate pe obiecte și solide.

ce model de Design veți folosi pentru a vă proteja codul dintr-o bibliotecă terță parte care va fi probabil înlocuită cu alta în câteva luni?

acesta este doar un exemplu de model de design bazat pe scenariu întrebare interviu. Pentru a testa experiența practică a dezvoltatorilor Java cu mai mult de 5 ani de experiență, companiile pun acest tip de întrebare. Vă puteți aștepta la mai multe probleme de design din lumea reală în diferite formate, unele cu explicații mai detaliate cu context sau altele cu intenție doar în jur. o modalitate de a proteja codul de la o bibliotecă terță parte este de a Cod împotriva unei interfețe, mai degrabă decât punerea în aplicare și apoi utilizați injecție dependență pentru a oferi o anumită implementare. Acest tip de întrebare este, de asemenea, întrebat destul de frecvent dezvoltatorilor Java cu experiență și senior cu 5 până la 7 ani de experiență.

întrebarea 7) Cum preveniți injecția SQL în codul Java?

această întrebare este adresată mai mult dezvoltatorilor J2EE și Java EE decât dezvoltatorilor Core Java, dar este încă o întrebare bună să verificați abilitățile JDBC și de securitate ale programatorilor Java experimentați.
puteți utiliza PreparedStatement pentru a evita injectarea SQL în codul Java. Utilizarea PreparedStatement pentru executarea interogări SQL oferă nu numai o performanță mai bună, dar, de asemenea, scut Java și aplicația J2EE de atac SQL injecție.
pe o notă similară ,dacă lucrați mai mult pe Java EE sau partea J2EE, atunci ar trebui să fie, de asemenea, familiarizat cu alte probleme de securitate, inclusiv atac de fixare sesiune sau cross-Site-ul Scripting atac și cum să le rezolve. Acestea sunt câteva domenii și întrebări în care un răspuns bun poate face o mare diferență în selecția dvs.

întrebarea 8) Spune-mi despre diferite tipuri de referință disponibile în Java, de exemplu, WeakReference, SoftReference sau PhantomReference? și de ce ar trebui să le folosiți?

Ei bine, sunt diferite tipuri de referință provenind din java.lang.ref pachet și furnizate pentru a ajuta Java colector de gunoi într-un caz de probleme de memorie reduse. Dacă înfășurați un obiect cu Slabreferință decât va fi eligibil pentru gunoiul colectat dacă există o referințe puternice. Ulterior, acestea pot fi recuperate de colectorul de gunoi dacă JVM nu are memorie.
java.util.WeakHashMap este o implementare hartă specială, ale cărei chei sunt obiectul WeakReference, astfel încât în cazul în care numai harta conține referința de orice obiect și nici un alt, aceste obiect poate fi gunoi colectate în cazul în care GC are nevoie de memorie. Consultați performanța Java Ghidul definitiv aflați mai multe despre cum să rezolvați problemele de performanță în Java.

Core java întrebări tehnice interviu și răspunsuri pentru experiență

întrebarea 9) Cum se obține metoda de lucrări HashMap în Java?

Da, aceasta este încă una dintre cele mai populare întrebări Core Java pentru interviurile pentru dezvoltatori seniori. De asemenea, vă puteți aștepta la această întrebare în runda telefonică, urmată de o mulțime de întrebări de urmărire, așa cum sa discutat în postarea mea cum funcționează HashMap în Java.
răspunsul scurt la această întrebare este că HashMap se bazează pe structura de date de masă hash și utilizează metoda hashCode() pentru a calcula codul hash pentru a găsi locația găleată pe matrice de bază și este egal cu() metoda de a căuta obiectul în aceeași găleată în cazul unei coliziuni. A se vedea aici pentru a afla mai multe despre cum se obține() metoda de lucrări HashMap în Java.

întrebarea 10) care două metode HashMap obiect cheie ar trebui să pună în aplicare?

aceasta este una dintre întrebările de urmărire despre care spuneam în Întrebările anterioare. Deoarece funcționarea HashMap se bazează pe structura de date a tabelului hash, orice obiect pe care doriți să îl utilizați ca cheie pentru HashMap sau orice altă colecție bazată pe hash, de exemplu Hashtable sau ConcurrentHashMap, trebuie să implementeze metoda equals() și hashCode ().
hashCode() este folosit pentru a găsi locația găleată adică indicele de matrice de bază și este egal cu () metoda este utilizată pentru a găsi obiectul dreapta într-o listă legată stocate în găleată, în cazul unei coliziuni. Apropo, de la Java 8, HashMap a început, de asemenea, să utilizeze o structură de date arbore pentru a stoca obiectul în cazul unei coliziuni pentru a reduce performanța în cel mai rău caz a HashMap de la o(n) la o(logN). A se vedea articolul pentru a afla mai multe despre cum HashMap Handless coliziuni în Java.

întrebarea 11) de ce un obiect folosit ca cheie ar trebui să fie imuabil?

aceasta este o altă urmărire a întrebărilor anterioare de interviu Core Java. Este bine să testați profunzimea cunoștințelor tehnice ale candidaților punând tot mai multe întrebări pe același subiect. Dacă știți despre imutabilitate, puteți răspunde singur la această întrebare. Răspunsul scurt la această întrebare este cheia ar trebui să fie imuabil, astfel încât metoda hashCode() să returneze întotdeauna aceeași valoare.

deoarece codul hash returnat prin metoda hashCode() depinde de conținutul obiectului, adică valorile variabilelor membre. Dacă un obiect este mutabil decât aceste valori se pot schimba și așa este codul hash. Dacă același obiect returnează un cod hash diferit odată ce ați introdus valoarea în HashMap, veți ajunge să căutați în diferite locații ale Cupei și nu veți putea prelua obiectul. De aceea, un obiect cheie ar trebui să fie imuabil. Nu este o regulă aplicată de compilator, dar ar trebui să aveți grijă de ea ca programator cu experiență. Consultați articolul pentru mai multe întrebări avansate de interviu Java Collection.

întrebarea 12) Cum realizează ConcurrentHashMap scalabilitatea sa?

uneori, această întrebare multithreading + collection interviu este, de asemenea, întrebat ca, diferența dintre ConcurrentHashMap și Hashtable în Java. Problema cu HashMap sincronizat sau Hashtable a fost că întreaga hartă este blocată atunci când un fir efectuează orice operație cu harta.
java.util.Clasa ConcurrentHashMap rezolvă această problemă utilizând o tehnică de separare a blocării, unde întreaga hartă este blocată la diferite segmente și doar un anumit segment este blocat în timpul operației de scriere, nu întreaga hartă. ConcurrentHashMap realizează, de asemenea, scalabilitatea, permițând citiri fără blocare, deoarece citirea este o operație sigură pentru fir. A se vedea aici pentru mai multe întrebări avansate multi-threading și concurență în Java.

întrebarea 13) Cum partajați un obiect între fire? sau cum să treci un obiect de la un fir la altul?

există mai multe moduri de a face acest lucru, de ex. Cozile, schimbătorul etc., dar Blocareacoada folosind modelul producător-consumator este cel mai simplu mod de a trece un obiect de la fir la altul.

întrebarea 14) Cum găsiți dacă programul dvs. are un impas?

luând thread dump folosind kill -3, folosind JConsole sau VisualVM), vă sugerez să pregătiți mai detaliat această întrebare de interviu Core java, deoarece intervievatorului îi place cu siguranță să meargă cu mai multe detalii, de exemplu, vor apăsa cu întrebări precum, ai făcut asta cu adevărat în proiectul tău sau nu?

întrebarea 15) cum evitați impasul în timp ce codificați?

asigurându-vă că încuietorile sunt achiziționate și eliberate într-o manieră ordonată, consultați aici un răspuns detaliat la această întrebare.asta e tot pe această listă de întrebări de bază interviu Java pentru dezvoltatori seniori și programatori cu experiență. Nu am inclus o mulțime de întrebări din alte subiecte importante, cum ar fi manipularea excepțiilor, reglarea colectării gunoiului și JVM Internals, care este, de asemenea, foarte popular printre programatorii Java cu 5 până la 6 ani de experiență, poate le voi include în următoarea parte.
apropo, dacă nu găsiți răspunsul la oricare dintre aceste întrebări Java de bază, anunțați-mă. Pot actualiza postarea cu o opțiune mai detaliată, pe baza solicitării cititorului meu.
învățarea ulterioară
Masterclass-ul Java complet
fundamentele Java: Limbajul Java
întrebări legate de interviu Java pe alte teme

  • întrebări Java pentru interviuri ecran de telefon (listă)
  • Thread și Întrebări de concurență din interviuri Java (listă)
  • întrebări și răspunsuri interviu Java Enum (listă)
  • Întrebări interviu Java OOP cu răspunsuri (listă)
  • întrebări și răspunsuri Interviu primăvară MVC (listă)
  • Hibernate interviu întrebări cu răspunsuri (listă)
  • JDBC interviu întrebări și răspunsuri (listă)
  • array concept interviu întrebări în Java (listă)
  • RESTful Web Service Interviu Întrebări (listă)
  • Servlet și JSP Interviu Întrebări și răspunsuri (listă)
  • Java Web Service Interviu Întrebări și răspunsuri (listă)