top 50 core java interview questions
Nejčastěji kladené otázky a odpovědi týkající se rozhovoru Java s příklady:
V tomto tutoriálu jsme se zabývali téměř 50+ důležitými otázkami týkajícími se rozhovorů v jazyce Java pro nováčky a zkušené kandidáty.
Tento příspěvek k JAVA Interview Questions je připraven, aby vám pomohl pochopit základní pojmy programování v jazyce Java pro účely pohovoru. Zde jsou vysvětleny všechny důležité koncepty JAVA s příklady pro vaše snadné pochopení.
Tento výukový program zahrnuje témata JAVA, jako jsou základní definice jazyka Java, koncepty OOP, specifikátory přístupu, kolekce, výjimky, vlákna, serializace atd., S příklady, díky nimž se můžete dokonale připravit sebevědomě čelit jakémukoli rozhovoru JAVA.
Nejoblíbenější otázky a odpovědi na rozhovor v jazyce Java
Níže je uveden komplexní seznam nejdůležitějších a nejčastěji kladených otázek týkajících se rozhovorů se základními a pokročilými programovacími jazyky Java s podrobnými odpověďmi.
Otázka č. 1) Co je JAVA?
Odpovědět: Java je programovací jazyk na vysoké úrovni a je nezávislý na platformě.
Java je sbírka objektů. Byl vyvinut společností Sun Microsystems. Existuje spousta aplikací, webů a her vyvinutých pomocí Java.
Otázka č. 2) Jaké jsou vlastnosti JAVA?
Odpověď: Funkce Java jsou následující:
- Koncepty OOP
- Objektově orientovaný
- Dědictví
- Zapouzdření
- Polymorfismus
- Abstrakce
- Nezávislé na platformě: Jediný program funguje na různých platformách bez jakýchkoli modifikací.
- Vysoký výkon: JIT (kompilátor Just In Time) umožňuje vysoký výkon v Javě. JIT převede bytecode do strojového jazyka a poté JVM zahájí provádění.
- Vícevláknové: Tok provádění je známý jako vlákno. JVM vytvoří vlákno, které se nazývá hlavní vlákno. Uživatel může vytvořit více vláken rozšířením třídy vlákna nebo implementací rozhraní Runnable.
Otázka č. 3) Jak Java umožňuje vysoký výkon?
Odpovědět: Java používá kompilátor Just In Time k zajištění vysokého výkonu. Používá se k převodu instrukcí na bytové kódy.
Otázka č. 4) Pojmenujte prostředí Java IDE?
Odpovědět: Eclipse a NetBeans jsou IDE prostředí JAVA.
Otázka č. 5) Co máte na mysli pod Constructor?
Odpověď: Konstruktor lze podrobně vysvětlit získanými body:
- Když je v programu vytvořen nový objekt, vyvolá se konstruktor odpovídající třídě.
- Konstruktor je metoda, která má stejný název jako název třídy.
- Pokud uživatel implicitně nevytvoří konstruktor, bude vytvořen výchozí konstruktor.
- Konstruktor může být přetížen.
- Pokud uživatel vytvořil konstruktor s parametrem, měl by vytvořit jiný konstruktor explicitně bez parametru.
Otázka č. 6) Co je míněno místní proměnnou a proměnnou instance?
Odpovědět:
Místní proměnné jsou definovány v metodě a rozsahu proměnných, které existují uvnitř samotné metody.
Proměnná instance je definován uvnitř třídy a mimo metodu a rozsah proměnných existuje v celé třídě.
Otázka č. 7) Co je to třída?
Odpovědět: Všechny kódy Java jsou definovány ve třídě. Má proměnné a metody.
Proměnné jsou atributy, které definují stav třídy.
Metody jsou místem, kde je třeba provést přesnou obchodní logiku. Obsahuje sadu příkazů (nebo) pokynů k uspokojení konkrétního požadavku.
Pří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) Co je to objekt?
Odpovědět: Instance třídy se nazývá objekt. Objekt má stav a chování.
Kdykoli JVM načte klíčové slovo „new ()“, vytvoří instanci dané třídy.
Příklad:
public class Addition{ public static void main(String() args){ Addion add = new Addition();//Object creation } }
Výše uvedený kód vytvoří objekt pro třídu přidání.
Otázka č. 9) Jaké jsou koncepty OOP?
Odpověď: Koncepty OOP zahrnují:
- Dědictví
- Zapouzdření
- Polymorfismus
- Abstrakce
- Rozhraní
Doporučené čtení = >> Nejlepší otázky týkající se rozhovorů s OOP
Otázka č. 10) Co je dědičnost?
Odpovědět: Dědičnost znamená, že se jedna třída může rozšířit do jiné třídy. Aby mohly být kódy znovu použity z jedné třídy do jiné třídy. Existující třída je známá jako třída Super, zatímco odvozená třída je známá jako podtřída.
Příklad:
Super class: public class Manupulation(){ } Sub class: public class Addition extends Manipulation(){ }
Dědičnost je použitelná pouze pro veřejné a chráněné členy. Soukromé členy nelze zdědit.
Otázka č. 11) Co je zapouzdření?
Odpověď: Účel zapouzdření:
- Chrání kód před ostatními.
- Udržovatelnost kódu.
Příklad:
Deklarujeme „a“ jako celočíselnou proměnnou a nemělo by to být záporné.
public class Addition(){ int a=5; }
Pokud někdo změní přesnou proměnnou jako „ a = -5 ' pak je to špatné.
Abychom problém překonali, musíme postupovat podle následujících kroků:
- Proměnnou můžeme označit jako soukromou nebo chráněnou.
- Použijte veřejné přístupové metody, například set and get.
Takže výše uvedený kód lze upravit jako:
public class Addition(){ private int a = 5; //Here the variable is marked as private }
Níže uvedený kód ukazuje getter a setter.
Podmínky lze zadat při nastavování proměnné.
get A(){ } set A(int a){ if(a>0){// Here condition is applied ......... } }
Pro zapouzdření musíme všechny proměnné instance učinit soukromými a vytvořit pro tyto proměnné setter a getter. Což zase přiměje ostatní, aby raději zavolali nastavovačům, než aby měli přímý přístup k datům.
Otázka č. 12) Co je to polymorfismus?
Odpovědět: Polymorfismus znamená mnoho forem.
Jeden objekt může odkazovat na nadtřídu nebo podtřídu v závislosti na typu odkazu, který se nazývá polymorfismus.
Pří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(); } }
Pomocí referenčního typu Manipulation můžeme zavolat metodu Class třídy „add ()“. Tato schopnost se nazývá polymorfismus. Polymorfismus je použitelný pro převažující a ne pro přetížení .
Otázka č. 13) Co je míněno přepsáním metody?
Odpověď: K přepsání metody dojde, pokud metoda podtřídy splňuje níže uvedené podmínky pomocí metody Superclass:
- Název metody by měl být stejný
- Argument by měl být stejný
- Návratový typ by měl být také stejný
Klíčovou výhodou přepsání je, že podtřída může poskytnout některé konkrétní informace o daném typu podtřídy než nadtřída.
Pří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 () metoda volá metodu add () v podtřídě a ne nadřazenou třídu. Přepíše tedy metodu super třídy a je známá jako přepsání metody.
Otázka č. 14) Co se rozumí přetížením?
Odpovědět: Přetížení metody se děje pro různé třídy nebo v rámci stejné třídy.
Pro přetížení metody by metoda podtřídy měla splňovat níže uvedené podmínky s metodou Super-class (nebo) metodami ve stejné třídě samotné:
- Stejný název metody
- Různé typy argumentů
- Mohou existovat různé typy vrácení
Pří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(); } }
Zde má metoda add () různé parametry ve třídě Addition je přetížena ve stejné třídě jako u super třídy.
Poznámka: Polymorfismus není použitelný pro přetížení metody.
Otázka č. 15) Co se rozumí rozhraním?
Odpovědět: V Javě nelze dosáhnout více dědičností. K překonání tohoto problému je představen koncept rozhraní.
Rozhraní je šablona, která má pouze deklarace metod a ne implementaci metody.
Příklad:
Public abstract interface IManupulation{ //Interface declaration Public abstract void add();//method declaration public abstract void subtract(); }
- Všechny metody v rozhraní jsou interně veřejná abstraktní neplatnost .
- Všechny proměnné v rozhraní jsou interně veřejné statické finále to jsou konstanty.
- Třídy mohou implementovat rozhraní a ne se rozšiřují.
- Třída, která implementuje rozhraní, by měla poskytovat implementaci pro všechny metody deklarované v rozhraní.
public class Manupulation implements IManupulation{ //Manupulation class uses the interface Public void add(){ …………… } Public void subtract(){ ……………. } }
Otázka č. 16) Co je míněno třídou Abstract?
Odpovědět: Můžeme vytvořit třídu Abstract pomocí klíčového slova „Abstract“ před názvem třídy. Abstraktní třída může mít jak „abstraktní“ metody, tak i „neabstrahující“ metody, které jsou konkrétní třídou.
Abstraktní metoda:
Metoda, která má pouze deklaraci a ne implementaci, se nazývá abstraktní metoda a má klíčové slovo s názvem „abstract“. Deklarace končí středníkem.
Příklad:
public abstract class Manupulation{ public abstract void add();//Abstract method declaration Public void subtract(){ } }
- Abstraktní třída může mít také jinou než abstraktní metodu.
- Konkrétní podtřída, která rozšiřuje třídu Abstract, by měla poskytovat implementaci pro abstraktní metody.
Otázka č. 17) Rozdíl mezi polem a seznamem polí.
Odpovědět: Rozdíl mezi polem a seznamem polí lze pochopit z následující tabulky:
Pole | Seznam polí |
---|---|
Velikost by měla být uvedena v době deklarace pole. Řetězec () name = nový Řetězec (2) | Velikost nemusí být vyžadována. Dynamicky mění velikost. ArrayList name = nový ArrayList |
Chcete-li vložit objekt do pole, musíme určit index. jméno (1) = „kniha“ | Není vyžadován žádný index. name.add („kniha“) |
Pole není typově parametrizováno | ArrayList v Javě 5.0 jsou parametrizovány. Např .: Tato úhlová závorka je typový parametr, což znamená seznam String. |
Otázka č. 18) Rozdíl mezi řetězcem, tvorcem řetězců a řetězcovou vyrovnávací pamětí.
Odpovědět:
Tětiva: Řetězcové proměnné jsou uloženy ve „fondu konstantních řetězců“. Jakmile odkaz na řetězec změní starou hodnotu, která existuje ve „fondu konstantních řetězců“, nelze jej vymazat.
Příklad:
Název řetězce = „kniha“;
Konstantní fond řetězců
.
Pokud se název-hodnota změnila z „knihy“ na „pero“.
Konstantní fond řetězců
Pak starší hodnota zůstane ve fondu konstantních řetězců.
String Buffer:
- Zde jsou řetězcové hodnoty uloženy v zásobníku. Pokud se hodnoty změní, nahradí nová hodnota starší hodnotu.
- Řetězcová vyrovnávací paměť je synchronizována, což je bezpečné pro vlákna.
- Výkon je pomalejší než String Builder.
Příklad:
Název řetězce Buffer = „kniha“;
Jakmile je hodnota názvu změněna na „pero“, pak je „kniha“ v zásobníku vymazána.
String Builder:
To je stejné jako String Buffer s výjimkou String Builder, který není bezpečně navlečen, ale není synchronizován. Je zřejmé, že výkon je rychlý.
Otázka č. 19) Vysvětlete specifikátory veřejného a soukromého přístupu.
Odpovědět: Metody a proměnné instance jsou známé jako členové.
Veřejnost:
Veřejní členové jsou viditelní ve stejném balíčku i v externím balíčku, který je pro ostatní balíčky.
Veřejní členové třídy A jsou viditelní pro třídu B (stejný balíček) i pro třídu C (různé balíčky).
Soukromé:
Soukromí členové jsou viditelní pouze ve stejné třídě a ne pro ostatní třídy ve stejném balíčku, stejně jako třídy ve vnějších balíčcích.
Soukromí členové ve třídě A jsou viditelní pouze v této třídě. Je neviditelný pro třídu B i třídu C.
Otázka č. 20) Rozdíl mezi výchozími a chráněnými specifikátory přístupu.
Odpovědět:
Výchozí: Metody a proměnné deklarované ve třídě bez specifikátorů přístupu se nazývají výchozí.
Výchozí členové ve třídě A jsou viditelní pro ostatní třídy, které jsou uvnitř balíčku, a neviditelné pro třídy, které jsou mimo balíček.
Takže členové třídy A jsou viditelní pro třídu B a neviditelní pro třídu C.
Chráněný:
.
Chráněno je stejné jako výchozí, ale pokud se třída rozšíří, je viditelná, i když je mimo balíček.
Členové třídy A jsou viditelní pro třídu B, protože je uvnitř balíčku. Pro třídu C je to neviditelné, ale pokud třída C rozšiřuje třídu A, pak jsou členové viditelní pro třídu C, i když je mimo balíček.
Otázka č. 21) Rozdíl mezi HashMap a HashTable.
Odpovědět: Rozdíl mezi HashMap a HashTable lze vidět níže:
HashMap | HashTable |
---|---|
Metody nejsou synchronizovány | Klíčové metody jsou synchronizovány |
Ne bezpečnost nití | Bezpečnost závitu |
Iterátor se používá k iteraci hodnot | Enumerátor se používá k iteraci hodnot |
Umožňuje jeden nulový klíč a více nulových hodnot | Nepovoluje nic, co je neplatné |
Výkon je vysoký než HashTable | Výkon je pomalý |
Otázka č. 22) Rozdíl mezi HashSet a TreeSet.
Odpovědět: Rozdíl mezi HashSet a TreeSet lze vidět níže:
HashSet | Sada stromů |
---|---|
Vložené prvky jsou v náhodném pořadí | Udržuje prvky v seřazeném pořadí |
Dokáže ukládat nulové objekty | Nelze uložit nulové objekty |
Výkon je rychlý | Výkon je pomalý |
Otázka č. 23) Rozdíl mezi abstraktní třídou a rozhraním.
Odpověď: Rozdíly mezi abstraktní třídou a rozhraním jsou následující:
Abstraktní třída:
- Abstraktní třídy mají výchozí konstruktor a ten se volá vždy, když je vytvořena instance konkrétní podtřídy.
- Obsahuje jak abstraktní metody, tak i jiné než abstraktní metody.
- Třída, která rozšiřuje třídu Abstract, by neměla vyžadovat implementaci všech metod, pouze konkrétní metody je třeba implementovat v konkrétní podtřídě.
- Abstraktní třída obsahuje proměnné instance.
Rozhraní:
- Nemá žádný konstruktor a nelze jej vytvořit instanci.
- Samotná abstraktní metoda by měla být deklarována.
- Třídy, které implementují rozhraní, by měly poskytovat implementaci pro všechny metody.
- Rozhraní obsahuje pouze konstanty.
Q # 24) Jaký je význam sbírek v Javě?
Odpovědět: Kolekce je rozhraní, které je navrženo k ukládání objektů a manipulaci s designem k ukládání objektů.
Kolekce se používají k provádění následujících operací:
- Hledání
- Třídění
- Manipulace
- Vložení
- Vymazání
Skupina objektů je známá jako sbírky. Všechny třídy a rozhraní pro sběr jsou k dispozici v balíčku Java util.
Otázka č. 25) Jaké jsou všechny třídy a rozhraní, které jsou k dispozici ve sbírkách?
Odpovědět: Níže jsou uvedeny třídy a rozhraní, která jsou k dispozici v kolekcích:
Rozhraní:
- Sbírka
- Seznam
- Soubor
- Mapa
- Seřazená sada
- Seřazená mapa
- Fronta
Třídy:
- Seznamy:
- Seznam polí
- Vektor
- Spojový seznam
Sady:
- Sada hash
- Propojená sada hash
- Sada stromů
Mapy:
- Hash mapa
- Tabulka hash
- TreeMap
- Propojená hašovaná mapa
Fronta:
- Prioritní fronta
Otázka č. 26) Co se rozumí pojmem Seřazeno a seřazeno ve sbírkách?
Odpovědět:
Objednáno: To znamená, že hodnoty, které jsou uloženy v kolekci, jsou založeny na hodnotách, které jsou přidány do kolekce. Takže můžeme iterovat hodnoty z kolekce v určitém pořadí.
Seřazeno: Mechanismy řazení lze použít interně nebo externě, takže skupina objektů tříděných v konkrétní kolekci je založena na vlastnostech objektů.
Otázka č. 27) Vysvětlete různé seznamy dostupné ve sbírce.
Odpovědět: Hodnoty přidané do seznamu jsou založeny na pozici indexu a je seřazen podle pozice indexu. Duplikáty jsou povoleny.
Typy seznamů jsou:
a) Seznam polí:
- Rychlá iterace a rychlý náhodný přístup.
- Je to uspořádaná kolekce (podle indexu) a není tříděna.
- Implementuje rozhraní s náhodným přístupem.
Pří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ýstup:
(Jablko, třešeň, kiwi, banán, třešeň)
Z výstupu udržuje seznam polí pořadí vkládání a přijímá duplikáty. Ale není to tříděno.
b) Vektor:
čím otevřít XML soubory
Je to stejné jako v seznamu polí.
- Vektorové metody jsou synchronizovány.
- Bezpečnost závitu.
- Implementuje také náhodný přístup.
- Bezpečnost vlákna obvykle způsobí výkonnostní zásah.
Pří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ýstup:
(třešeň, jablko, banán, kiwi, jablko)
Vektor také udržuje pořadí vložení a přijímá duplikáty.
c) Propojený seznam:
- Prvky jsou navzájem propojeny dvojnásobně.
- Výkon je pomalejší než seznam polí.
- Dobrá volba pro vkládání a mazání.
- V Javě 5.0 podporuje běžné metody fronty peek (), Pool (), Offer () atd.
Pří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ýstup:
(banán, třešeň, jablko, kiwi, banán)
Udržuje pořadí vložení a přijímá duplikáty.
Otázka č. 28) Vysvětlete sadu a jejich typy ve sbírce.
Odpovědět: Set se stará o jedinečnost. Nepovoluje duplikace. Zde se používá metoda „equals ()“ k určení, zda jsou dva objekty totožné nebo ne.
a) Hash Set:
- Neuspořádané a netříděné.
- K vložení hodnot používá hash kód objektu.
- Tuto možnost použijte, pokud je požadavek „žádné duplikáty a nestaráte se o objednávku“.
Pří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ýstup:
(banán, třešeň, kiwi, jablko)
Nesleduje žádnou objednávku vložení. Duplikáty nejsou povoleny.
b) Propojená sada hash:
- Objednaná verze sady hash je známá jako propojená sada hash.
- Udržuje dvojnásobně propojený seznam všech prvků.
- Tuto možnost použijte, když je požadována iterační objednávka.
Pří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ýstup:
(banán, třešeň, jablko, kiwi)
Udržuje pořadí vložení, ve kterém byly přidány do sady. Duplikáty nejsou povoleny.
c) Stromová sada:
- Je to jedna ze dvou tříděných sbírek.
- Používá stromovou strukturu „Read-Black“ a zaručuje, že prvky budou ve vzestupném pořadí.
- Můžeme sestavit stromovou sadu s konstruktorem pomocí srovnatelného (nebo) komparátoru.
Pří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ýstup:
(jablko, banán, třešeň, kiwi)
TreeSet seřadí prvky ve vzestupném pořadí. A duplikáty nejsou povoleny.
Otázka č. 29) Vysvětlete mapu a její typy.
Odpověď: Mapa stará se o jedinečný identifikátor. Můžeme namapovat jedinečný klíč na konkrétní hodnotu. Jedná se o pár klíč / hodnota. Můžeme vyhledat hodnotu na základě klíče. Stejně jako sada používá mapa také metodu „equals ()“ k určení, zda jsou dva klíče stejné nebo odlišné.
Mapa je následujících typů:
a) Hash mapa:
- Neuspořádaná a netříděná mapa.
- Hashmap je dobrá volba, když se nestaráme o objednávku.
- Umožňuje jeden nulový klíč a více nulových hodnot.
Pří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ýstup:
{key2 = banán, key1 = třešeň, key4 = kiwi, key3 = jablko}
V Mapě nejsou povoleny duplicitní klíče.
Neudržuje žádnou objednávku vložení a není roztříděno.
b) Tabulka hash:
- Stejně jako vektorový klíč jsou synchronizovány metody třídy.
- Bezpečnost závitu, a proto zpomaluje výkon.
- Nepovoluje nic, co je neplatné.
Pří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ýstup:
{key2 = apple, key1 = cherry, key4 = kiwi, key3 = banana}
Duplicitní klíče nejsou povoleny.
C) Propojená mapa hash:
- Udržuje objednávku vložení.
- Pomalejší než Hash mapa.
- Mohu očekávat rychlejší iteraci.
Pří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ýstup:
{key2 = apple, key1 = cherry, key4 = kiwi, key3 = banana}
Duplicitní klíče nejsou povoleny.
d) TreeMap:
- Seřazená mapa.
- Stejně jako stromová sada můžeme pomocí konstruktoru vytvořit pořadí řazení.
Pří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ýstup:
{key1 = třešeň, key2 = banán, key3 = jablko, key4 = kiwi}
Je tříděno vzestupně podle klíče. Duplicitní klíče nejsou povoleny.
Otázka č. 30) Vysvětlete prioritní frontu.
Odpověď: Rozhraní fronty
Prioritní fronta: Propojená třída seznamu byla vylepšena o implementaci rozhraní fronty. Fronty lze zpracovávat pomocí propojeného seznamu. Účel fronty je „Prioritní vstup, prioritní výstup“.
Proto jsou prvky seřazeny buď přirozeně, nebo podle komparátoru. Pořadí prvků představuje jejich relativní prioritu.
Otázka č. 31) Co je míněno výjimkou?
Odpovědět: Výjimka je problém, který může nastat během normálního toku provádění. Metoda může vyvolat výjimku, když za běhu něco naříká. Pokud tuto výjimku nelze zpracovat, bude spuštění ukončeno před dokončením úkolu.
Pokud jsme zpracovali výjimku, pak pokračuje normální tok. Výjimky jsou podtřídou java.lang.Exception.
Příklad zpracování výjimky:
try{ //Risky codes are surrounded by this block }catch(Exception e){ //Exceptions are caught in catch block }
Otázka č. 32) Jaké jsou typy výjimek?
Odpovědět: Existují dva typy výjimek. Níže jsou podrobně vysvětleny.
a) Zaškrtnutá výjimka:
Tyto výjimky kontroluje kompilátor v době kompilace. Třídy, které rozšiřují třídu Throwable kromě Runtime výjimky a chyby, se nazývají zaškrtnutá výjimka.
Zaškrtnuté výjimky musí buď deklarovat výjimku pomocí throws klíčového slova (nebo) obklopeného příslušným try / catch.
Například, Výjimka ClassNotFound
b) Nekontrolovaná výjimka:
Tyto výjimky kompilátor během doby kompilace nekontroluje. Kompilátor nenutí tyto výjimky zpracovávat. To zahrnuje:
- Aritmetická výjimka
- Výjimka ArrayIndexOutOfBounds
Otázka č. 33) Jaké jsou různé způsoby řešení výjimek?
Odpovědět: Níže jsou vysvětleny dva různé způsoby zpracování výjimek:
a) Použití try / catch:
Rizikový kód je obklopen blokem try. Pokud dojde k výjimce, pak je zachycena blokem catch, za nímž následuje blok try.
Příklad:
class Manipulation{ public static void main(String() args){ add(); } Public void add(){ try{ addition(); }catch(Exception e){ e.printStacktrace(); } } }
b) Prohlášením vrhá klíčové slovo:
Na konci metody můžeme deklarovat výjimku pomocí throws - klíčového slova.
Příklad:
class Manipulation{ public static void main(String() args){ add(); } public void add() throws Exception{ addition(); } }
Otázka č. 34) Jaké jsou výhody zpracování výjimek?
Odpověď: Výhody jsou následující:
- Normální průběh provádění nebude ukončen, pokud dojde ke zpracování výjimky
- Problém můžeme identifikovat pomocí deklarace úlovku
Otázka č. 35) Co jsou klíčová slova pro zpracování výjimek v Javě?
Odpověď: Níže jsou uvedena dvě klíčová slova pro zpracování výjimek:
pokus:
Když je rizikový kód obklopen blokem try. Výjimka vyskytující se v bloku try je zachycena blokem catch. Po pokusu může následovat úlovek (nebo) konečně (nebo) obojí. Ale kterýkoli z bloků je povinný.
b) úlovek:
Následuje blok vyzkoušení. Zde jsou zachyceny výjimky.
c) konečně:
Poté následuje buď try block (nebo) catch block. Tento blok se provede bez ohledu na výjimku. Zde jsou obvykle uvedeny kódy pro vyčištění.
Otázka č. 36) Vysvětlete šíření výjimek.
Odpovědět: Výjimka je nejprve vyvolána z metody, která je v horní části zásobníku. Pokud se nezachytí, zobrazí metodu a přejde na předchozí metodu atd., Dokud se nedostanou.
Tomu se říká šíření výjimek.
Příklad:
public class Manipulation{ public static void main(String() args){ add(); } public void add(){ addition(); }
Z výše uvedeného příkladu vypadá zásobník takto:
Pokud dojde k výjimce v přidání() metoda není zachycena, pak se přesune na metodu přidat() . Poté se přesune do hlavní() metoda a poté zastaví tok provádění. Říká se tomu Výjimka šíření.
otázky týkající se rozhovoru unix pro podporu produkce
Otázka č. 37) Jaké je konečné klíčové slovo v Javě?
Odpovědět:
Variabilní konec: Jakmile je proměnná deklarována jako konečná, její hodnotu nelze změnit. Je to jako konstanta.
Příklad:
konečná int = 12;
Konečná metoda: Konečné klíčové slovo v metodě nelze přepsat. Pokud je metoda označena jako konečná, pak ji podtřída nemůže přepsat.
Závěrečná třída: Pokud je třída prohlášena za konečnou, nemohla by být zařazena do podtřídy. Žádná třída nemůže rozšířit finální třídu.
Otázka č. 38) Co je vlákno?
Odpovědět: V Javě se tok provádění nazývá Thread. Každý java program má alespoň jedno vlákno zvané hlavní vlákno, hlavní vlákno je vytvořeno JVM. Uživatel může definovat svá vlastní vlákna rozšířením třídy Thread (nebo) implementací rozhraní Runnable. Vlákna jsou prováděna souběžně.
Příklad:
public static void main(String() args){//main thread starts here }
Otázka č. 39) Jak vytvoříte vlákno v Javě?
Odpovědět: Existují dva způsoby, jak vytvořit vlákno.
a) Třída rozšíření vlákna: Rozšíření třídy Thread a přepsání metody spuštění. Vlákno je k dispozici v java.lang.thread.
Příklad:
Public class Addition extends Thread { public void run () { } }
Nevýhodou použití třídy podprocesů je, že nemůžeme rozšířit žádné další třídy, protože jsme již rozšířili třídu podprocesů. V naší třídě můžeme přetížit metodu run ().
b) Implementujte spustitelné rozhraní: Dalším způsobem je implementace spustitelného rozhraní. K tomu bychom měli poskytnout implementaci metody run (), která je definována v rozhraní.
Příklad:
Public class Addition implements Runnable { public void run () { } }
Otázka č. 40) Vysvětlete metodu join ().
Odpovědět: Metoda join () se používá ke spojení jednoho vlákna s koncem aktuálně běžícího vlákna.
Příklad:
public static void main (String() args){ Thread t = new Thread (); t.start (); t.join (); }
Na základě výše uvedeného kódu hlavní vlákno zahájilo provádění. Když dosáhne kódu t.start () potom 'thread t' spustí vlastní stack pro provedení. JVM přepíná mezi hlavním vláknem a „vláknem t“.
Jakmile dosáhne kódu t.join () poté se provede pouze „vlákno t“ a dokončí svůj úkol, poté spustí spuštění pouze hlavní vlákno.
Jedná se o nestatickou metodu. Metoda Join () má přetíženou verzi. Můžeme tedy zmínit dobu trvání v metodě join () také „.s“.
Otázka č. 41) Co dělá metoda výtěžku třídy Thread?
Odpovědět: Metoda yield () přesune aktuálně spuštěné vlákno do spustitelného stavu a umožňuje provedení dalších vláken. Takže vlákna se stejnou prioritou mají šanci na spuštění. Je to statická metoda. Neuvolňuje žádný zámek.
Metoda Yield () přesune vlákno zpět pouze do stavu Runnable, a nikoli vlákno do bloku sleep (), wait () (nebo).
Příklad:
public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ Thread.yield(); } }
Otázka č. 42) Vysvětlete metodu wait ().
Odpověď: počkat () metoda se používá k tomu, aby vlákno počkalo ve fondu čekání. Když je metoda Wait () spuštěna během provádění podprocesu, podproces se okamžitě vzdá zámku objektu a přejde do čekajícího fondu. Metoda Wait () řekne vláknu, aby počkalo po určitou dobu.
Poté se vlákno probudí po vyvolání metody notifikovat () (nebo) oznámit vše ().
Wait () a další výše uvedené metody neposkytují zámek objektu okamžitě, dokud aktuálně provádějící vlákno nedokončí synchronizovaný kód. Většinou se používá při synchronizaci.
Příklad:
public static void main (String() args){ Thread t = new Thread (); t.start (); Synchronized (t) { Wait(); } }
Otázka č. 43) Rozdíl mezi metodou oznámit () a oznámitAll () v Javě.
Odpověď: Rozdíly mezi metodou notify () a metodou notifyAll () jsou uvedeny níže:
oznámit() | notifyAll () |
---|---|
Tato metoda se používá k odeslání signálu k probuzení jednoho vlákna v čekajícím fondu. | Tato metoda odesílá signál k probuzení všech vláken v čekající cívce. |
Otázka č. 44) Jak zastavit vlákno v Javě? Vysvětlete metodu sleep () ve vlákně?
Odpovědět: Vlákno můžeme zastavit pomocí následujících metod vlákna:
- Spící
- Čekání
- Blokováno
Spát: Metoda Sleep () se používá k usnutí aktuálně provádějícího vlákna po danou dobu. Jakmile se vlákno probudí, může se přesunout do spustitelného stavu. Metoda sleep () se tedy používá ke zpoždění provádění o určité období.
Je to statická metoda.
Příklad:
Vlákno. Spánek (2000)
Zpoždění vlákna se tak posune o 2 milisekundy. Metoda Sleep () vyvolá nepřerušovanou výjimku, proto musíme blok obklopit pomocí 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) Kdy použít třídu Runnable Interface Vs Thread v Javě?
Odpovědět: Pokud potřebujeme, aby naše třída rozšířila i jiné třídy než vlákno, můžeme jít s runnable rozhraním, protože v Javě můžeme rozšířit pouze jednu třídu.
Pokud nebudeme rozšiřovat žádnou třídu, můžeme rozšířit třídu vláken.
Otázka č. 46) Rozdíl mezi metodou start () a run () třídy vláken.
Odpovědět: Metoda Start () vytvoří nové vlákno a kód uvnitř metody run () se provede v novém vlákně. Pokud jsme přímo zavolali metodu run (), pak se nové vlákno nevytvoří a aktuálně provádějící vlákno bude i nadále provádět metodu run ().
Otázka č. 47) Co je to vícevlákno?
Odpovědět: Více podprocesů se provádí současně. Každé vlákno začíná svůj vlastní zásobník na základě priority toku (nebo) vláken.
Pří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 }
Při provádění 1. řádku volá JVM hlavní metodu a zásobník hlavních vláken vypadá, jak je znázorněno níže.
Jakmile poprava dosáhne, t.start () řádek, pak se vytvoří nové vlákno a vytvoří se také nový zásobník pro vlákno. Nyní se přepínače JVM přepnou na nové vlákno a hlavní vlákno je zpět do stavu spuštění.
Dva komíny vypadají, jak je znázorněno níže.
Nyní uživatelské vlákno provedlo kód uvnitř metody run ().
Jakmile je metoda run () dokončena, přepne se JVM zpět na hlavní vlákno a uživatelské vlákno dokončí úlohu a zásobník zmizí.
JVM přepíná mezi každým vláknem, dokud nejsou dokončena obě vlákna. Toto se nazývá Multi-threading.
Otázka č. 48) Vysvětlete životní cyklus vlákna v Javě.
Odpovědět: Vlákno má následující stavy:
- Nový
- Spustitelný
- Běh
- Nelze spustit (blokováno)
- Ukončeno
- Nový: V novém stavu byla vytvořena instance vlákna, ale metoda start () ještě není vyvolána. Nyní není vlákno považováno za živé.
- Spustitelný : Vlákno je ve spustitelném stavu po vyvolání metody start (), ale před vyvoláním metody run (). Ale vlákno se také může vrátit do stavu spuštění z čekání / spánku. V tomto stavu je vlákno považováno za živé.
- Běh : Vlákno je ve spuštěném stavu poté, co volá metodu run (). Nyní vlákno začíná provádění.
- Nelze spustit (Blokováno): Vlákno je naživu, ale není způsobilé ke spuštění. Není ve spustitelném stavu, ale také se po nějaké době vrátí do spustitelného stavu. Příklad: počkat, spát, blokovat.
- Ukončeno : Jakmile je metoda spuštění dokončena, je ukončena. Nyní vlákno není naživu.
Otázka č. 49) Co je to synchronizace?
Odpovědět: Synchronizace umožňuje pouze jedno vlákno pro přístup k bloku kódu najednou. Pokud více vláken přistupuje k bloku kódu, pak je na konci šance na nepřesné výsledky. Abychom se tomuto problému vyhnuli, můžeme zajistit synchronizaci citlivého bloku kódů.
Synchronizované klíčové slovo znamená, že vlákno potřebuje klíč pro přístup k synchronizovanému kódu.
Zámky jsou na objekty. Každý objekt Java má zámek. Zámek má pouze jeden klíč. Vlákno může přistupovat k synchronizované metodě pouze v případě, že vlákno může získat klíč k objektům, které se mají uzamknout.
K tomu používáme klíčové slovo „Synchronizované“.
Pří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) Jaká je nevýhoda synchronizace?
Roky: Synchronizace se nedoporučuje implementovat všechny metody. Protože pokud jedno vlákno přistupuje k synchronizovanému kódu, pak by další vlákno mělo čekat. Na druhém konci je tedy pomalý výkon.
Otázka č. 51) Co se rozumí serializací?
Odpovědět: Převod souboru na bajtový proud se nazývá Serializace. Objekty v souboru jsou z bezpečnostních důvodů převedeny na bajty. K tomu musíme implementovat rozhraní java.io.Serializable. Nemá žádnou metodu k definování.
Proměnné, které jsou označeny jako přechodné, nebudou součástí serializace. Takže můžeme přeskočit serializaci proměnných v souboru pomocí přechodného klíčového slova.
Další informace = >> Serializovatelné a klonovatelné
Otázka č. 52) Jaký je účel přechodné proměnné?
Odpovědět: Přechodné proměnné nejsou součástí procesu serializace. Během deserializace jsou hodnoty přechodných proměnných nastaveny na výchozí hodnotu. Nepoužívá se se statickými proměnnými.
Příklad:
přechodná int čísla;
Otázka č. 53) Které metody se používají během procesu serializace a deserializace?
Odpovědět: Třídy ObjectOutputStream a ObjectInputStream jsou vyšší úrovně java.io. balík. Budeme je používat s třídami nižší úrovně FileOutputStream a FileInputStream.
ObjectOutputStream.writeObject —-> Serializujte objekt a zapište serializovaný objekt do souboru.
ObjectInputStream.readObject -> Přečte soubor a deserializuje objekt.
Chcete-li být serializován, musí objekt implementovat serializovatelné rozhraní. Pokud nadtřída implementuje Serializable, bude podtřída automaticky serializovatelná.
Otázka č. 54) Jaký je účel těkavé proměnné?
Odpovědět: Hodnoty těkavých proměnných se vždy načítají z hlavní paměti, nikoli z mezipaměti paměti vlákna. Používá se hlavně během synchronizace. Platí pouze pro proměnné.
Příklad:
volatilní int číslo;
Otázka č. 55) Rozdíl mezi serializací a deserializací v Javě.
Odpovědět: Jedná se o rozdíly mezi serializací a deserializací v Javě:
Serializace | Deserializace |
---|---|
Serializace je proces, který se používá k převodu objektů na bajtový proud | Deserializace je opačný proces serializace, kdy můžeme získat objekty zpět z bajtového proudu. |
Objekt je serializován zápisem ObjectOutputStream. | Objekt je deserializován čtením z ObjectInputStream. |
Otázka 56) Co je SerialVersionUID?
Odpovědět: Kdykoli je objekt serializován, je objekt opatřen razítkem s identifikačním číslem verze pro třídu objektu. Toto ID se nazývá SerialVersionUID. Používá se během deserializace k ověření, že odesílatel a příjemce jsou kompatibilní se Serializací.
Závěr
To jsou některé základní otázky týkající se rozhovorů s JAVOU, které pokrývají základní i pokročilé koncepty prostředí Java pro programování i rozhovory s vývojáři, a na tyto otázky odpověděli naši odborníci na JAVA.
Doufám, že vám tento výukový program poskytne podrobný náhled na základní pojmy kódování JAVA. Výše uvedená vysvětlení skutečně obohatí vaše znalosti a rozšíří vaše porozumění programování v JAVA.
Připravte se sebevědomě na rozhovor v JAVA.