CodeGym/Blog Java/Aleatoriu/Întrebări complicate despre Java adresate frecvent la int...
John Squirrels
Nivel
San Francisco

Întrebări complicate despre Java adresate frecvent la interviuri

Publicat în grup
Dacă v-ați pregătit vreodată pentru un interviu pentru un post de programator Java sau ați promovat vreun examen de certificare (nu neapărat despre programare), atunci probabil ați observat deja că întrebările puse acolo sunt foarte specifice. Multe dintre ele te obligă să te gândești la designul limbii. Unele sunt concepute pentru a sonda profunzimea cunoștințelor tale. Există întrebări care arată mai mult ca puzzle-uri decât orice altceva, în timp ce altele se referă la nuanțe ale limbajului care sunt foarte greu de perceput fără practică. În acest articol, dezvoltatorul Sarans Sing prezintă câteva astfel de întrebări despre Java. Cu răspunsuri, desigur. Întrebări Java complicate adresate frecvent la interviuri - 11. Ce se întâmplă dacă pun o instrucțiune return sau System.exit() într-un bloc try/catch? Aceasta este o întrebare Java foarte populară și subtilă. Trucul este că mulți programatori cred că blocul finallyeste întotdeauna executat. Prin plasarea unei returndeclarații într-un try/catchbloc sau apelarea System.exit()din interiorul unui try/catchbloc, întrebarea pune la îndoială această credință. Răspunsul la această întrebare dificilă este: blocul finallyva fi executat atunci când o returninstrucțiune este plasată într-un try/catchbloc, dar nu va fi executat când System.exit()este apelat din interiorul unui try/catchbloc. 2. Java acceptă moștenirea multiplă? Aceasta este o întrebare foarte dificilă. Intervievatorii întreabă adesea: „Dacă C ++ acceptă moștenirea directă multiplă, atunci de ce nu poate Java?” Răspunsul _este puțin mai complicat decât ar părea, deoarece Java acceptă moștenirea de mai multe tipuri. La urma urmei, o interfață Java poate extinde alte interfețe. Acestea fiind spuse, Java nu acceptă moștenirea multiplă a implementărilor. 3. Dacă o metodă dintr-o clasă părinte aruncă NullPointerExceptions, poate fi suprascrisă de o metodă care aruncă RuntimeExceptions? Aceasta este o altă întrebare dificilă legată de supraîncărcare și suprascriere. Răspuns: O metodă suprascrisă poate arunca în siguranță NullPointerExceptionclasa părinte a lui — RuntimeException, dar nu puteți face același lucru cu un tip de excepție verificat, cum ar fi Exception. 4. Cum garantați că Nfirele de execuție pot accesa Nresurse fără un blocaj? Dacă scrierea codului cu mai multe fire nu este punctul tău forte, s-ar putea să dai cu adevărat la această întrebare. Poate fi dificil chiar și pentru un programator experimentat care nu a întâlnit blocaje și condiții de cursă. Întregul truc aici este în ordine: puteți preveni blocajele eliberând resursele în ordinea inversă în care au fost achiziționate. 5. Care este diferența dintre clasele StringBufferși StringBuilderîn Java? Aceasta este o întrebare clasică de limbaj Java pe care unii dezvoltatori o consideră dificilă, iar alții – foarte simplă. Clasa StringBuildera apărut în JDK 1.5. Singura diferență dintre aceste clase este că StringBuffermetodele lui, cum ar fi length(), capacity(), și append(), sunt sincronizate, în timp ce metodele corespunzătoare dinStringBuildernu sunt. Această diferență fundamentală înseamnă că concatenarea șirurilor este mai rapidă cu StringBuilderdecât cu StringBuffer. De fapt, utilizarea StringBuffernu este recomandată, deoarece concatenarea șirurilor se efectuează pe același fir în 99% din timp. 6. Care este rezultatul evaluării expresiei 1.0/0.0? Va produce o excepție sau o eroare de compilare? Aceasta este o altă întrebare dificilă despre clasă. Dezvoltatorii Java sunt conștienți de existența unui tip de date dublu primitiv și a unei clase, dar atunci când efectuează operații în virgulă mobilă nu acordă suficientă atenție , , , și regulilor care guvernează calculele aritmetice asociate. Răspunsul la această întrebare este simplu: anÎntrebări Java complicate adresate frecvent la interviuri - 2DoubleDoubleDouble.POSITIVE_INFINITYDouble.NEGATIVE_INFINITYNaN-0.0ArithmeticExceptionnu va fi aruncat; expresia evaluează la Double.POSITIVE_INFINITY. 7. Ce se întâmplă dacă încercați să introduceți o cheie într-o cheie HashMapcare conține deja acea cheie? Această întrebare dificilă face parte dintr-o altă întrebare frecventă: cum funcționează HashMapîn Java? HashMapeste o sursă populară de întrebări confuze și complicate despre Java. Iată răspunsul: dacă încercați să reintroduceți o cheie într-un HashMap, vechea cheie va fi înlocuită, deoarece HashMapclasa nu permite chei duplicate. Și aceeași cheie va primi același cod hash, ceea ce înseamnă că va ajunge în același loc în găleată hash. Pe baza materialelor Quora
Comentarii
  • Popular
  • Nou
  • Vechi
Trebuie să fii conectat pentru a lăsa un comentariu
Această pagină nu are încă niciun comentariu