Najlepšie otázky na pohovor java. Rozhovory pre vývojárov Middle Java. Ako funguje metóda substring() triedy String

💖 Páči sa vám to? Zdieľajte odkaz so svojimi priateľmi

Pre tých, ktorí počujú slovo Java Core prvýkrát, sú to základné základy jazyka. S týmito vedomosťami môžete pokojne ísť na stáž/stáž. Tieto otázky vám pomôžu osviežiť si vedomosti pred pohovorom alebo sa naučiť niečo nové pre seba. Pre získanie praktických zručností študujte na.

    Ako vytvoriť nemenný objekt v Jave? Uveďte všetky výhody

    Nemenná trieda je trieda, ktorej stav nemožno po vytvorení zmeniť. Tu sa stav objektu v podstate považuje za hodnoty uložené v inštancii triedy, či už ide o primitívne typy alebo referenčné typy.

    Aby bola trieda nemenná, musia byť splnené nasledujúce podmienky:

    1. Neposkytujte nastavovače alebo metódy, ktoré upravujú polia alebo objekty odkazujúce na polia. Setter znamená zmenu stavu objektu, čomu sa tu chceme vyhnúť.
    2. Všetky polia musia byť konečné a súkromné. Polia označené ako súkromné ​​nebudú prístupné mimo triedy a ich označenie ako konečné zaisťuje, že ich nezmeníte ani náhodou.
    3. Nedovoľte podtriedam prepísať metódy. Najjednoduchší spôsob, ako to urobiť, je vyhlásiť triedu za konečnú. Dokončené triedy v jazyku Java nemožno prepísať.
    4. Vždy si pamätajte, že vaše premenné inštancie môžu byť premenlivé alebo nemenné. Definujte ich a vráťte nové objekty so skopírovaným obsahom pre všetky meniteľné objekty (typy odkazov). Nemenné premenné (primitívne typy) možno bezpečne vrátiť bez ďalšieho úsilia.

    Tiež si musíte pamätať na následné výhody nemenných tried. Možno ich budete potrebovať na pohovore. Nemenné triedy:

    • jednoduché navrhovanie, testovanie a používanie
    • automaticky vlákno bezpečné a nemá žiadne problémy so synchronizáciou
    • nevyžadujú kopírovací konštruktor
    • vám umožní lenivo inicializovať hashcode a uložiť vrátenú hodnotu do vyrovnávacej pamäte
    • nevyžadujú bezpečné kopírovanie pri použití ako pole
    • urobte dobré kľúče mapy a prvky Set (tieto objekty by nemali meniť stav, keď sú v kolekcii)
    • urobte svoju triedu trvalou tak, že ju raz vytvoríte a nie je potrebné ju znova kontrolovať
    • mať vždy „atomicitu zlyhania“ (termín, ktorý vytvoril Joshua Bloch): ak nemenný objekt vyvolá výnimku, nikdy nezostane v nežiaducom alebo nedefinovanom stave.

    Pozrite si príklad napísaný v tomto príspevku.

    Špecifikácia Java uvádza, že všetko v jazyku Java sa odovzdáva podľa hodnoty. V jazyku Java neexistuje nič také ako „prechod podľa referencie“. Tieto podmienky sú spojené s volaním metód a odovzdávaním premenných ako parametrov metódy. Dobre, primitívne typy sa vždy odovzdávajú podľa hodnoty bez akéhokoľvek zmätku. Koncept by však mal byť jasný v kontexte parametra metódy komplexných typov.


    Vo vyššie uvedenom príklade sú bity adresy prvej inštancie skopírované inou referenčnou premennou, čo spôsobí, že obidva odkazy smerujú na rovnaké miesto v pamäti, kde je uložený objekt. Pamätajte, že priradením hodnoty null druhému odkazu nepriradíte hodnotu null prvému odkazu. Ale zmena stavu objektu s jednou referenčnou premennou sa prejaví v inom odkaze.

    Na čo slúži konečne blok? Zaručuje tento blok vykonanie svojho kódu? Kedy sa konečne blok nevolá?

    Posledný blok sa volá vždy, ak existuje blok try. To zaisťuje, že sa zavolá konečný blok, aj keď sa vyskytne neočakávaná výnimka. Nakoniec je však užitočnejší ako len spracovanie výnimiek – tento blok vám umožňuje vyčistiť kód, ktorý bol náhodne obídený prostredníctvom návratu, pokračovania alebo prerušenia. Umiestnenie čistiaceho kódu do bloku Final je vždy dobrou praxou, aj keď sa neočakávajú žiadne výnimky.

    Ak sa virtuálny počítač ukončí počas vykonávania bloku try alebo catch, potom sa posledný blok nevykoná. Podobne, ak vlákno vykonáva blok try alebo catch a je prerušené alebo zabité, posledný blok sa nevykoná, aj keď aplikácia pokračuje v behu.

    Prečo existujú dve triedy Date, jedna v balíku java.util a druhá v java.sql?

    java.util.Date predstavuje dátum a čas, zatiaľ čo java.sql.Date predstavuje iba dátum. Doplnkom k java.sql.Date je trieda java.sql.Time, ktorá predstavuje iba čas.

    Trieda java.sql.Date je podtriedou (rozšírením) triedy java.util.Date. Čo sa teda zmenilo v java.sql.Date:

    • toString() vytvára inú reprezentáciu reťazca: yyyy-mm-dd
    • statická metóda valueOf(String) vytvorí dátum z reťazca s vyššie uvedenou reprezentáciou
    • getre a setters pre hodiny, minúty a sekundy sú vylúčené

    Trieda java.sql.Date sa používa v JDBC a je navrhnutá tak, aby nemala žiadnu časovú zložku, čo znamená, že hodiny, minúty, sekundy a milisekúndy musia byť nula... ale pre triedu sa to nevyžaduje.

    Vysvetlite rozhrania značiek.

    Vzor tokenu rozhrania je návrhový vzor v informatike, ktorý používajú programovacie jazyky, ktoré poskytovať informácie o objektoch za behu. Toto poskytuje spôsob, ako priradiť metadáta triedy tam, kde jazyk nemá explicitnú podporu pre takéto metaúdaje. V Jave sa na to používajú rozhrania bez špecifikovania metód.

    Dobrým príkladom tokenového rozhrania v Jave je Serializovateľné rozhranie. Trieda implementuje toto rozhranie, aby naznačila, že jej neprechodné dáta môžu byť zapísané do bajtového toku alebo do súborového systému.

    Hlavný problém Rozhranie markera je, že rozhranie definuje konvenciu pre triedy, ktoré ho implementujú, a túto konvenciu dedia všetky podtriedy. To znamená, že token nebudete môcť „deimplementovať“. Ak vo vyššie uvedenom príklade vytvoríte podtriedu, ktorú nechcete serializovať (možno preto, že je v prechodnom stave), musíte sa uchýliť k explicitnému vyvolaniu NotSerializableException.

    Prečo je metóda main() deklarovaná ako verejná statická neplatná?

    Prečo verejné? Hlavná metóda má modifikátor verejného prístupu, takže k nej môže pristupovať kdekoľvek a akémukoľvek objektu, ktorý chce túto metódu použiť na spustenie aplikácie. Teraz nehovorím, že JDK/JRE majú podobný dôvod, pretože java.exe alebo javaw.exe (pre windows) používajú na spustenie metódy volanie Java Native Interface (JNI), takže ju môžu volať aj tak, bez ohľadu na modifikátor prístupu.

    Prečo statické? Predpokladajme, že naša hlavná metóda nie je statická. Teraz, aby ste zavolali akúkoľvek metódu, potrebujete inštanciu triedy. Správny? Java umožňuje preťažené konštruktory, to všetci vieme. Ktorý z nich by sa potom mal použiť a odkiaľ budú pochádzať parametre pre preťažený konštruktor?

    Prečo prázdno? Návratová hodnota vo virtuálnom stroji, ktorý v skutočnosti volá túto metódu, sa nepoužíva. Jediná vec, ktorú bude aplikácia chcieť povedať volajúcemu procesu je, či sa ukončil normálne alebo nenormálne. To je už možné pomocou System.exit(int) . Nenulová hodnota znamená abnormálne dokončenie, inak je všetko v poriadku.

    Aký je rozdiel medzi vytvorením reťazca ako new() a vytvorením doslovu (pomocou dvojitých úvodzoviek)?

    Keď vytvoríme reťazec pomocou new(), vytvorí sa v halde a tiež sa pridá do oblasti reťazcov, zatiaľ čo reťazec vytvorený pomocou literálu sa vytvorí iba v oblasti reťazcov.

    Na zodpovedanie tejto alebo podobných otázok sa budete musieť bližšie oboznámiť s konceptom združovania reťazcov. Moja rada je naozaj sa naučiť triedu String a fond strún.

    Ako funguje metóda substring() triedy String?

    Podobne ako iné programovacie jazyky, aj reťazce v jazyku Java sú sekvenciou znakov. Táto trieda je skôr ako pomocná trieda na prácu s touto sekvenciou. Postupnosť znakov poskytuje nasledujúca premenná:

    /** Hodnota sa používa na ukladanie znakov. */ /** Hodnota sa používa na ukladanie znakov */ súkromná konečná hodnota znaku; Nasledujúce premenné sa používajú na prístup k tomuto poli v rôznych scenároch /** Offset je prvý index úložného priestoru, ktorý sa používa. */ /** Offset je prvý index používaného úložiska. */ súkromný konečný int offset; /** Počet je počet znakov v reťazci. */ /** Počet je počet znakov v riadku. */ súkromný konečný počet int;

    Zakaždým, keď vytvoríme podreťazec z existujúcej inštancie reťazca, metóda substring() nastaví iba nové hodnoty pre premenné offset a count. Vnútorné pole znakov sa nemení. Toto je možný zdroj úniku pamäte, ak sa metóda substring() použije neopatrne:

    Pôvodná hodnota sa nemení. Ak teda vytvoríte reťazec s dĺžkou 10 000 znakov a vytvoríte 100 podreťazcov s 5 až 10 znakmi, všetkých 101 objektov bude obsahovať rovnaké pole znakov s dĺžkou 10 000 znakov. To je nepochybne plytvanie pamäťou.

    Tomu sa dá vyhnúť zmenou kódu takto:

    nahradiť original.substring(beginIndex) novým String(original.substring(beginIndex)) , kde original je pôvodný reťazec.

    Vysvetlite fungovanie HashMap. Ako sa rieši problém duplikátov?

    Väčšina z vás bude pravdepodobne súhlasiť s tým, že HashMap je v súčasnosti najobľúbenejšou témou na diskusiu v rozhovoroch. Ak ma niekto požiada, aby som vám povedal „Ako funguje HashMap?“, odpoviem jednoducho: „Na princípe hashovania.“ Ako je to jednoduché.

    Hašovanie je teda v podstate spôsob, ako priradiť jedinečný kód akejkoľvek premennej/objektu po použití akéhokoľvek vzorca/algoritmu na jej vlastnosti.

    Definícia mapy je: „Objekt, ktorý spája kľúče s hodnotami“. Veľmi jednoduché, však? HashMap teda obsahuje svoju vlastnú vnútornú triedu Entry, ktorá vyzerá takto:

    statická trieda Entry implementuje Map . Vstup(konečný kľúč K; hodnota V; ďalší záznam; záverečný int hash; …//Viac kódu je tu )

    Keď sa niekto pokúsi vložiť pár kľúč – hodnota do HashMap, stane sa toto:

    • Najprv sa skontroluje kľúčový objekt na prítomnosť null . Ak je kľúč nulový, hodnota sa uloží na pozíciu tabuľky. Pretože hashcode pre null je vždy 0.
    • Ďalším krokom je výpočet hodnoty hash volaním metódy hashCode() kľúčovej premennej. Tento hash sa používa na výpočet indexu do poľa na uloženie objektu Entry. Vývojári JDK si boli dobre vedomí toho, že metóda hashCode() môže byť zle napísaná a môže vrátiť veľmi veľkú alebo veľmi malú hodnotu. Na vyriešenie tohto problému zaviedli ďalšiu metódu hash() a odovzdali hashcode objektu tejto metóde, aby preniesli túto hodnotu do rozsahu veľkosti indexu poľa.
    • Teraz je zavolaná metóda indexFor(hash, table.length) na výpočet presnej polohy na uloženie objektu Entry.
    • Teraz hlavná časť. Ako vieme, dva rozdielne objekty môžu mať rovnakú hodnotu hashcode, ako by boli dva rozdielne objekty uložené na rovnakom mieste v archíve [nazývanom kôš]?

    Odpoveď je LinkedList. Ak si pamätáte, trieda Entry má vlastnosť „next“. Táto vlastnosť vždy ukazuje na ďalší objekt v reťazci. Toto správanie je veľmi podobné LinkedList.

    Takže v prípade zhody hashcode sú objekty Entry uložené vo forme LinkedList. Keď je potrebné umiestniť objekt položky na konkrétny index, HashMap skontroluje, či na tomto mieste neexistuje iný objekt položky? Ak tam nie je žiadny záznam, náš objekt sa uloží na toto miesto.

    Ak sa už v našom indexe nachádza iný objekt, skontroluje sa jeho ďalšie pole. Ak je null, náš objekt sa stane ďalším uzlom v LinkedList. Ak next nie je null , tento postup sa opakuje, kým sa nenájde ďalšie pole, ktoré je null.

    Čo sa stane, ak pridáme ďalšiu kľúčovú hodnotu rovnajúcu sa tej, ktorú sme pridali predtým? Je logické, že by mal nahradiť starú hodnotu. Ako sa to stane? Po určení indexu polohy pre objekt Entry, iterovaním cez LinkedList umiestnený v našom indexe, HashMap zavolá metódu equals() pre hodnotu kľúča pre každý objekt Entry. Všetky tieto objekty Entry v LinkedList majú rovnakú hodnotu hashcode, ale metóda equals() bude kontrolovať skutočnú rovnosť. Ak je kľúč. rovná sa (k) bude pravda, potom budú oba vnímané ako ten istý objekt. To spôsobí, že bude nahradený iba objekt value v rámci objektu Entry.

    Týmto spôsobom HashMap zaisťuje, že kľúče sú jedinečné.

    Rozdiely medzi rozhraniami a abstraktnými triedami?

    Toto je veľmi častá otázka, ak robíte pohovor pre programátora na juniorskej úrovni. Najvýraznejšie rozdiely sú uvedené nižšie:

    • V rozhraniach Java sú premenné a priori konečné. Abstraktné triedy môžu obsahovať nefinálne premenné.
    • Rozhranie v Jave absolútne nemôže mať implementáciu. Abstraktná trieda môže mať inštancie metód, ktoré implementujú základné správanie.
    • Komponenty rozhrania musia byť verejné. Abstraktná trieda môže mať modifikátory prístupu podľa vášho vkusu.
    • Rozhranie musí byť implementované pomocou kľúčového slova implements. Abstraktná trieda musí byť rozšírená o kľúčové slovo predlžuje.
    • V jazyku Java môže trieda implementovať veľa rozhraní, ale môže dediť iba z jednej abstraktnej triedy.
    • Rozhranie je úplne abstraktné a nemôže mať inštancie. Abstraktná trieda tiež nemôže mať inštancie triedy, ale môže byť volaná, ak existuje metóda main().
    • Abstraktná trieda je o niečo rýchlejšia ako rozhranie, pretože rozhranie očakáva vyhľadávanie pred volaním akejkoľvek prepísanej metódy v jazyku Java. Vo väčšine prípadov ide o nepatrný rozdiel, ale ak píšete časovo kritickú aplikáciu, musíte túto skutočnosť vziať do úvahy.
  1. Kedy prepíšete metódy hashCode() a equals()?

    Metódy hashCode() a equals() sú definované v triede Object, ktorá je rodičovskou triedou všetkých objektov Java. Z tohto dôvodu všetky objekty Java zdedia základnú implementáciu týchto metód.

    Metóda hashCode() sa používa na získanie jedinečnej celočíselnej hodnoty pre daný objekt. Táto hodnota sa používa na určenie umiestnenia segmentu, keď je potrebné objekt uložiť v dátovej štruktúre, ako je HashTable. Metóda hashCode() štandardne vracia celočíselné vyjadrenie adresy pamäte, kde je objekt uložený.

    Metóda equals(), ako už názov napovedá, sa používa na vykonanie ekvivalencie jednoduchých objektov. Základnou implementáciou metódy je kontrola referencií dvoch objektov, aby sa skontrolovalo, či sú ekvivalentné.

    Všimnite si, že zvyčajne je potrebné prepísať metódu hashCode() vždy, keď je prepísaná metóda equals(). Je to potrebné na podporu všeobecnej konvencie metódy hashCode, ktorá uvádza, že rovnaké objekty musia mať rovnaké hashcode.

    Metóda equals() musí určiť rovnosť medzi vzťahmi (musí byť opakujúca sa, symetrická a tranzitívna). Okrem toho musí byť perzistentné (ak sa objekt nezmenil, metóda musí vrátiť rovnakú hodnotu). Tiež by sa malo vždy vrátiť o.equals(null). falošné.

    hashCode() musí byť tiež perzistentné (ak objekt nebol upravený podmienkami metódy equals(), musí naďalej vracať rovnakú hodnotu.

    Vzťah medzi týmito dvoma metódami je: vždy, ak a.equals(b), potom a.hashCode() musí byť rovnaký ako b.hashCode() .

Veľa šťastia pri štúdiu!! Autor článku Lokeš Gupta Pôvodný článok Odkazy na ďalšie časti:

Presťahoval som sa do iného mesta, zamestnám sa, chodím na pohovory. Zdalo sa mi, že otázky, ktoré sú tam položené, aj keď sú dobre známe, predsa len poskladané, vám môžu pomôcť pripraviť sa a cítiť sa istejšie.

Otázky, ktoré vám pomôžu pochopiť princípy budovania DBMS.
1. Čo je prvá normálna forma a proces normalizácie? Aké sú normálne formy?
2. Čo znamená index DBMS, ako sú štruktúrované a ako sú uložené? Ako by ste implementovali rovnakú funkcionalitu? Posledná otázka je položená, ak nie je jasné pochopenie indexov.
3. Nakreslite vzťah Many-to-Many. Napríklad: tabuľky autorov a kníh. Jeden autor môže mať niekoľko kníh a knihu môže napísať viacero autorov. Napíšte SQL dotaz na výber kníh od konkrétneho autora.

Základné otázky o Jave.
4. Základná trieda v jazyku Java je známa ako Object. Aké metódy môžete vymenovať?
5. Povedzte nám, čo je to rovná sa a hashCode? Aké pravidlá a konvencie existujú na implementáciu týchto metód? Kedy sa používajú?
6. Vysvetlite metódy čakania, oznamovania, oznamovaniaVšetky. Ako sa používajú, kedy, prečo sú potrebné? Čo je synchronizované?
7. Čo je finalizovať? Prečo je to potrebné? Čo nám môžete povedať o zberači odpadu a jeho algoritmoch?
8. Prečo je metóda klonovania vyhlásená za chránenú? Čo je potrebné na implementáciu klonovania?
9. Aké modifikátory existujú (prístup a iné)? Čo sú nestále a prechodné? Na čo a v akých prípadoch možno použiť predvolené?

Java Collection Framework
10. Aké sú zberné rozhrania v jazyku Java? Vysvetlite, ako sa líšia.
11. Aké implementácie týchto rozhraní poznáte?
12. Ako sa navzájom líšia ArrayList a LinkedList? Ako sú postavené? V akých prípadoch by sa mali používať?
13. Aký je rozdiel medzi HashMap a TreeMap? Ako sú štruktúrované a fungujú? Ako je to s časom prístupu k objektom, aké sú závislosti?
14. Čo je Hashtable, ako sa líši od HashMapu? Dnes je to zastarané, ako môžete stále používať potrebné funkcie?

Výnimky
15. Čo je to výnimka? Aké typy výnimiek poznáte a ako sa líšia?
16. Možno problém s blokmi try-catch-finally a otázkou, čo sa vráti alebo aká výnimka bude nakoniec vynechaná?

Algoritmy
17. Aké triediace algoritmy poznáte? Aké algoritmy poznáte?
Okrem toho sú tu možné rôzne dodatočné otázky týkajúce sa hodnotenia zložitosti algoritmov a ich vzájomného porovnania.

Dizajnové vzory.
18. Poznáte nejaké dizajnové vzory?
19. Napíšte Singleton... A s lenivým načítaním. Čo ak to musí byť bezpečné pre vlákna? A v ktorých prípadoch je lenivé načítanie horšie?
20. Čo môžete povedať o MVC? Nakreslite diagram a vysvetlite, ako funguje MVC.

Séria otázok, ktoré vám pomôžu pochopiť zásobník technológií J2EE.
21. Aký je servlet, jsp, ich rozdiel?
22. Čo je Ajax? Ako táto technológia v zásade funguje?
23. Čo je ORM, ako ho preložiť a ako by mal fungovať?

Jednoduché problémy pre písanie algoritmov.
24. Napíšte funkciu na výpočet faktoriálu.
25. Je uvedená funkcia na výpočet Fibonacciho čísel, je známe, že funguje. Nájdite logický omyl. Odhadnite zložitosť výsledného algoritmu.
26. Obráťte čiaru.
27. Vypočítajte priemer poľa.

Je užitočné pamätať na to, že ak sa necítite veľmi sebavedomo, nie je potrebné hovoriť zbytočné slová. Poviete ďalšie slovo a oni sa ho držia a odvíjajú reťaz. Propagujú niečo, čím si nie sú veľmi istí. Túto schopnosť ľudí - pripútať sa - treba využiť, ale s úžitkom pre seba ;-)

Vedomosti a pochopenie... veci sú celkom iné, takže
- rôzne algoritmy, napríklad triedenie, sa oplatí napísať sami, dokonca aj z učebnice. Pozrite sa, ako sa od seba líšia, porovnajte ich zložitosť.
- je užitočné pozrieť si rôzne utility a knižnice, princípy zoskupovania tried do balíkov a štýl písania kódu a komentovania. Môže to byť veľmi užitočné pri pochopení modifikátorov prístupu a organizácie projektu.
- pochopením niečoho konkrétneho môžete pomôcť tým, ktorí vedia menej. Prejdite na akékoľvek fórum a pokúste sa odpovedať na otázky týkajúce sa témy, ktorá vás zaujíma. Z diskusie si môžete odniesť niečo pre seba. Môžete napísať krátky článok. Samozrejme, musíte dobre rozumieť téme.
Akákoľvek práca zameraná na zlepšenie vlastnej kvalifikácie bude viditeľná pre kompetentného anketára a nezostane nepovšimnutá. Jediná vec je, že sa o tom musíte úprimne porozprávať, nemali by ste podceňovať svoje možnosti a schopnosti.
Ak chcete mať nejaký návod na prípravu alebo rozvoj seba ako špecialistu, môžete sa pozrieť na niečo podobné.

V skutočnosti sú vyššie uvedené otázky úrovňou Junior Developer, ako si to predstavujem. Niekde možno hlbšie, niekde menej, ale ako fakt - Junior.

Každé riešenie vytvára nové problémy

Zozbierali sme 10 zložitých príkladov programov, ktoré zobrazujú akékoľvek informácie. Mali by ste sa pozrieť na kód a povedať, čo program vypíše. Je možné, že program ani nebude možné skompilovať. V tomto prípade musíte špecifikovať, čo kompilátor vypíše.

Ľudia sa na pohovoroch radi pýtajú takéto otázky, takže je dobré oprášiť si svoje znalosti programovacieho jazyka Java. Odpovede budú skryté v spojleroch - čo program alebo kompilátor vypíše. Skúste sa sami zamyslieť, kým sa pozriete na správnu odpoveď.

Package com.instanceofjava; public class B ( B b = new B(); public int show())( return (true ? null: 0); ) public static void main(String args) ( B b = new B(); b.show( ) )

  • Zakaždým, keď vytvoríme objekt akejkoľvek triedy, najprv sa zavolá konštruktor a pamäť sa pridelí všetkým nestatickým premenným.
  • Tu B b = nové B(); objektu triedy B je priradený nový objekt rovnakej triedy.
  • Napíšte B b = nové B(); vedie k rekurzívnemu vykonávaniu konštruktora, ktorý vytvára nekonečné objekty. To je dôvod, prečo sa pri spustení tohto kódu v "hlavnom" vlákne vyvolá výnimka java.lang.StackOverFlowError.
  • Bežnou príčinou týchto druhov výnimiek je zlá rekurzia. K tomu zvyčajne dochádza v dôsledku neplatnej podmienky ukončenia.

Čo prinesie nasledujúci program?

balík com.instanceofjava; public class A( public static void show())( System.out.println("Statická metóda volaná"); ) public static void main(String args) ( A obj = null; obj.show(); ) )
  • Statické metódy môžeme volať pomocou premennej odkazujúcej na null . Ide o to, že statické metódy sú na úrovni triedy. To je dôvod, prečo môžeme volať statické funkcie pomocou samotnej triedy a pomocou premennej rovnajúcej sa null.

