Nivelul 21

Nivelul 21. Răspunsuri la întrebări pentru interviul pe tema nivelului.

1. Metode de listă a clasei Object
este egal ()
hashCode ()
toString ()
getClass ()
notificați ()
notifyAll ()






așteptați ()
așteptați (timp lung)
așteptați (long timeOut, int nanos)

3. Ce se va întâmpla în cazul în care suprascrieți egal, dar nu suprascrie hashCode?
Inițial hashCode este un număr aleatoriu.
Colecțiile din Java înainte de a compara obiectele cu egale întotdeauna căutați / le comparați folosind metoda hashCode (). Și dacă aceleași obiecte au hashCode diferite, atunci obiectele vor fi considerate diferite - înainte de a compara cu egal, pur și simplu nu va veni.

4. Care sunt metodele de așteptare, notificare, notificare?
Uneori în program poate exista o astfel de situație, că firul a intrat în blocul de cod sincronizat, a blocat monitorul și nu poate funcționa mai mult, deoarece. unele date nu sunt suficiente: de exemplu, fișierul pe care trebuie să-l proceseze nu a fost încă încărcat sau ceva de genul acesta. Pentru a rezolva această problemă, a fost inventată metoda wait (). Apelarea acestei metode face ca firul să elibereze monitorul și să "pauze".
Pentru a elimina dintr-o pauză, se utilizează metodele de notificare, notificareAll. Metoda de notificare "dezghetează" un fir aleatoriu, metoda notifyAll - toate firele "înghețate" ale acestui monitor.

5. Cum să clonați corect un obiect?
Două tipuri de clonare.
Pentru a clona un obiect în mod implicit, aveți nevoie de:






a) Adăugați o interfață clonabilă la clasa sa
b) Înlocuiți metoda clonei și apelați implementarea de bază în ea:

Punctul de clasă implementează clona


Sau puteți scrie implementarea metodei de clonare:


6. De ce am nevoie de metoda finalize () și cum funcționează?
Dacă vă aduceți aminte, finalizarea () este o metodă specială numită de obiect înainte ca colectorul de gunoi să o distrugă.
Scopul principal al acestei metode este de a elibera resursele externe non-Java folosite: fișierele închise, fluxurile de I / O și așa mai departe.

finalize () este instabilă.
Această metodă nu justifică speranțele pe care le are asupra sa. Mașina Java poate amâna distrugerea obiectului și poate apela metoda finalizării la orice număr. În plus, în general, nu garantează că această metodă va fi apelată. În grămada de situații, de dragul "optimizării", nu se numește.

finalizeaza metoda in clasa Obiect cm 6.

8. Ce este încercarea cu resurse?
Aceasta este o instrucțiune specială încercată, numită try-with-resources, în care Notă - după încercare urmată de paranteze, unde sunt declarate variabile și se creează obiecte. Aceste obiecte pot fi folosite în blocul de încercare, indicat prin paranteze <>. Când executarea comenzilor de blocare a încercărilor se încheie, indiferent dacă s-a terminat în mod normal sau a existat o excepție, metoda clos () va fi apelată pentru obiectul creat în interiorul parantezelor ();

9. Care este diferența dintre metodele de așteptare (1000) și somn (1000)?
sleep () suspendă fluxul la cel specificat. Statul se schimbă la TIMED_WAITING, după expirare - RUNNABLE

wait () modifică starea debitului la WAITING
poate fi apelat numai la obiectul care deține blocarea, altfel IllegalMonitorStateException va fi aruncat. când metoda este declanșată, blocarea este eliberată, ceea ce vă permite să continuați să lucrați la alte fire care așteaptă să apucați aceeași blocare. în cazul așteptării (int) cu argumentul, starea va fi TIMED_WAITING

10. Care este diferența dintre i ++ și ++ i?
++i, primul crește cu 1, apoi participă la expresie.
i ++, particip la prima expresie, apoi crește cu 1.







Articole similare

Trimiteți-le prietenilor: