top 50 core java interview questions
Najčastejšie otázky a odpovede na otázky týkajúce sa rozhovorov Java s príkladmi:
V tomto tutoriáli sme sa venovali takmer 50+ dôležitým základným otázkam na pohovore pre Java pre nováčikov a skúsených kandidátov.
Tento príspevok o otázkach týkajúcich sa rozhovorov JAVA je pripravený pomôcť vám pochopiť základné pojmy programovania v jazyku Java na účely pohovoru. Všetky dôležité koncepty JAVA sú tu vysvetlené pomocou príkladov pre vaše ľahké pochopenie.
Tento tutoriál sa venuje témam JAVA, ako sú základné definície Javy, koncepty OOP, špecifikátory prístupu, kolekcie, výnimky, vlákna, serializácia atď., S príkladmi, vďaka ktorým sa dokonale pripravíte sebavedome čeliť každému rozhovoru v JAVA.
Najobľúbenejšie otázky a odpovede týkajúce sa rozhovoru v prostredí Java
Ďalej je uvedený komplexný zoznam najdôležitejších a najčastejšie kladených otázok týkajúcich sa základného a pokročilého programovacieho jazyka Java s podrobnými odpoveďami.
Otázka 1) Čo je to JAVA?
Odpoveď: Java je programovací jazyk na vysokej úrovni a je nezávislý na platforme.
Java je zbierka objektov. Bol vyvinutý spoločnosťou Sun Microsystems. Existuje veľa aplikácií, webových stránok a hier vyvinutých pomocou Java.
Otázka 2) Aké sú vlastnosti JAVA?
Odpoveď: Vlastnosti Java sú nasledujúce:
- Koncepty OOP
- Objektovo orientovaný
- Dedenie
- Zapuzdrenie
- Polymorfizmus
- Abstrakcia
- Nezávislé na platforme: Jediný program funguje na rôznych platformách bez akýchkoľvek úprav.
- Vysoký výkon: JIT (kompilátor Just In Time) umožňuje vysoký výkon v prostredí Java. JIT prevedie bytecode do strojového jazyka a potom JVM začne vykonávanie.
- Viacvláknové: Postup vykonávania je známy ako vlákno. JVM vytvorí vlákno, ktoré sa nazýva hlavné vlákno. Používateľ môže vytvoriť viac vlákien rozšírením triedy vlákien alebo implementáciou rozhrania Runnable.
Otázka 3) Ako Java umožňuje vysoký výkon?
Odpoveď: Java používa na zabezpečenie vysokého výkonu kompilátor Just In Time. Používa sa na prevod pokynov do bajtových kódov.
Otázka č. 4) Pomenujete Java IDE?
Odpoveď: Eclipse a NetBeans sú IDE Java.
Otázka č. 5) Čo máte na mysli od spoločnosti Constructor?
Odpoveď: Konštruktor možno podrobne vysvetliť pomocou získaných bodov:
- Keď sa v programe vytvorí nový objekt, vyvolá sa konštruktor zodpovedajúci triede.
- Konštruktor je metóda, ktorá má rovnaký názov ako názov triedy.
- Ak používateľ implicitne nevytvorí konštruktor, vytvorí sa predvolený konštruktor.
- Konštruktor môže byť preťažený.
- Ak užívateľ vytvoril konštruktor s parametrom, mal by vytvoriť iného konštruktora výslovne bez parametra.
Otázka č. 6) Čo sa rozumie pod lokálnou premennou a premennou inštancie?
Odpoveď:
Lokálne premenné sú definované v metóde a rozsahu premenných, ktoré existujú vo vnútri samotnej metódy.
Premenná inštancie je definované vo vnútri triedy a mimo metódy a rozsah premenných existuje v celej triede.
Otázka č. 7) Čo je to trieda?
Odpoveď: Všetky kódy Java sú definované v triede. Má premenné a metódy.
Premenné sú atribúty, ktoré definujú stav triedy.
Metódy sú miestom, kde je potrebné urobiť presnú obchodnú logiku. Obsahuje súbor príkazov (alebo) na splnenie konkrétnej požiadavky.
Príklad:
public class Addition{ //Class name declaration int a = 5; //Variable declaration int b= 5; public void add(){ //Method declaration int c = a+b; } }
Otázka č. 8) Čo je to objekt?
Odpoveď: Inštancia triedy sa nazýva objekt. Objekt má stav a správanie.
Kedykoľvek JVM načíta kľúčové slovo „new ()“, vytvorí inštanciu tejto triedy.
Príklad:
public class Addition{ public static void main(String() args){ Addion add = new Addition();//Object creation } }
Vyššie uvedený kód vytvára objekt pre triedu Addition.
Otázka č. 9) Čo sú koncepty OOP?
Odpoveď: Koncepty OOP zahŕňajú:
- Dedenie
- Zapuzdrenie
- Polymorfizmus
- Abstrakcia
- Rozhranie
Navrhované čítanie = >> Najlepšie otázky týkajúce sa rozhovorov s OOP
Otázka č. 10) Čo je to dedičstvo?
Odpoveď: Dedenie znamená, že jedna trieda sa môže rozšíriť do inej triedy. Aby bolo možné kódy znova použiť z jednej triedy do druhej triedy. Existujúca trieda je známa ako trieda Super, zatiaľ čo odvodená trieda je známa ako podtrieda.
Príklad:
Super class: public class Manupulation(){ } Sub class: public class Addition extends Manipulation(){ }
Dedenie sa vzťahuje iba na verejnosť a chránených členov. Súkromní členovia sa nemôžu dediť.
Otázka č. 11) Čo je zapuzdrenie?
Odpoveď: Účel zapuzdrenia:
- Chráni kód pred ostatnými.
- Udržateľnosť kódu.
Príklad:
Deklarujeme „a“ ako celočíselnú premennú a nemalo by to byť záporné.
public class Addition(){ int a=5; }
Ak niekto zmení presnú premennú ako „ a = -5 ' potom je zle.
Na prekonanie problému je potrebné postupovať podľa nasledujúcich krokov:
- Premennú môžeme označiť ako súkromnú alebo chránenú.
- Používajte verejné prístupové metódy, napríklad set and get.
Vyššie uvedený kód je možné upraviť takto:
public class Addition(){ private int a = 5; //Here the variable is marked as private }
Nasledujúci kód zobrazuje getra a setra.
Podmienky je možné poskytnúť pri nastavovaní premennej.
get A(){ } set A(int a){ if(a>0){// Here condition is applied ......... } }
Pre zapuzdrenie musíme urobiť všetky premenné inštancie súkromnými a vytvoriť pre tieto premenné setter a getter. Čo následne prinúti ostatných, aby zavolali nastavovačom namiesto priameho prístupu k údajom.
Otázka č. 12) Čo je to polymorfizmus?
Odpoveď: Polymorfizmus znamená veľa podôb.
Jeden objekt môže odkazovať na nadtriedu alebo podtriedu v závislosti od typu odkazu, ktorý sa nazýva polymorfizmus.
Príklad:
Public class Manipulation(){ //Super class public void add(){ } } public class Addition extends Manipulation(){ // Sub class public void add(){ } public static void main(String args()){ Manipulation addition = new Addition();//Manipulation is reference type and Addition is reference type addition.add(); } }
Pomocou referenčného typu manipulácie môžeme nazvať metódu triedy Add „add ()“. Táto schopnosť je známa ako polymorfizmus. Polymorfizmus je použiteľný pre prvoradý a nie pre preťaženie .
Otázka č. 13) Čo sa rozumie pod položkou Overriding metód?
Odpoveď: K prepísaniu metódy dôjde, ak metóda podtriedy spĺňa nižšie uvedené podmienky pomocou metódy Superclass:
- Názov metódy by mal byť rovnaký
- Argument by mal byť rovnaký
- Rovnaký by mal byť aj návratový typ
Kľúčovou výhodou prepísania je, že podtrieda môže poskytnúť určité konkrétne informácie o danom type podtriedy ako nadtrieda.
Príklad:
public class Manipulation{ //Super class public void add(){ ……………… } } Public class Addition extends Manipulation(){ Public void add(){ ……….. } Public static void main(String args()){ Manipulation addition = new Addition(); //Polimorphism is applied addition.add(); // It calls the Sub class add() method } }
addition.add () metóda volá metódu add () v podtriede a nie nadradenej triede. Prepíše teda metódu super triedy a je známa ako Prepísanie metódy.
Otázka č. 14) Čo sa myslí pod preťažením?
Odpoveď: Preťaženie metód sa deje pre rôzne triedy alebo v rámci tej istej triedy.
Pokiaľ ide o preťaženie metódy, metóda podtriedy by mala spĺňať nižšie uvedené podmienky s metódami Super-class (alebo) v tej istej triede samotnej:
- Rovnaký názov metódy
- Rôzne typy argumentov
- Môžu existovať rôzne typy vrátenia
Príklad:
public class Manipulation{ //Super class public void add(String name){ //String parameter ……………… } } Public class Addition extends Manipulation(){ Public void add(){//No Parameter ……….. } Public void add(int a){ //integer parameter } Public static void main(String args()){ Addition addition = new Addition(); addition.add(); } }
Tu má metóda add () rôzne parametre v triede Addition a je preťažená v rovnakej triede ako v prípade supertriedy.
Poznámka: Polymorfizmus nie je použiteľný pre preťaženie metódy.
Otázka č. 15) Čo sa rozumie pod rozhraním?
Odpoveď: V jave nie je možné dosiahnuť viac dedičstiev. Na prekonanie tohto problému je zavedený koncept rozhrania.
Rozhranie je šablóna, ktorá má iba deklarácie metód, a nie implementáciu metódy.
Príklad:
Public abstract interface IManupulation{ //Interface declaration Public abstract void add();//method declaration public abstract void subtract(); }
- Všetky metódy v rozhraní sú interne verejná abstraktná neplatnosť .
- Všetky premenné v rozhraní sú interne verejné statické finále to sú konštanty.
- Triedy môžu implementovať rozhranie a nerozširujú sa.
- Trieda, ktorá implementuje rozhranie, by mala poskytovať implementáciu pre všetky metódy deklarované v rozhraní.
public class Manupulation implements IManupulation{ //Manupulation class uses the interface Public void add(){ …………… } Public void subtract(){ ……………. } }
Otázka č. 16) Čo sa myslí pod abstraktnou triedou?
Odpoveď: Triedu Abstract môžeme vytvoriť pomocou kľúčového slova „Abstract“ pred názvom triedy. Abstraktná trieda môže mať ako „abstraktné“ metódy, tak aj „neabstrahujúce“ metódy, ktoré sú konkrétnou triedou.
Abstraktná metóda:
Metóda, ktorá má iba deklaráciu a nie implementáciu, sa nazýva abstraktná metóda a má kľúčové slovo „abstrakt“. Vyhlásenia sa končia bodkočiarkou.
Príklad:
public abstract class Manupulation{ public abstract void add();//Abstract method declaration Public void subtract(){ } }
- Abstraktná trieda môže mať aj inú ako abstraktnú metódu.
- Konkrétna podtrieda, ktorá rozširuje triedu Abstract, by mala poskytovať implementáciu pre abstraktné metódy.
Otázka č. 17) Rozdiel medzi poľom a zoznamom polí.
Odpoveď: Rozdiel medzi poľom a zoznamom polí je možné pochopiť z nasledujúcej tabuľky:
Pole | Zoznam polí |
---|---|
Veľkosť by mala byť uvedená v čase deklarácie poľa. Reťazec () name = nový Reťazec (2) | Veľkosť sa nemusí vyžadovať. Dynamicky mení veľkosť. ArrayList name = nový ArrayList |
Ak chcete vložiť objekt do poľa, musíme určiť index. meno (1) = „kniha“ | Nie je potrebný žiadny index. name.add („kniha“) |
Pole nie je typovo parametrizované | ArrayList v Jave 5.0 sú parametrizované. Napr .: Táto uhlová zátvorka je typový parameter, ktorý znamená zoznam reťazca. |
Otázka 18) Rozdiel medzi reťazcom, tvorcom reťazcov a vyrovnávacou pamäťou pre reťazce.
Odpoveď:
Reťazec: Reťazcové premenné sú uložené v „fonde konštantných reťazcov“. Akonáhle reťazcový odkaz zmení starú hodnotu, ktorá existuje v „fonde konštantných reťazcov“, nie je možné ho vymazať.
Príklad:
Názov reťazca = „kniha“;
Konštantný fond strún
.
Ak sa zmenila hodnota názvu z „kniha“ na „pero“.
Konštantný fond strún
Potom zostane staršia hodnota v skupine konštantných reťazcov.
String Buffer:
- Tu sú hodnoty reťazcov uložené v zásobníku. Ak sa hodnoty zmenia, nová hodnota nahradí staršiu hodnotu.
- Vyrovnávacia pamäť reťazcov je synchronizovaná, čo je bezpečné pre vlákna.
- Výkon je pomalší ako v nástroji String Builder.
Príklad:
Názov vyrovnávacej pamäte reťazca = „kniha“;
Po zmene názvu na „pero“ sa „kniha“ v zásobníku vymaže.
Tvorca reťazcov:
Je to rovnaké ako vyrovnávacia pamäť reťazcov, okrem tvorcu reťazcov, ktorý nie je bezpečne prepojený vláknami a ktorý nie je synchronizovaný. Je zrejmé, že výkon je rýchly.
Otázka č. 19) Vysvetlite špecifikátory verejného a súkromného prístupu.
Odpoveď: Metódy a premenné inštancie sú známe ako členovia.
Verejné:
Verejní členovia sú viditeľní v rovnakom balíku aj v externom balíku, ktorý je určený pre ostatné balíčky.
Verejní členovia triedy A sú viditeľní pre triedu B (rovnaký balík) aj pre triedu C (rôzne balíčky).
Súkromné:
Súkromní členovia sú viditeľní iba v tej istej triede, a nie pre ostatné triedy v rovnakom balíku, ako aj pre triedy vo vonkajších balíkoch.
Súkromní členovia v triede A sú viditeľní iba v tejto triede. Je neviditeľný pre triedu B aj pre triedu C.
Otázka 20) Rozdiel medzi predvoleným a chráneným špecifikátorom prístupu.
Odpoveď:
Predvolené: Metódy a premenné deklarované v triede bez akýchkoľvek špecifikátorov prístupu sa nazývajú predvolené.
Predvolené členy v triede A sú viditeľné pre ostatné triedy, ktoré sú v balíku, a neviditeľné pre triedy, ktoré sú mimo balíka.
Takže členovia triedy A sú viditeľní pre triedu B a neviditeľní pre triedu C.
Chránené:
.
Chránené je rovnaké ako predvolené, ale ak sa trieda rozšíri, je viditeľná, aj keď je mimo balíka.
Členovia triedy A sú viditeľní pre triedu B, pretože je vo vnútri balíka. Pre triedu C je to neviditeľné, ale ak trieda C rozširuje triedu A, potom sú členovia viditeľní pre triedu C, aj keď je mimo balíka.
Otázka č. 21) Rozdiel medzi HashMap a HashTable.
Odpoveď: Rozdiel medzi programami HashMap a HashTable je uvedený nižšie:
HashMap | HashTable |
---|---|
Metódy nie sú synchronizované | Kľúčové metódy sú synchronizované |
Nie bezpečnosť nití | Bezpečnosť závitu |
Iterátor sa používa na iteráciu hodnôt | Na opakovanie hodnôt sa používa enumerátor |
Umožňuje jeden nulový kľúč a viac nulových hodnôt | Nepovoľuje nič, čo je neplatné |
Výkon je vysoký ako v HashTable | Výkon je pomalý |
Otázka č. 22) Rozdiel medzi HashSet a TreeSet.
Odpoveď: Rozdiel medzi HashSet a TreeSet môžete vidieť nižšie:
HashSet | TreeSet |
---|---|
Vložené prvky sú v náhodnom poradí | Udržuje prvky v zoradenom poradí |
Dokáže uložiť nulové objekty | Nepodarilo sa uložiť nulové objekty |
Výkon je rýchly | Výkon je pomalý |
Otázka č. 23) Rozdiel medzi abstraktnou triedou a rozhraním.
Odpoveď: Rozdiely medzi abstraktnou triedou a rozhraním sú nasledovné:
Trieda abstraktu:
- Abstraktné triedy majú predvolený konštruktor a volá sa vždy, keď sa vytvorí konkrétna podtrieda.
- Obsahuje abstraktné metódy aj neabstrahové metódy.
- Trieda, ktorá rozširuje triedu Abstract, by nemala vyžadovať implementáciu všetkých metód, iba konkrétne metódy je potrebné implementovať v konkrétnej podtriede.
- Abstraktná trieda obsahuje inštančné premenné.
Rozhranie:
- Nemá žiadny konštruktor a nebolo možné ho vytvoriť inštanciou.
- Mala by sa deklarovať iba abstraktná metóda.
- Triedy, ktoré implementujú rozhranie, by mali poskytovať implementáciu pre všetky metódy.
- Rozhranie obsahuje iba konštanty.
Q # 24) Aký je význam zbierok v Jave?
Odpoveď: Kolekcia je rámec, ktorý je určený na ukladanie objektov a manipuláciu s dizajnom na ukladanie objektov.
Zbierky sa používajú na vykonávanie nasledujúcich operácií:
- Hľadám
- Triedenie
- Manipulácia
- Vloženie
- Vymazanie
Skupina objektov je známa ako zbierky. Všetky triedy a rozhrania na zhromažďovanie sú k dispozícii v balíku Java util.
Otázka č. 25) Aké sú všetky triedy a rozhrania, ktoré sú k dispozícii v zbierkach?
Odpoveď: Ďalej sú uvedené triedy a rozhrania, ktoré sú k dispozícii v zbierkach:
Rozhrania:
- Zbierka
- Zoznam
- Nastaviť
- Mapa
- Zoradená sada
- Zoradená mapa
- Fronta
Triedy:
- Zoznamy:
- Zoznam polí
- Vektor
- Prepojený zoznam
Sady:
- Sada hash
- Prepojená sada hash
- Sada stromov
Mapy:
- Hašovacia mapa
- Hash tabuľka
- TreeMap
- Prepojená hašovaná mapa
Poradie:
- Prioritný front
Otázka č. 26) Čo sa rozumie pod pojmom zoradené a zoradené v zbierkach?
Odpoveď:
Objednané: To znamená, že hodnoty, ktoré sú uložené v kolekcii, sú založené na hodnotách, ktoré sú pridané do kolekcie. Môžeme teda iterovať hodnoty zo zbierky v konkrétnom poradí.
Zoradené: Mechanizmy triedenia je možné aplikovať interne alebo externe tak, aby skupina objektov triedená v konkrétnej kolekcii bola založená na vlastnostiach objektov.
Otázka č. 27) Vysvetlite rôzne zoznamy dostupné v zbierke.
Odpoveď: Hodnoty pridané do zoznamu sú založené na pozícii indexu a je zoradený podľa pozície indexu. Duplikáty sú povolené.
Typy zoznamov sú:
a) Zoznam polí:
- Rýchla iterácia a rýchly náhodný prístup.
- Je to zoradený zber (podľa indexu) a nie je zoradený.
- Implementuje rozhranie s náhodným prístupom.
Príklad:
public class Fruits{ public static void main (String ( ) args){ ArrayList names=new ArrayList (); names.add (“apple”); names.add (“cherry”); names.add (“kiwi”); names.add (“banana”); names.add (“cherry”); System.out.println (names); } }
Výkon:
(Jablko, čerešňa, kivi, banán, čerešňa)
Z výstupu Array List udržiava poradie vloženia a prijíma duplikáty. Ale nie je to zoradené.
b) Vektor:
Je to rovnaké ako v zozname polí.
- Vektorové metódy sú synchronizované.
- Bezpečnosť závitu.
- Implementuje tiež náhodný prístup.
- Bezpečnosť závitu zvyčajne spôsobí zásah do výkonu.
Príklad:
public class Fruit { public static void main (String ( ) args){ Vector names = new Vector ( ); names.add (“cherry”); names.add (“apple”); names.add (“banana”); names.add (“kiwi”); names.add (“apple”); System.out.println (“names”); } }
Výkon:
(čerešňa, jablko, banán, kivi, jablko)
Vektor tiež udržuje poradie vloženia a prijíma duplikáty.
c) Prepojený zoznam:
- Prvky sú navzájom prepojené dvojnásobne.
- Výkon je pomalší ako v zozname polí.
- Dobrá voľba pre vloženie a vymazanie.
- V prostredí Java 5.0 podporuje bežné metódy frontu peek (), Pool (), Offer () atď.
Príklad:
public class Fruit { public static void main (String ( ) args){ Linkedlist names = new linkedlist ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Výkon:
(banán, čerešňa, jablko, kivi, banán)
Zachováva objednávku vloženia a prijíma duplikáty.
Otázka č. 28) Vysvetlite množinu a ich typy v zbierke.
Odpoveď: Dajte si záležať na jedinečnosti. Nepovoľuje duplikácie. Tu sa používa metóda „equals ()“ na určenie, či sú dva objekty identické alebo nie.
a) Hash Set:
- Neusporiadané a netriedené.
- Na vloženie hodnôt použije hašovací kód objektu.
- Použite, ak je požiadavka „žiadne duplikáty a nezaujíma vás objednávka“.
Príklad:
public class Fruit { public static void main (String( ) args){ HashSet names = new HashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Výkon:
(banán, čerešňa, kivi, jablko)
Nesleduje žiadnu objednávku. Duplikáty nie sú povolené.
b) Prepojená množina hash:
- Objednaná verzia sady hash je známa ako Prepojená sada hashov.
- Udržuje dvojnásobne prepojený zoznam všetkých prvkov.
- Použite to, keď sa vyžaduje objednávka iterácie.
Príklad:
public class Fruit { public static void main (String( ) args){ LinkedHashSet; names = new LinkedHashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Výkon:
(banán, čerešňa, jablko, kivi)
Udržuje poradie vloženia, v akom boli pridané do množiny. Duplikáty nie sú povolené.
c) Sada stromov:
- Je to jedna z dvoch triedených zbierok.
- Používa stromovú štruktúru „Read-Black“ a zaručuje, že prvky budú vo vzostupnom poradí.
- Stromovú množinu môžeme s konštruktorom zostrojiť pomocou porovnateľného (alebo) komparátora.
Príklad:
public class Fruits{ public static void main (String( )args) { Treeset names= new TreeSet( ) ; names.add(“cherry”); names.add(“banana”); names.add(“apple”); names.add(“kiwi”); names.add(“cherry”); System.out.println(names); } }
Výkon:
(jablko, banán, čerešňa, kivi)
TreeSet triedi prvky vo vzostupnom poradí. A duplikáty nie sú povolené.
Otázka č. 29) Vysvetlite mapu a jej typy.
Odpoveď: Mapa stará sa o jedinečný identifikátor. Môžeme namapovať jedinečný kľúč na konkrétnu hodnotu. Je to pár kľúč / hodnota. Na základe kľúča môžeme vyhľadať hodnotu. Rovnako ako množina, mapa tiež používa metódu „equals ()“ na určenie, či sú dva kľúče rovnaké alebo rozdielne.
Mapa je nasledujúcich typov:
a) Hash mapa:
- Neusporiadaná a netriedená mapa.
- Hashmap je dobrá voľba, keď sa nestaráme o objednávku.
- Umožňuje jeden nulový kľúč a viac nulových hodnôt.
Príklad:
Public class Fruit{ Public static void main(String( ) args){ HashMap names =new HashMap( ); names.put(“key1”,“cherry”); names.put (“key2”,“banana”); names.put (“key3”,“apple”); names.put (“key4”,“kiwi”); names.put (“key1”,“cherry”); System.out.println(names); } }
Výkon:
{key2 = banán, key1 = čerešňa, key4 = kivi, key3 = jablko}
Na mape nie sú povolené duplicitné kľúče.
Neuchováva žiadnu objednávku a nie je roztriedený.
b) Tabuľka hash:
- Rovnako ako vektorový kľúč sú synchronizované aj metódy triedy.
- Bezpečnosť závitu, a preto spomaľuje výkon.
- Nepripúšťa nič, čo je neplatné.
Príklad:
public class Fruit{ public static void main(String( )args){ Hashtable names =new Hashtable( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Výkon:
{key2 = jablko, key1 = čerešňa, key4 = kivi, key3 = banán}
Duplicitné kľúče nie sú povolené.
c) Prepojená mapa hash:
- Udržuje objednávku.
- Mapa pomalšie ako hash.
- Môžem očakávať rýchlejšiu iteráciu.
Príklad:
public class Fruit{ public static void main(String( ) args){ LinkedHashMap names =new LinkedHashMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Výkon:
{key2 = jablko, key1 = čerešňa, key4 = kivi, key3 = banán}
Duplicitné kľúče nie sú povolené.
d) TreeMap:
- Zoradená mapa.
- Rovnako ako množina stromov, môžeme pomocou konštruktoru vytvoriť poradie triedenia.
Príklad:
public class Fruit{ public static void main(String( )args){ TreeMap names =new TreeMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“banana”); names.put(“key3”,“apple”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Výkon:
{key1 = čerešňa, key2 = banán, key3 = jablko, key4 = kivi}
Je zoradený vzostupne na základe kľúča. Duplicitné kľúče nie sú povolené.
Otázka 30) Vysvetlite prioritný front.
Odpoveď: Rozhranie fronty
Prioritný front: Trieda prepojeného zoznamu bola vylepšená o implementáciu rozhrania frontu. Fronty je možné vybavovať prepojeným zoznamom. Účelom frontu je „Priorita dovnútra, priorita von“.
Preto sú prvky usporiadané buď prirodzene, alebo podľa komparátora. Poradie prvkov predstavuje ich relatívnu prioritu.
Otázka č. 31) Čo sa rozumie pod pojmom výnimka?
Odpoveď: Výnimkou je problém, ktorý sa môže vyskytnúť počas normálneho priebehu vykonávania. Metóda môže vyvolať výnimku, keď niečo nabehne za behu. Ak túto výnimku nebolo možné spracovať, vykonanie sa ukončí skôr, ako dokončí úlohu.
Ak sme spracovali výnimku, potom bude pokračovať normálny tok. Výnimky sú podtriedou java.lang.Exception.
Príklad spracovania výnimky:
try{ //Risky codes are surrounded by this block }catch(Exception e){ //Exceptions are caught in catch block }
Otázka č. 32) Aké sú typy výnimiek?
Odpoveď: Existujú dva typy výnimiek. Ďalej sú podrobne vysvetlené.
a) Začiarknutá výnimka:
Tieto výnimky kontroluje kompilátor v čase kompilácie. Triedy, ktoré rozširujú hodnú triedu okrem Runtime výnimky a chyby, sa nazývajú zaškrtnutá výnimka.
Skontrolované výnimky musia buď vyhlásiť výnimku pomocou kľúčového slova throws (alebo) obklopeného vhodným pokusom / chybou.
Napríklad, Výnimka ClassNotFound
b) Nekontrolovaná výnimka:
Tieto výnimky kompilátor počas doby kompilácie nekontroluje. Kompilátor nenúti tieto výnimky spracovávať. Obsahuje:
- Aritmetická výnimka
- Výnimka ArrayIndexOutOfBounds
Otázka č. 33) Aké sú rôzne spôsoby riešenia výnimiek?
Odpoveď: Ďalej sú vysvetlené dva rôzne spôsoby riešenia výnimiek:
a) Používanie try / catch:
Rizikový kód je obklopený blokom try. Ak dôjde k výnimke, zachytí ju blok chytenia, za ktorým nasleduje blok vyskúšania.
Príklad:
class Manipulation{ public static void main(String() args){ add(); } Public void add(){ try{ addition(); }catch(Exception e){ e.printStacktrace(); } } }
b) Vyhlásením hodu kľúčového slova:
Na konci metódy môžeme pomocou kľúčového slova throws vyhlásiť výnimku.
Príklad:
class Manipulation{ public static void main(String() args){ add(); } public void add() throws Exception{ addition(); } }
Otázka č. 34) Aké sú výhody spracovania výnimiek?
Odpoveď: Výhody sú nasledujúce:
- Normálny priebeh vykonávania sa neukončí, ak sa spracuje výnimka
- Problém môžeme identifikovať pomocou vyhlásenia o úlovku
Otázka č. 35) Čo sú kľúčové slová týkajúce sa výnimiek v Jave?
Odpoveď: Nižšie sú uvedené dve kľúčové slová spracovania výnimiek:
a) vyskúšať:
Keď je rizikový kód obklopený blokom try. Výnimku vyskytujúcu sa v bloku try zachytí blok catch. Za pokusom môže nasledovať úlovok (alebo) nakoniec (alebo) oboje. Ktorýkoľvek z blokov je ale povinný.
b) úlovok:
Nasleduje blok vyskúšania. Tu sú zachytené výnimky.
c) nakoniec:
Potom nasleduje príkaz try block (alebo) catch block. Tento blok sa vykoná bez ohľadu na výnimku. Tu sú teda všeobecne uvedené kódy na vyčistenie.
Otázka 36) Vysvetlite výnimočné šírenie.
Odpoveď: Výnimka sa najskôr vyvolá metódou, ktorá je v hornej časti zásobníka. Ak sa nezachytí, zobrazí metódu a presunie sa na predchádzajúcu metódu atď., Kým sa nenájdu.
Toto sa nazýva šírenie výnimiek.
Príklad:
public class Manipulation{ public static void main(String() args){ add(); } public void add(){ addition(); }
Z vyššie uvedeného príkladu zásobník vyzerá takto:
Ak dôjde k výnimke v prídavok () metóda sa nezachytí, potom sa presunie na metódu pridať () . Potom sa presunie do hlavný() metóda a potom zastaví tok vykonávania. Volá sa Výnimka šírenia.
Otázka č. 37) Aké je konečné kľúčové slovo v Jave?
Odpoveď:
Variabilný koniec: Keď je premenná vyhlásená za konečnú, hodnotu premennej už nie je možné zmeniť. Je to ako konštanta.
Príklad:
konečná int = 12;
Konečná metóda: Konečné kľúčové slovo v metóde nebolo možné prepísať. Ak je metóda označená ako konečná, nemôže byť prepísaná podtriedou.
Záverečná trieda: Ak je trieda vyhlásená za konečnú, potom ju nemožno zaradiť do podtriedy. Žiadna trieda nemôže rozšíriť výslednú triedu.
Otázka č. 38) Čo je vlákno?
Odpoveď: V Jave sa tok vykonávania nazýva Thread. Každý program Java má najmenej jedno vlákno nazývané hlavné vlákno, hlavné vlákno vytvára JVM. Užívateľ môže definovať svoje vlastné vlákna rozšírením triedy Thread (alebo) implementáciou rozhrania Runnable. Vlákna sa vykonávajú súčasne.
Príklad:
public static void main(String() args){//main thread starts here }
Otázka č. 39) Ako si vytvoríte vlákno v Jave?
Odpoveď: Existujú dva spôsoby, ako vytvoriť vlákno.
a) Trieda rozšírenia vlákna: Rozšírenie triedy Thread a prepísanie metódy spustenia. Vlákno je k dispozícii v súbore java.lang.thread.
Príklad:
Public class Addition extends Thread { public void run () { } }
Nevýhodou použitia triedy vlákien je, že nemôžeme rozširovať žiadne ďalšie triedy, pretože sme už triedu vlákien rozšírili. V našej triede môžeme preťažiť metódu run ().
b) Implementujte spustiteľné rozhranie: Ďalším spôsobom je implementácia spustiteľného rozhrania. Preto by sme mali zabezpečiť implementáciu metódy run (), ktorá je definovaná v rozhraní.
Príklad:
Public class Addition implements Runnable { public void run () { } }
Otázka č. 40) Vysvetlite metódu join ().
Odpoveď: Metóda join () sa používa na spojenie jedného vlákna s koncom aktuálne bežiaceho vlákna.
Príklad:
public static void main (String() args){ Thread t = new Thread (); t.start (); t.join (); }
Na základe vyššie uvedeného kódu začalo hlavné vlákno vykonávanie. Keď dosiahne kód t.start () potom ‘závit t’ spustí vlastný zásobník na vykonanie. JVM prepína medzi hlavným vláknom a ‘vláknom t’.
Akonáhle dosiahne kód t.join () potom sa vykoná samotné 'vlákno t' a dokončí sa jeho úloha, potom začne vykonávanie iba hlavné vlákno.
Je to nestatická metóda. Metóda Join () má preťaženú verziu. Môžeme teda spomenúť dobu trvania v metóde join () tiež „.s“.
Otázka č. 41) Čo robí metóda výťažku triedy Thread?
Odpoveď: Metóda yield () posúva aktuálne spustené vlákno do spustiteľného stavu a umožňuje vykonávanie ostatných vlákien. Takže vlákna s rovnakou prioritou majú šancu spustiť sa. Je to statická metóda. Neuvoľňuje žiadny zámok.
Metóda Yield () presunie vlákno späť iba do stavu Spustiteľné, a nie vlákno do bloku sleep (), wait () (alebo).
Príklad:
public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ Thread.yield(); } }
Otázka č. 42) Vysvetlite metódu wait ().
Odpoveď: počkaj () metóda slúži na to, aby vlákno čakalo v skupine čakajúcich. Keď sa počas vykonávania vlákna vykoná metóda wait (), okamžite sa vlákno vzdá zámku na objekte a ide do fondu čakajúcich. Metóda Wait () hovorí vláknu, aby čakalo určitý čas.
Potom sa vlákno prebudí po vyvolaní metódy notify () (alebo) notify all ().
Wait () a ďalšie vyššie uvedené metódy neposkytnú zámku objektu okamžite, kým aktuálne vykonávajúce vlákno nedokončí synchronizovaný kód. Väčšinou sa používa pri synchronizácii.
Príklad:
public static void main (String() args){ Thread t = new Thread (); t.start (); Synchronized (t) { Wait(); } }
Otázka č. 43) Rozdiel medzi metódou notify () a metódou notifyAll () v Jave.
Odpoveď: Rozdiely medzi metódou notify () a metódou notifyAll () sú uvedené nižšie:
upozorniť () | notifyAll () |
---|---|
Táto metóda sa používa na odoslanie signálu na prebudenie jedného vlákna v skupine čakajúcich. | Táto metóda vysiela signál na prebudenie všetkých vlákien v čakajúcej cievke. |
Otázka č. 44) Ako zastaviť vlákno v Jave? Vysvetlite metódu sleep () vo vlákne?
Odpoveď: Vlákno môžeme zastaviť pomocou nasledujúcich metód vlákna:
- Spí
- Čaká sa
- Zablokované
Spánok: Metóda sleep () sa používa na uspanie aktuálne vykonávaného vlákna po stanovenú dobu. Po prebudení vlákna sa môže presunúť do spustiteľného stavu. Na oddialenie vykonania o určité obdobie sa teda používa metóda sleep ().
Je to statická metóda.
Príklad:
Závit. Spánok (2000)
Takže oneskoruje vlákno do spánku o 2 milisekundy. Metóda sleep () vrhá neprerušovanú výnimku, a preto musíme blok obklopiť funkciou try / catch.
public class ExampleThread implements Runnable{ public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ try{ Thread.sleep(2000); }catch(InterruptedException e){ } }
Otázka č. 45) Kedy použiť triedu Runnable interface Vs Thread v Jave?
Odpoveď: Ak potrebujeme, aby naša trieda rozšírila niektoré ďalšie triedy iné ako vlákno, môžeme ísť s spustiteľným rozhraním, pretože v jave môžeme rozšíriť iba jednu triedu.
Ak nebudeme rozširovať žiadnu triedu, môžeme rozšíriť triedu vlákien.
Otázka č. 46) Rozdiel medzi metódou triedy vlákien start () a run ().
Odpoveď: Metóda Start () vytvorí nové vlákno a kód vo vnútri metódy run () sa vykoná v novom vlákne. Ak sme priamo zavolali metódu run (), potom sa nové vlákno nevytvorí a aktuálne vykonávajúce vlákno bude naďalej vykonávať metódu run ().
Otázka č. 47) Čo je multi-threading?
Odpoveď: Vykonáva sa viac vlákien súčasne. Každé vlákno začína svoj vlastný zásobník na základe priority toku (alebo) vlákien.
Príklad programu:
public class MultipleThreads implements Runnable { public static void main (String() args){//Main thread starts here Runnable r = new runnable (); Thread t=new thread (); t.start ();//User thread starts here Addition add=new addition (); } public void run(){ go(); }//User thread ends here }
Pri vykonávaní prvého riadku volá JVM hlavnú metódu a zásobník hlavných vlákien vyzerá nasledovne.
Len čo poprava dosiahne, t.start () riadok, potom sa vytvorí nové vlákno a vytvorí sa tiež nový zásobník pre vlákno. Teraz sa JVM prepne na nové vlákno a hlavné vlákno je späť do spustiteľného stavu.
Dva stohy vyzerajú, ako je znázornené nižšie.
Teraz užívateľské vlákno vykonalo kód vo vnútri metódy run ().
Po dokončení metódy run () sa JVM prepne späť na hlavné vlákno a užívateľské vlákno dokončí úlohu a zásobník zmizne.
JVM prepína medzi jednotlivými vláknami, kým nie sú obe vlákna dokončené. Toto sa nazýva Multi-threading.
Otázka č. 48) Vysvetlite životný cyklus vlákna v Jave.
Odpoveď: Vlákno má nasledujúce stavy:
- Nový
- Spustiteľné
- Beží
- Nespustiteľné (blokované)
- Ukončené
- Nový: V novom stave bola vytvorená inštancia vlákna, ale metóda start () ešte nie je vyvolaná. Teraz sa vlákno nepovažuje za živé.
- Spustiteľné : Vlákno je v spustiteľnom stave po vyvolaní metódy start (), ale pred vyvolaním metódy run (). Ale vlákno sa môže tiež vrátiť do spustiteľného stavu z čakania / spánku. V tomto stave sa vlákno považuje za živé.
- Beží : Vlákno je v spustenom stave po tom, čo zavolá metódu run (). Teraz vlákno začína vykonávanie.
- Nespustiteľné (Blokované): Vlákno je živé, ale nie je vhodné ho spustiť. Nie je v spustiteľnom stave, ale tiež sa po určitom čase vráti do spustiteľného stavu. Príklad: čakať, spať, blokovať.
- Ukončené : Akonáhle je metóda spustenia dokončená, je ukončená. Teraz vlákno nie je nažive.
Otázka č. 49) Čo je to synchronizácia?
Odpoveď: Synchronizácia umožňuje prístup k bloku kódu iba jedným vláknom. Ak sa k bloku kódu dostane viac vlákien, potom je na konci šanca na nepresné výsledky. Aby sme sa vyhli tomuto problému, môžeme zabezpečiť synchronizáciu citlivého bloku kódov.
Synchronizované kľúčové slovo znamená, že vlákno potrebuje kľúč na prístup k synchronizovanému kódu.
Zámky sú na jednotlivé objekty. Každý objekt Java má zámok. Zámok má iba jeden kľúč. Vlákno má prístup k synchronizovanej metóde iba vtedy, ak vlákno môže získať kľúč k objektom, ktoré sa majú uzamknúť.
otázky a odpovede na pohovor s webovými službami
Na tento účel používame kľúčové slovo „Synchronizované“.
Príklad:
public class ExampleThread implements Runnable{ public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ synchronized(object){ { } }
Otázka 50) Aká je nevýhoda synchronizácie?
Roky: Na implementáciu všetkých metód sa synchronizácia neodporúča. Pretože ak jedno vlákno pristupuje k synchronizovanému kódu, potom by malo čakať ďalšie vlákno. Na druhom konci teda dosahuje pomalý výkon.
Otázka č. 51) Čo sa rozumie pod serializáciou?
Odpoveď: Prevod súboru na bajtový prúd sa nazýva Serializácia. Objekty v súbore sa z bezpečnostných dôvodov prevedú na bajty. Z tohto dôvodu musíme implementovať rozhranie java.io.Serializovateľné. Nemá žiadnu metódu na definovanie.
Premenné, ktoré sú označené ako prechodné, nebudú súčasťou serializácie. Takže môžeme preskočiť serializáciu premenných v súbore pomocou prechodného kľúčového slova.
Viac informácií = >> Serializovateľné a klonovateľné
Otázka č. 52) Aký je účel prechodnej premennej?
Odpoveď: Prechodné premenné nie sú súčasťou procesu serializácie. Počas deserializácie sú hodnoty prechodných premenných nastavené na predvolenú hodnotu. Nepoužíva sa so statickými premennými.
Príklad:
prechodné int čísla;
Otázka č. 53) Ktoré metódy sa používajú počas procesu serializácie a deserializácie?
Odpoveď: Triedy ObjectOutputStream a ObjectInputStream sú vyššej úrovne java.io. balíček. Použijeme ich s triedami nižšej úrovne FileOutputStream a FileInputStream.
ObjectOutputStream.writeObject —-> Serializujte objekt a zapíšte serializovaný objekt do súboru.
ObjectInputStream.readObject -> Číta súbor a deserializuje objekt.
Aby mohol byť objekt serializovaný, musí implementovať serializovateľné rozhranie. Ak nadtrieda implementuje Serializable, potom bude podtrieda automaticky serializovateľná.
Otázka č. 54) Aký je účel prchavej premennej?
Odpoveď: Hodnoty prchavých premenných sa vždy čítajú z hlavnej pamäte, nie z pamäte cache vlákna. Používa sa hlavne počas synchronizácie. Je použiteľné iba pre premenné.
Príklad:
volatilné int číslo;
Otázka č. 55) Rozdiel medzi serializáciou a deserializáciou v Jave.
Odpoveď: Toto sú rozdiely medzi serializáciou a deserializáciou v Jave:
Serializácia | Deserializácia |
---|---|
Serializácia je proces, ktorý sa používa na prevod objektov na bajtový prúd | Deserializácia je opačný proces serializácie, kedy môžeme objekty dostať späť z bajtového toku. |
Objekt sa serializuje tak, že sa doň zapíše ObjectOutputStream. | Objekt sa deserializuje načítaním z objektu ObjectInputStream. |
Otázka č. 56) Čo je SerialVersionUID?
Odpoveď: Kedykoľvek je objekt serializovaný, je na ňom pečiatka s identifikačným číslom verzie pre triedu objektov. Toto ID sa nazýva SerialVersionUID. Toto sa používa počas deserializácie na overenie, či je odosielateľ a prijímač kompatibilný so serializáciou.
Záver
To sú niektoré základné otázky týkajúce sa rozhovoru s JAVOU, ktoré pokrývajú základné aj pokročilé koncepty Javy pre programovanie, ako aj rozhovory s vývojármi. Na tieto otázky odpovedali naši odborníci na JAVU.
Dúfam, že vám tento výukový program poskytne podrobný prehľad o konceptoch základného kódovania JAVA. Vyššie uvedené vysvetlenia skutočne obohatia vaše vedomosti a rozšíria vaše pochopenie programovania v jazyku JAVA.
Pripravte sa na sebavedomý rozhovor s JAVA.