Čo prinesie nasledujúci program?

balík com.instanceofjava; public class A( static int a = 1111; static ( a = a-- - --a; ) ( a = a++ + ++a; ) public static void main(String args) ( System.out.println(a) ))

Čo prinesie nasledujúci program?

balík com.instanceofjava; public class A( int GetValue() ( return (true ? null: 0); ) public static void main(String args) ( A obj = new A(); obj.GetValue(); ) )

Čo prinesie nasledujúci program?

balík com.instanceofjava; public class A( public static void main(String args) ( Integer i1 = 128; Integer i2 = 128; System.out.println(i1 == i2); Integer i3 = 127; Integer i4 = 127; System.out.println (i3 == i4);

Čo prinesie nasledujúci program?

balík com.instanceofjava; trieda A ( void method(int i) ( ) ) trieda B rozširuje A ( @Override void method(Integer i) ( ) )
  • Ktorý riadok programu spôsobí chybu pri kompilácii?
balík com.instanceofjava; trieda A ( public static void main(String args) ( Integer i = new Integer(null); String s = new String(null); ) )

Čo prinesie nasledujúci program?

balík com.instanceofjava; trieda A ( public static void main(String args) ( Reťazec s = "JEDEN"+3+2+"DVA"+"TRI"+5+4+"ŠTYRI"+"PÄŤ"+5; System.out.println (s);

Čo prinesie nasledujúci program?

balík com.instanceofjava; trieda A ( static int metoda1(int i) ( return method2(i *= 11); ) static int method2(int i) ( return method3(i /= 11); ) static int method3(int i) ( return method4( i -= 11 ) static int method4(int i) ( return i += 11; ) public static void main(String args) ( System.out.println(method1(11)); ) );

Čo prinesie nasledujúci program?

balík com.instanceofjava; trieda A ( public static void main(String args) ( System.out.println(null); ) )

Čo sa stane, keď napíšete System.out.println(null); ?

Samozrejme sa vyskytne chyba pri kompilácii. Metóda println má niekoľko variácií. Môže akceptovať reťazec, objekt alebo znak. Pri odovzdávaní nulového argumentu tejto funkcii sa kompilátor nemôže rozhodnúť, ktorú z troch metód zavolať.

Preťažené metódy:

  • public void printltln(String str) (
  • public void printltln(char ch) (
  • public void printltln(Object ch) (

Pre kompilátor je volanie System.out.println(null) nejednoznačné, pretože na výstup null ‘a môžu byť viac-menej vhodné dve metódy: println(String) a println(char) . Kompilátor však nevie, ktorú konkrétnu metódu zavolať. Aby bola kompilácia úspešná, mali by ste napísať:

  • System.out.println((String)null);
  • System.out.println((char)null);
  • System.out.println((Object)null);

Tu si však treba dávať pozor. Call System.out.println((char)null); bude mať za následok výnimku runtime.

Rýchlo vám o sebe poviem. Mám 25 rokov, narodil som sa na Kryme, Feodosia. Študoval na mestskej technickej škole, potom vstúpil do Charkova, získal bakalársky titul a v roku 2014 sa vrátil domov. V roku 2014 som nastúpil na korešpondenčné štúdium na magisterské štúdium (všetky špecializácie nejako súviseli s programovaním) a v roku 2015 som nastúpil do armády na zmluvnú službu na obdobie 3 rokov. Po dvoch rokoch vojenskej služby som si uvedomil, že musím vo svojom živote niečo zmeniť... A potom som v decembri 2017 narazil na JavaRush a začal som sa vytrvalo učiť Java. V lete chodím na Topjavský kurz s Grigorijom, začínam chodiť na každú jeho hodinu a do polovice septembra by sa mal trojmesačný kurz skončiť. Vo všeobecnosti sa začiatkom septembra sťahujem s manželkou do Moskvy, aby som si hľadal prácu ako programátor Java a doteraz som absolvoval asi 10 pohovorov. Napíšem vám, čo sa neustále pýtajú a otázky, ktorými som bol bombardovaný.

    Čo je JDK, JRE, JVM a kompilátor. Toto musíte mať. Ak sa vás na pohovore opýtajú túto otázku a neodpoviete na ňu, s najväčšou pravdepodobnosťou sa už nebudú pýtať ďalej. Krátke video od YouTube

    Objektovo orientované programovanie (OOP). Hlavná vec je povedať vám, čo je polymorfizmus. Môžu vás požiadať, aby ste toto slovo preložili, potom musíte podľa toho povedať jeho definíciu. Všetko môžete povedať vlastnými slovami. Potom uveďte svoje príklady.

    Viacnásobné dedičstvo v Jave. Java neumožňuje viacnásobné dedenie tried, ale umožňuje viacnásobné dedenie rozhraní. O dedičstve

    Metódy triedy Object(je vhodné pozrieť si každú metódu priamo v samotnom kóde a venovať pozornosť Equals a hashCode). Nazval som to takto: getClass, finallize (prečítaj si o tom, nikdy nevieš, koľko ľudí otázku položí, ale pamätaj: podľa mňa TOTO JE BERLA), počkaj (stačí vedieť, že existujú 3 preťažené metódy ) notify, notifyAll, equals a hashcode (povinné!!! ! poznať 4 pravidlá rovnosti a určite poznať zákon medzi rovnými a hashCode).

    JVM zvnútra. Pamäť zásobníka a haldy.

    Čo je nové kľúčové slovo a ako funguje. Materiál som nenašiel, ale pýtali sa ma na to, alebo skôr, keď píšeme napr

    A a = nové A()
    čo sa stane pred rovným a po sebe?

    Práca na zber odpadu- nepýtali sa veľmi často, ale keď sa pýtali, začali kopať, pokiaľ túto tému poznám. Skvelý článok o

    Poradie inicializácie polí triedy rodič a dieťa

    zbierky: Musel som vysvetliť absolútne celú hierarchiu a prácu každej kolekcie.

    Otázka je, aký je rozdiel medzi Listom a Setom. Najdôležitejšie je povedať, čo je rozhranie Zoznamu. Ak odpoviete, že Set je zbierka jedinečných predmetov, nebude to stačiť.

    HashMap, HashSet - počiatočná veľkosť; kapacita, loadfactory, null povolená alebo nie? Ako sa vypočíta bunka pre objekt pri práci s kolekciou hash? Rozdiel medzi HashMap a TreeMap (nestačí povedať, že TreeMap je triedená zbierka podľa algoritmu červeno-čierneho stromu). Poznajte algoritmy vkladania, odstraňovania a vyhľadávania pre každú kolekciu. Queue, Deque, Stack – málokedy sa ma na ne pýtali. Musíte vedieť, kde je rozhranie a kde sú triedy v kolekciách.

    Upozorňujeme, že kolekcie majú Iterovateľného rodiča

    Java 8. Absolútne podľa na maximum musíte vytlačiť všetko, čo viete o uvoľnených „inováciách“. pred 4 rokmi: tu je zdroj Novinky v Jave 8

    Pýtali sa ma na spotrebiteľov, funkciu atď., potom sa ma pýtali na funkčné rozhrania, potom sa ma pýtali, ako si vytvoriť vlastnú anotáciu, čo znamená napríklad @SomeAnnotation (meno = .... count =.... ), konkrétne čo je názov, počet a ako fungujú pri vytváraní vašej anotácie.

    Generiká. Všetko o generikách. Pýtajú sa všade.

    Nite. Thread, Runnable, aký je rozdiel, ako začať vlákno. Všetko je to o synchronizácii. Mutexy, monitory, trieda Lock. Uviaznutie, keď nastane, uveďte tieto príklady.

    Hierarchia zaškrtnutých/nezaškrtnutých výnimiek, napíšte si vlastnú triedu výnimiek.

    Final , finallise(opäť), nemenné , konečne . Keď blok nakoniec zlyhá.

    Ako zakázať dedičnosť triedy(súkromní konštruktéri, záverečná trieda...).

    IO/NIO vlákna.

    VZORKY. Naučte sa aspoň 5 základných (mvc, factory, dekorator, singleton, pozorovatel).

    Jarný ioc, di, ioc - nádoba. Tu je link na pár praktických poznatkov, ktoré mi veľmi pomohli... JAR . Tu som prešiel cez jar až do 16. kapitoly a celý kód som napísal ručne. Radím vám, aby ste urobili to isté.

  • čo je OOP?
  • Čo je objekt?
  • Aké sú základné princípy OOP?
  • čo je dedičstvo?
  • Čo je polymorfizmus? Aké prejavy polymorfizmu v Jave poznáte?
  • Čo je to zapuzdrenie?
  • Čo je abstrakcia?
  • Aké sú výhody objektovo orientovaných programovacích jazykov?
  • Ako používanie objektovo orientovaného prístupu zlepšuje vývoj softvéru?
  • Existuje výraz „je“ a „má“. Čo znamenajú z hľadiska princípov OOP? Aký je rozdiel medzi zložením a agregáciou?
  • Čo rozumiete pod pojmom polymorfizmus, zapuzdrenie a dynamická väzba?

Jadro Java.

  • Aký je rozdiel medzi JRE, JVM a JDK?
  • Popíšte modifikátory prístupu v jazyku Java.
  • Čo je prístup na úrovni balíka.
  • Ako sa abstraktná trieda líši od rozhrania? V akých prípadoch by ste použili abstraktnú triedu a v akých prípadoch by ste použili rozhranie?
  • Môže objekt pristupovať k premennej súkromnej triedy? Ak áno, tak ako?
  • Prečo sú v Jave statické bloky?
  • Je možné preťažiť statickú metódu?
  • Povedzte nám o interných triedach. Kedy ich použijete?
  • Aký je rozdiel medzi premennou inštancie a statickou premennou? Uveďte príklad.
  • Uveďte príklad, kedy môžete použiť statickú metódu?
  • Povedzte nám o triedach zavádzačov a dynamickom načítavaní tried.
  • Aký je výraz „tvrdiť“ používaný v jazyku Java?
  • Prečo niektoré rozhrania vôbec nedefinujú metódy?
  • Aký je hlavný rozdiel medzi String, StringBuffer, StringBuilder?
  • Vysvetlite vstupno-výstupné toky Java.
  • Čo je pamäť haldy a zásobníka v jazyku Java?
  • Aký je rozdiel medzi pamäťou Stack a Heap v jazyku Java?
  • Povedzte nám o modeli pamäte v jazyku Java?
  • Ako funguje zberač odpadu?
  • Povedzte nám o typovom odlievaní. Čo je zníženie a propagácia typu? Kedy získate ClassCastException?
  • Čo je statická trieda, aké sú vlastnosti jej použitia?
  • Ako získať prístup k poľu vonkajšej triedy z vnorenej triedy.
  • Aké typy vnorených tried existujú? Na čo slúžia?
  • Je možné zmeniť pri prepisovaní metódy:
  • Modifikátor prístupu
  • Návratový typ
  • Typ alebo množstvo argumentu
  • Názov argumentu
  • Mám zmeniť objednávku, množstvo alebo úplne odstrániť sekciu hodov?
  • Čo je to autobox?
  • Čo sú generiká?
  • Aký je skutočný účel používania generických typov v jazyku Java?
  • Ako sa premenné odovzdávajú metódam, podľa hodnoty alebo odkazu?
  • Aké metódy má trieda Object?
  • Pravidlá pre prepísanie metódy Object.equals().
  • Ak chcete prepísať equals(), aké podmienky musia byť splnené pre prepísanú metódu?
  • Aký je vzťah medzi hashCode a rovná sa?
  • Ako sú metódy hashCode a equals implementované v triede Object?
  • Čo sa stane, ak prepíšete rovná sa bez prepísania hashCode? Aké problémy môžu nastať?
  • Existujú nejaké odporúčania, aké polia by sa mali použiť pri výpočte hashCode?
  • Na čo slúži metóda hashCode()?
  • Pravidlá pre prepísanie metódy Object.hashCode().
  • Povedzte nám o klonovaní objektov. Aký je rozdiel medzi plytkým a hlbokým klonovaním?
  • Pravidlá pre prepísanie metódy Object.clone().
  • Kde a ako môžete použiť súkromný konštruktor?
  • Čo je predvolený konštruktor?
  • Opíšte metódu Object.finalize().
  • Aký je rozdiel medzi final, final a finalizovať?
  • Opíšte hierarchiu výnimiek.
  • Aké typy výnimiek v Jave poznáte, ako sa líšia?
  • Čo je začiarknutá a nezačiarknutá výnimka?
  • Ako vytvoriť vlastnú nezaškrtnutú výnimku?
  • Aké sú výnimky z funkcie Unchecke?
  • Čo je chyba?
  • Opíšte fungovanie bloku try-catch-finally.
  • Je možné použiť blok try-finally (bez záchytu)?
  • Je posledný blok vždy vykonaný?
  • Aké sú vlastnosti triedy String? čo robí metóda inter()?
  • Je možné zdediť typ reťazca, prečo?
  • Prečo je String obľúbeným kľúčom v HashMap v Jave?
  • Definujte pojem zreťazenia reťazcov.
  • Ako obrátiť reťazec?
  • Ako porovnať hodnotu dvoch reťazcov?
  • Ako orezať medzery na začiatku a na konci riadku?
  • Definujte pojem „pool reťazcov“.
  • Je možné synchronizovať prístup k riadkom?
  • Ako správne porovnať hodnoty reťazcov dvoch rôznych objektov typu String a StringBuffer?
  • Prečo je reťazec nemenný a dokončený v jazyku Java?
  • Napíšte metódu na odstránenie daného znaku z reťazca.
  • Čo je odraz?
  • Čo sa stane s garbage collectorom (GC), ak sa počas metódy finalize() nejakého objektu vyskytne výnimka?
  • Čo je to internacionalizácia, lokalizácia?
  • Čo sú anotácie v jazyku Java?
  • Aké funkcie plní anotácia?
  • Aké vstavané anotácie v jazyku Java poznáte?
  • Čo robia anotácie @Retention, @Documented, @Target a @Inherited?
  • Čo robia anotácie @Override, @Deprecated, @SafeVarargs a @SuppressWarnings?
  • Aký životný cyklus anotácie možno určiť pomocou @Retention?
  • Na aké prvky možno použiť anotáciu a ako to môžem označiť?
  • Ako vytvoriť vlastnú anotáciu?
  • Aké typy atribútov sú povolené v anotáciách?
  • čo je JMX?
  • Aké výhody ponúka JMX?
  • Čo ešte dokáže JMX okrem diaľkového ovládania?
  • Čo je MBean?
  • Aké druhy MBeanov existujú?
  • Čo je MBean Server?
  • Aké mechanizmy poskytujú bezpečnosť v technológii Java?
  • Vymenujte niekoľko typov kontrol, ktoré overovač bajtového kódu Java vykonáva?
  • Čo viete o „správcovi bezpečnosti“ v jazyku Java?
  • čo je JAAS?
  • Čo je Refaktoring?

Java Collections Framework.

  • Čo je zbierka?
  • Vymenujte hlavné rozhrania kolekcií a ich implementácie.
  • Ako sa ArrayList líši od LinkedList? V ktorých prípadoch je lepšie použiť prvý a v akých prípadoch druhý?
  • Ako sa HashMap líši od Hashtable?
  • Aký je rozdiel medzi ArrayList a Vector?
  • Ako sa porovnávajú prvky kolekcie?
  • Usporiadajte nasledujúce rozhrania do hierarchie: List, Set, Map, SortedSet, SortedMap, Collection, Iterable, Iterator, NavigableSet, NavigableMap.
  • Prečo mapa nie je kolekcia, zatiaľ čo zoznam a sada sú kolekcie?
  • Definujte pojem „iterátor“.
  • Čo viete o rozhraní Iterable?
  • Ako previesť HashSet na ArrayList v jednom riadku?
  • Ako previesť ArrayList na HashSet v jednom riadku?
  • Ako iterovať cez všetky kľúče mapy, keďže mapa nie je iterovateľná?
  • Ako iterovať cez všetky hodnoty mapy vzhľadom na to, že mapa nie je iterovateľná?
  • Ako iterovať cez všetky páry kľúč-hodnota v mape, keďže mapa nie je iterovateľná?
  • Ako je SortedMap „triedená“ okrem skutočnosti, že toString() zobrazuje všetko v poradí?
  • Ako skopírovať prvky z ľubovoľnej kolekcie do poľa jedným volaním?
  • Implementujte symetrický rozdiel dvoch kolekcií pomocou metód kolekcie (addAll(), removeAll(), keepAll()).
  • Porovnajte Enumeráciu a Iterátor.
  • Ako súvisia Iterable a Iterator?
  • Ako spolu súvisia Iterable, Iterator a „for-each“ zavedené v Java 5?
  • Porovnajte Iterator a ListIterator.
  • Čo sa stane, ak zavolám Iterator.next() bez toho, aby som sa opýtal Iterator.hasNext()?
  • Čo sa stane, ak zavolám Iterator.next() predtým, ako zavolám Iterator.hasNext() 10-krát? Chýba mi 9 prvkov?
  • Ak mám kolekciu a podradený iterátor, zmení sa kolekcia, ak zavolám iterator.remove()?
  • Ak mám kolekciu a podradený iterátor, zmení sa iterátor, ak zavolám collection.remove(..)?
  • Prečo pridali ArrayList, ak už existuje Vector?
  • Implementácia triedy ArrayList má nasledujúce polia: Object elementData, int size. Vysvetlite, prečo ukladať veľkosť oddelene, ak môžete vždy vziať elementData.length?
  • Je LinkedList jednoducho prepojený zoznam, dvojito prepojený zoznam alebo štyri prepojené zoznamy?
  • Aký je najhorší čas spustenia metódy include() pre prvok, ktorý je v LinkedList (O(1), O(log(N)), O(N), O(N*log(N)), O( N*N))?
  • Aký je najhorší čas spustenia metódy include() pre prvok, ktorý je v ArrayList (O(1), O(log(N)), O(N), O(N*log(N)), O (N*N))?
  • Aký je najhorší čas spustenia metódy add() na LinkedList (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N)) ?
  • Aký je najhorší čas spustenia metódy add() pre ArrayList (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N)) ?
  • Koľko prvkov je alokovaných v pamäti pri volaní ArrayList.add()?
  • Koľko prvkov je alokovaných v pamäti pri volaní LinkedList.add()?
  • Odhadnúť množstvo pamäte na uloženie jedného bajtového primitíva v LinkedList?
  • Odhadnúť množstvo pamäte na uloženie jedného bajtového primitíva v ArrayList?
  • Do stredu zoznamu pridám prvok: list.add(list.size()/2, newElem). Pre koho je táto operácia pomalšia - pre ArrayList alebo pre LinkedList?
  • Ako iterovať cez prvky LinkedList v opačnom poradí bez použitia pomalého get (index)?
  • Ako získať zoznam so všetkými prvkami okrem prvých a posledných 3 jedným volaním zo zoznamu?
  • Môžu mať rôzne objekty v pamäti (ref0 != ref1) ref0.hashCode() == ref1.hashCode()?
  • Môžu mať rôzne objekty v pamäti (ref0 != ref1) ref0.equals(ref1) == true?
  • Môžu mať rôzne odkazy na rovnaký objekt v pamäti (ref0 == ref1) ref0.equals(ref1) == false?
  • Existuje trieda Point(int x, y;). Prečo je hash kód 31 * x + y vhodnejší ako x + y?
  • Ak má trieda Point(int x, y;) "správnu" implementáciu metódy rovná sa (return ref0.x == ref1.x && ref0.y == ref1.y), ale vytvorte hash kód v tvare int hashCode() ( return x;), potom budú takéto body správne umiestnené a získané z HashSet?
  • equals() generuje vzťah ekvivalencie. Aké vlastnosti má tento vzťah: komutivita, symetria, reflexivita, distributivita, asociativita, tranzitivita?
  • Je možné implementovať equals(Object that) (vrátiť this.hashCode() == that.hashCode()) takto?
  • rovná sa vyžaduje kontrolu, či je argument (rovná sa (Object that)) rovnakého typu ako samotný objekt. Aký je rozdiel medzi this.getClass() == that.getClass() a inštanciou funkcie MyClass?
  • Je možné implementovať metódu rovná sa triede MojaTrieda takto: class MojaTrieda (verejné booleovské rovná sa(MojaTrieda) (vráti toto == tamto;))?
  • Bude HashMap fungovať, ak všetky kľúče vrátia int hashCode() (návrat 42;)?
  • Prečo pridali HashMap, ak už existuje Hashtable?
  • Podľa Knutha a Cormena existujú dve hlavné implementácie hashovacích tabuliek: založené na otvorenom adresovaní a založené na reťazení. Ako sa implementuje HashMap? Prečo to urobili (podľa vás)? Aké sú výhody a nevýhody jednotlivých prístupov?
  • Koľko kliknutí na odkaz nastane, keď vykonáte HashMap.get(key) na kľúči, ktorý je v tabuľke?
  • Koľko nových objektov sa vytvorí, keď pridáte nový prvok do HashMap?
  • Ako funguje HashMap, keď sa do nej pokúsite uložiť dva prvky pomocou kľúčov s rovnakým hashCode, ale pre ktorý sa rovná == false?
  • HashMap sa môže zvrhnúť na zoznam aj pre kľúče s rôznymi hashCodes. Ako je to možné?
  • Aký je najhorší čas spustenia metódy get(key) pre kľúč, ktorý nie je v tabuľke (O(1), O(log(N)), O(N), O(N*log(N)) , O(N*N))?
  • Aký je najhorší čas spustenia metódy get(key) pre kľúč, ktorý je v tabuľke (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?
  • Vysvetlite význam parametrov v konštruktore HashMap(int initialCapacity, float loadFactor).
  • Aký je rozdiel medzi HashMap a IdentityHashMap? Na čo slúži IdentityHashMap? Ako môže byť užitočný pri implementácii serializácie alebo klonovania?
  • Aký je rozdiel medzi HashMap a WeakHashMap? Na čo slúži WeakHashMap?
  • WeakHashMap používa WeakReferences. Prečo nevytvoriť SoftHashMap na SoftReferences?
  • WeakHashMap používa WeakReferences. Prečo nevytvoríte PhantomHashMap na PhantomReferences?
  • Vytvorte HashSet z HashMap (použite iba množinu kľúčov, nie množinu hodnôt).
  • Vytvorte HashMap z HashSet (HashSet >).
  • Porovnajte rozhrania java.util.Queue a java.util.Deque.
  • Kto koho rozširuje: Queue predlžuje Deque alebo Deque predlžuje Queue?
  • Prečo LinkedList implementuje zoznam aj Deque?
  • Aký je rozdiel medzi triedami java.util.Arrays a java.lang.reflect.Array?
  • Aký je rozdiel medzi triedami java.util.Collection a java.util.Collections?
  • Napíšte MULTIvláknový program, ktorý spôsobí, že kolekcia vyvolá výnimku ConcurrentModificationException.
  • Čo je to „fail-fach behavior“?
  • Existuje špeciálna trieda java.util.EnumSet pre množiny enumov? Prečo? Prečo autori neboli spokojní s HashSet alebo TreeSet?
  • java.util.Stack - považovaný za "zastaraný". Čím sa odporúča nahradiť? prečo?
  • Ktorá kolekcia implementuje servisnú disciplínu FIFO?
  • Ktorá kolekcia implementuje servisnú disciplínu FILO?
  • Uveďte príklad, keď ktorákoľvek kolekcia vyvolá výnimku UnsupportedOperationException.
  • Prečo nemôžem napísať "ArrayList" čísla = nový ArrayList ();“, ale môžete „Zoznam čísla = nový ArrayList ();"?
  • LinkedHashMap – čo je to za „šelmu“? Čo je LinkedList a čo je HashMap?
  • LinkedHashSet – čo je to za „šelmu“? Čo je LinkedList a čo je HashSet?
  • Hovorí sa, že na LinkedHashMap je ľahké vytvoriť jednoduchú vyrovnávaciu pamäť s „politikou zneplatnenia“, viete ako?
  • Čo vám PriorityQueue umožňuje?
  • Aké sú rozdiely medzi java.util.Comparator a java.lang.Comparable?

Java 8.

  • Čo je to symbolický odkaz?
  • Aký je rozdiel medzi I/O a NIO?
  • Aké vlastnosti NIO poznáte?
  • Aké typy I/O tokov existujú?
  • Pomenujte hlavné triedy I/O tokov.
  • Aký je rozdiel a čo majú spoločné OutputStream, InputStream, Writer, Reader?
  • Aké podtriedy základnej triedy InputStream poznáte a čo robia?
  • Čo viete o RandomAccessFile?
  • Aké režimy prístupu k súborom má RandomAccessFile?
  • Aké podtriedy základnej triedy OutputStream poznáte a čo robia?
  • Na čo sa používa PushbackInputStream?
  • Na čo sa používa SequenceInputStream?
  • Aké podtriedy základnej triedy Reader poznáte a na čo slúžia?
  • Aké podtriedy základnej triedy Writer poznáte a čo robia?
  • Čo je absolútna cesta a relatívna cesta?
  • Aké balíky obsahujú triedy vlákien?
  • Čo viete o supertriedach?
  • Ktorá doplnková trieda vám umožňuje čítať údaje zo vstupného bajtového toku vo formáte primitívnych dátových typov?
  • Ktorá trieda doplnkov vám umožňuje urýchliť čítanie/zápis pomocou vyrovnávacej pamäte?
  • Aké triedy vám umožňujú konvertovať bajtové prúdy na prúdy znakov a naopak?
  • Aký je rozdiel medzi triedou PrintWriter a PrintStream?
  • Ktorá trieda je navrhnutá na prácu s prvkami súborového systému?
  • Aký znak je oddeľovač pri zadávaní cesty v systéme súborov?
  • Aké metódy triedy File poznáte?
  • Čo viete o rozhraní FileFilter?
  • Aké triedy vám umožňujú archivovať objekty?

  • Na akom objekte dôjde k synchronizácii pri volaní statickej synchronizovanej metódy?
  • Na čo sa používa kľúčové slovo volatilný, synchronizovaný, prechodný, natívny?
  • Čo znamená priorita vlákna?
  • Čo sú vlákna démonov v jazyku Java?
  • Čo to znamená uspať flow?
  • V akých stavoch môže vlákno existovať v Jave? Ako vlastne funguje flow?
  • Aký je rozdiel medzi týmito dvoma rozhraniami na implementáciu úloh Runnable a Callable?
  • Rozdiely medzi CyclicBarrier a CountDownLatch?
  • Čo je to rasová podmienka?
  • Ako zastaviť vlákno?
  • Čo sa stane, keď vlákno vyvolá výnimku?
  • Čo je premenná ThreadLocal?
  • Čo je FutureTask?
  • Rozdiel medzi prerušeným a isInterrupted?
  • Prečo sa metódy čakania a oznamovania volajú v synchronizovanom bloku?
  • Čo je fond vlákien?
  • Rozdiely medzi livelockom a deadlockom?
  • Ako skontrolovať, či vlákno drží zámok?
  • Ako získať výpis vlákna?
  • Aký parameter JVM sa používa na riadenie veľkosti zásobníka vlákna?
  • Rozdiely medzi synchronizovaným a ReentrantLockom?
  • Čo je Semafor?
  • Čo sa stane, ak je front fondu vlákien už plný a odošlete úlohu?
  • Rozdiely medzi metódami submit() a execute() v oblasti vlákien?
  • Čo je metóda blokovania?
  • Čo je ReadWriteLock?
  • Čo je Singletonovo dvojito začiarknuté zamykanie?
  • Čo je to rámec Fork/Join?
  • povedať priateľom