Java je jedním z nejpopulárnějších programovacích jazyků na světě, známý pro svou všestrannost, přenositelnost a širokou škálu aplikací. Java je díky svým funkcím a výkonu nejpoužívanějším jazykem ve špičkových společnostech, jako je Uber, Airbnb, Google, Netflix, Instagram, Spotify, Amazon a mnoha dalších.
V tomto článku vám poskytneme Více než 200 základních otázek k pohovoru v jazyce Java na míru pro osvěžovače i zkušené profesionály s 3, 5 a 8 lety zkušeností. Zde pokryjeme vše, včetně základních konceptů Java, objektově orientovaného programování (OOP), multithreadingu, zpracování výjimek, návrhových vzorů, kolekcí Java a dalších, což vám jistě pomůže prolomit rozhovory v jazyce Java.

Obsah
- Java Interview Otázky pro Freshers
- Otázky k pohovoru Java pro středně pokročilé
- Java Interview Otázky pro zkušené
- Otázky týkající se rozdílového pohovoru v jazyce Java
Java Interview Otázky pro Freshers
1. Je Java Platform Independent, pokud tedy jak?
Ano, Java je jazyk nezávislý na platformě. Na rozdíl od mnoha programovacích jazyků kompilátor javac zkompiluje program tak, aby vytvořil soubor bytecode nebo .class. Tento soubor je nezávislý na spuštěném softwaru nebo hardwaru, ale pro další spuštění bajtového kódu potřebuje soubor JVM (Java Virtual Machine) předinstalovaný v operačním systému.
Ačkoli JVM je závislé na platformě bajtový kód může být vytvořen na jakémkoli systému a může být spuštěn v jakémkoli jiném systému bez ohledu na použitý hardware nebo software, díky kterému je platforma Java nezávislá.
2. Jaké jsou hlavní funkce Java?
Java je jedním z nejznámějších a nejpoužívanějších jazyků v reálném světě, v Javě je mnoho funkcí, díky kterým je lepší než jakýkoli jiný jazyk, některé z nich jsou uvedeny níže:

- Jednoduchý : Java je poměrně jednoduchá na pochopení a syntaxi
- Nezávislé na platformě: Java je nezávislá na platformě, což znamená, že můžeme spustit stejný program v jakémkoli softwaru a hardwaru a dosáhneme stejného výsledku.
- Interpretováno : Java je interpretována stejně jako jazyk založený na kompilátoru.
- Robustní : funkce jako Garbage collection, zpracování výjimek atd., které činí jazyk robustním.
- Objektově orientované : Java je objektově orientovaný jazyk, který podporuje koncepty třídy, objektů, čtyř pilířů OOPS atd.
- Zajištěno : Protože můžeme přímo sdílet aplikaci s uživatelem bez sdílení skutečného programu, je Java bezpečný jazyk.
- Vysoký výkon: rychlejší než jiné tradiční interpretované programovací jazyky.
- Dynamický : podporuje dynamické načítání tříd a rozhraní.
- Distribuováno : funkce Java nám umožňuje přistupovat k souborům voláním metod z libovolného připojeného počítače.
- Vícevláknové : zabývat se více úkoly najednou definováním více vláken
- Neutrální architektura : nezávisí na architektuře.
3. Co je JVM?

JVM je zkratka pro Java Virtual Machine, jedná se o interpret Javy. Je zodpovědný za načítání, ověřování a provádění bajtkódu vytvořeného v Javě.
Přestože je závislý na platformě, což znamená, že software JVM se liší pro různé operační systémy, hraje zásadní roli při vytváření nezávislosti na platformě Java.
Chcete-li se dozvědět více o tématu, viz JVM v Javě .
4. Co je JIT?

JIT je zkratka pro (Just-in-Time) kompilátor je součástí JRE (Java Runtime Environment), používá se pro lepší výkon Java aplikací za běhu. Použití JIT je zmíněno v níže uvedeném postupu krok za krokem:
- Zdrojový kód je zkompilován s javac kompilátor pro vytvoření bajtkódu
- Bytekód je dále předán JVM
- JIT je součástí JVM, JIT je zodpovědný za kompilaci bajtkódu do nativního strojového kódu za běhu.
- Kompilátor JIT je povolen po celou dobu, zatímco se aktivuje, když je vyvolána metoda. U zkompilované metody JVM přímo volá zkompilovaný kód, místo aby jej interpretovalo.
- Jak JVM nazývá zkompilovaný kód, který zvyšuje výkon a rychlost provádění.
Chcete-li se dozvědět více o tématu, viz JIT v Javě .
5. Jaká jsou dostupná úložiště s JVM?

JVM se skládá z několika paměťových úložišť, jak je uvedeno níže:
- Class(Method) Area: ukládá data na úrovni třídy každé třídy, jako je například fond konstant, pole a data metod a kód metod.
- Halda: Objekty jsou vytvořeny nebo objekty jsou uloženy. Používá se k přidělování paměti objektům během běhu.
- Zásobník: ukládá data a dílčí výsledky, které budou potřeba při vracení hodnoty pro metodu a provádění dynamického propojení
- Registr programového čítače: ukládá adresu aktuálně prováděné instrukce virtuálního stroje Java.
- Zásobník nativních metod: ukládá všechny nativní metody používané v aplikaci.
Chcete-li se dozvědět více o tématu, viz Paměťová úložiště JVM .
6. Co je to classloader?
Classloader je součástí JRE (Java Runtime Environment), během provádění bajtkódu nebo vytvořeného souboru .class classloader zodpovídá za dynamické načítání java tříd a rozhraní do JVM (Java Virtual Machine). Kvůli classloaderům Java run time systém nepotřebuje vědět o souborech a souborových systémech.
Chcete-li se dozvědět více o tématu, viz ClassLoader v Javě.
7. Rozdíl mezi JVM, JRE a JDK.
JVM : JVM také známý jako Java Virtual Machine je součástí JRE. JVM je typ tlumočníka odpovědného za převod bajtového kódu na strojově čitelný kód. Samotné JVM je závislé na platformě, ale interpretuje bytecode, což je na platformě nezávislý důvod, proč je Java nezávislá na platformě.
JRE : JRE znamená Java Runtime Environment, je to instalační balíček, který poskytuje prostředí pro spuštění programu nebo aplikace Java na libovolném počítači.
JDK : JDK je zkratka pro Java Development Kit, která poskytuje prostředí pro vývoj a spouštění programů Java. JDK je balíček, který obsahuje dvě věci Development Tools, které poskytují prostředí pro vývoj vašich programů Java a JRE pro spouštění programů nebo aplikací Java.
Chcete-li se dozvědět více o tématu, přejděte na Rozdíly mezi JVM, JRE a JDK .
8. Jaké jsou rozdíly mezi Java a C++?
Základ | C++ | Jáva |
|---|---|---|
Plošina | C++ je závislý na platformě | Java je nezávislá na platformě |
aplikace | C++ se používá hlavně pro systémové programování | Java se používá hlavně pro programování aplikací |
Hardware | C++ je blíže hardwaru | Java není tak interaktivní s hardwarem |
Globální rozsah | C++ podporuje globální rozsah a obor názvů. | Java nepodporuje globální rozsah. |
Nepodporuje | Funkce podporované v Javě, ale ne v C++ jsou:
| Funkce podporované v C++, ale ne v Javě, jsou:
|
Jejda | C++ je objektově orientovaný jazyk. Není to jediná kořenová hierarchie. | Java je také objektově orientovaný jazyk. Jedná se o jedinou kořenovou hierarchii, protože vše je odvozeno od jediné třídy (java.lang.Object). |
Strom dědičnosti | C++ vždy vytvoří nový strom dědičnosti. | Java používá jednoduchý strom dědičnosti, protože třídy v Javě jsou potomky objektových tříd v Javě. |
9. Vysvětlete public static void main(String args[]) v Javě.

Na rozdíl od jakéhokoli jiného programovacího jazyka jako C, C++ atd. V Javě jsme funkci main deklarovali jako veřejný statický void main (String args[]). Význam pojmů je uveden níže:
- veřejnost : public je modifikátor přístupu odpovědný za zmínku, kdo může přistupovat k prvku nebo metodě a jaký je limit. Je zodpovědný za globální zpřístupnění hlavní funkce. Zveřejňuje se, aby jej JVM mohlo vyvolat mimo třídu, protože není přítomno v aktuální třídě.
- statický : static je klíčové slovo používané k tomu, abychom mohli použít prvek bez iniciace třídy, abychom se vyhnuli zbytečnému přidělování paměti.
- prázdnota : void je klíčové slovo a používá se k určení, že metoda nic nevrací. Protože hlavní funkce nic nevrací, používáme void.
- hlavní : main představuje, že deklarovaná funkce je hlavní funkcí. Pomáhá JVM identifikovat, že deklarovaná funkce je hlavní funkcí.
- Řetězcové argumenty[] : Ukládá argumenty příkazového řádku Java a je polem třídy typu java.lang.String.
10. Co je Java String Pool?
Java String Pool je místo v paměti haldy, kde jsou uloženy všechny řetězce definované v programu. Samostatné místo v zásobníku je místo, kde je uložena proměnná uchovávající řetězec. Kdykoli vytvoříme nový objekt typu řetězec, JVM zkontroluje přítomnost objektu ve fondu String. Pokud je ve fondu String dostupný, s proměnnou se sdílí stejný odkaz na objekt, jinak se vytvoří nový objekt.

Příklad:
String str1='Hello'; // 'Hello' will be stored in String Pool // str1 will be stored in stack memory>
11. Co se stane, když prohlásíme, že neprohlásíme hlavní jako statický?
Můžeme deklarovat hlavní metodu bez použití statické a bez jakýchkoli chyb. Hlavní metoda však nebude považována za vstupní bod do aplikace nebo programu.
12. Co jsou balíčky v Javě?
Balíčky v Javě lze definovat jako seskupení příbuzných typů tříd, rozhraní atd., které poskytují přístup k ochraně a správě jmenného prostoru.
13. Proč se používají balíčky?
Balíčky se v Javě používají, aby se zabránilo konfliktům názvů, řídily přístup a usnadnily vyhledávání/umístění a používání tříd, rozhraní atd.
14. Jaké jsou výhody balíčků v Javě?
Definování balíčků v Javě má různé výhody.
- Balíčky se vyhýbají střetům jmen.
- Balíček poskytuje snadnější kontrolu přístupu.
- Můžeme mít také skryté třídy, které nejsou vidět venku a jsou používány balíčkem.
- Je snazší najít související třídy.
15. Kolik typů balíčků je v Javě?
V Javě existují dva typy balíčků
- Uživatelsky definované balíčky
- Vestavěné balíčky
16. Vysvětlete různé datové typy v Javě.
V Javě existují 2 typy datových typů, jak je uvedeno níže:
- Primitivní datový typ
- Neprimitivní datový typ nebo datový typ objektu
Typ primitivních dat: Primitivní data jsou jednotlivé hodnoty bez zvláštních funkcí. Existuje 8 primitivních datových typů:
- booleovský : ukládá hodnotu true nebo false
- byte : ukládá 8bitové celé číslo doplněné dvojkou se znaménkem
- char : ukládá jeden 16bitový znak Unicode
- krátký : ukládá 16bitové celé číslo doplněné dvojkou se znaménkem
- int : ukládá 32bitové celé číslo doplněné dvojkou se znaménkem
- dlouho : ukládá 64bitové celé číslo s dvojkovým doplňkem
- plovák : ukládá 32bitovou IEEE 754 s plovoucí desetinnou čárkou s jednoduchou přesností
- dvojnásobek : ukládá 64bitovou IEEE 754 s plovoucí desetinnou čárkou s dvojitou přesností
Neprimitivní datový typ: Referenční datové typy budou obsahovat paměťovou adresu hodnot proměnné, protože není schopna přímo ukládat hodnoty do paměti. Typy neprimitivních jsou uvedeny níže:
- Struny
- Pole
- Třída
- Objekt
- Rozhraní
17. Kdy se používá datový typ byte?
Bajt je 8bitové celé číslo se znaménkem se dvěma doplňky. Minimální hodnota podporovaná bajty je -128 a 127 je maximální hodnota. Používá se v podmínkách, kdy potřebujeme šetřit paměť a limit potřebných čísel je mezi -128 až 127.
18. Můžeme deklarovat ukazatel v Javě?
Ne, Java neposkytuje podporu Pointer. Protože Java potřebovala být bezpečnější, protože která funkce ukazatele není v Javě k dispozici.
19. Jaká je výchozí hodnota datového typu byte v Javě?
Výchozí hodnota datového typu byte v Javě je 0.
20. Jaká je výchozí hodnota datového typu float a double v Javě?
Výchozí hodnota float je 0.0f a double je 0.0d v Javě.
21. Co je třída Wrapper v Javě?
Wrapper se obecně označuje jako větší entita, která zapouzdřuje menší entitu. Zde v Javě je třída wrapper třída objektů, která zapouzdřuje primitivní datové typy.
Primitivní datové typy jsou ty, ze kterých lze vytvářet další datové typy. Například celá čísla mohou dále vést ke konstrukci long, byte, short atd. Na druhou stranu řetězec nemůže, proto není primitivní.
Když se vrátíme ke třídě wrapper, Java obsahuje 8 tříd wrapper. Jsou to Boolean, Byte, Short, Integer, Character, Long, Float a Double. Dále lze vlastní obalové třídy vytvářet také v Javě, což je podobné konceptu Structure v programovacím jazyce C. Vytvoříme vlastní obalovou třídu s požadovanými datovými typy.
22. Proč potřebujeme obalové třídy?
Třída wrapper je třída objektů, která zapouzdřuje primitivní datové typy a potřebujeme je z následujících důvodů:
- Třídy Wrapper jsou konečné a neměnné
- Poskytuje metody jako valueOf(), parseInt() atd.
- Poskytuje funkci autoboxing a unboxing.
23. Rozlišujte mezi instančními a lokálními proměnnými.
Proměnná instance | Místní proměnná |
|---|---|
Deklarováno mimo metodu, přímo vyvoláno metodou. | Deklarováno v rámci metody. |
Má výchozí hodnotu. | Žádná výchozí hodnota |
Může být použit v celé třídě. | Rozsah je omezen na metodu. |
24. Jaké jsou výchozí hodnoty přiřazené proměnným a instancím v Javě?
V Javě Když jsme neinicializovali proměnné instance, kompilátor je inicializuje s výchozími hodnotami. Výchozí hodnoty pro instance a proměnné závisí na jejich datových typech. Některé běžné typy výchozích datových typů jsou:
- Výchozí hodnota pro číselné typy (byte, short, int, long, float a double) je 0.
- Výchozí hodnota pro typ boolean je false.
- Výchozí hodnota pro typy objektů (třídy, rozhraní a pole) je null.
- Znak null, u0000, je výchozí hodnotou pro typ znaku.
Příklad:
Jáva // Java Program to demonstrate use of default values import java.io.*; class GFG { // static values static byte b; static int i; static long l; static short s; static boolean bool; static char c; static String str; static Object object; static float f; static double d; static int[] Arr; public static void main(String[] args) { // byte value System.out.println('byte value' + b); // short value System.out.println('short value' + s); // int value System.out.println('int value' + i); // long value System.out.println('long value' + l); System.out.println('boolean value' + bool); System.out.println('char value' + c); System.out.println('float value' + f); System.out.println('double value' + d); System.out.println('string value' + str); System.out.println('object value' + object); System.out.println('Array value' + Arr); } }> Výstup
byte value0 short value0 int value0 long value0 boolean valuefalse char value float value0.0 double value0.0 string valuenull object valuenull Array valuenull>
25. Co je to třídní proměnná?
V Javě je proměnná třídy (také známá jako statická proměnná) proměnná, která je deklarována v rámci třídy, ale mimo jakoukoli metodu, konstruktor nebo blok. Proměnné třídy jsou deklarovány pomocí klíčového slova static a jsou sdíleny všemi instancemi (objekty) třídy i třídou samotnou. Bez ohledu na to, kolik objektů je odvozeno od třídy, každá proměnná třídy by existovala pouze jednou.
Příklad:
Jáva // Java program to demonstrate use of Clas Variable class GFG { public static int ctr = 0; public GFG() { ctr++; } public static void main(String[] args) { GFG obj1 = new GFG(); GFG obj2 = new GFG(); GFG obj3 = new GFG(); System.out.println('Number of objects created are ' + GFG.ctr); } }> Výstup
Number of objects created are 3>
26. Jaká je výchozí hodnota uložená v Local Variables?
S lokálními proměnnými není uložena žádná výchozí hodnota. Také primitivní proměnné a objekty nemají žádné výchozí hodnoty.
27. Vysvětlete rozdíl mezi proměnnou instance a proměnnou třídy.
Proměnná instance: Proměnná třídy bez statického modifikátoru známého jako proměnná instance je obvykle sdílena všemi instancemi třídy. Tyto proměnné mohou mít různé hodnoty mezi několika objekty. Obsah proměnné instance je zcela nezávislý na jedné instanci objektu na jiné, protože souvisí s konkrétní instancí objektu třídy.
Příklad:
Jáva // Java Program to demonstrate Instance Variable import java.io.*; class GFG { private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } public static void main(String[] args) { GFG obj = new GFG(); obj.setName('John'); System.out.println('Name ' + obj.getName()); } }> Výstup
Name John>
Proměnná třídy: Proměnnou třídy proměnné lze deklarovat kdekoli na úrovni třídy pomocí klíčového slova static. Tyto proměnné mohou mít pouze jednu hodnotu, když jsou aplikovány na různé objekty. Tyto proměnné mohou být sdíleny všemi členy třídy, protože nejsou spojeny s žádným konkrétním objektem třídy.
Příklad:
Jáva // Java Program to demonstrate Class Variable import java.io.*; class GFG { // class variable private static final double PI = 3.14159; private double radius; public GFG(double radius) { this.radius = radius; } public double getArea() { return PI * radius * radius; } public static void main(String[] args) { GFG obj = new GFG(5.0); System.out.println('Area of circle: ' + obj.getArea()); } }> Výstup
Area of circle: 78.53975>
28. Co je to statická proměnná?
Klíčové slovo static se používá ke sdílení stejné proměnné nebo metody dané třídy. Statické proměnné jsou proměnné, které jsou jednou deklarovány a poté je vytvořena jediná kopie proměnné a sdílena mezi všemi objekty na úrovni třídy.
29. Jaký je rozdíl mezi System.out, System.err a System.in?
System.out – Jedná se o PrintStream, který se používá pro psaní znaků nebo lze říci, že může vydávat data, která chceme zapisovat, na konzolu/terminál rozhraní příkazového řádku.
Příklad:
Jáva // Java Program to implement // System.out import java.io.*; // Driver Class class GFG { // Main Function public static void main(String[] args) { // Use of System.out System.out.println(''); } }>
System.err – Slouží k zobrazení chybových hlášení.
Příklad:
Jáva // Java program to demonstrate // System.err import java.io.*; // Driver Class class GFG { // Main function public static void main(String[] args) { // Printing error System.err.println( 'This is how we throw error with System.err'); } }> Výstup:
This is how we throw error with System.err>
Ačkoli System.err má mnoho podobností, oba mají také docela velký rozdíl, pojďme je zkontrolovat.
| System.out | System.err |
|---|---|
Vytiskne se standardně ze systému. | Vytiskne se se standardní chybou. |
Většinou se používá k zobrazení výsledků na konzoli. | Většinou se používá pro výstup chybových textů. |
Poskytuje výstup na konzole s výchozí (černou) barvou. | Poskytuje také výstup na konzole, ale většina IDE mu dává červenou barvu, aby se odlišila. |
System.in – Je to InputStream používaný ke čtení vstupu z okna terminálu. Nemůžeme použít System.in přímo, takže pro vstup do system.in používáme třídu Scanner.
Příklad:
Jáva // Java Program to demonstrate // System.in import java.util.*; // Driver Class class Main { // Main Function public static void main(String[] args) { // Scanner class with System.in Scanner sc = new Scanner(System.in); // Taking input from the user int x = sc.nextInt(); int y = sc.nextInt(); // Printing the output System.out.printf('Addition: %d', x + y); } }> Výstup:
3 4 Addition: 7>
30. Co rozumíte pod pojmem IO stream?

Java přináší různé proudy se svým I/O balíčkem, který pomáhá uživateli provádět všechny vstupně-výstupní operace. Tyto proudy podporují všechny typy objektů, datové typy, znaky, soubory atd., aby plně vykonávaly I/O operace.
31. Jaký je rozdíl mezi hierarchií tříd Reader/Writer a hierarchií tříd InputStream/OutputStream?
Klíčový rozdíl mezi nimi je v tom, že data bajtového toku se čtou a zapisují třídami vstupních/výstupních toků. Postavy jsou zpracovávány třídami Reader a Writer. Na rozdíl od tříd Reader/Writer, které přijímají pole znaků jako parametry, metody tříd vstupního/výstupního toku přijímají pole bajtů. Ve srovnání se vstupními/výstupními proudy jsou třídy Reader/Writer efektivnější, zvládají všechny znaky Unicode a jsou užitečné pro internalizaci. Používejte třídy Reader/Writer namísto binárních dat, jako jsou obrázky, pokud tak neučiníte.
Příklad:
Jáva // Java Program to demonstrate Reading Writing Binary Data // with InputStream/OutputStream import java.io.*; class GFG { public static void main(String[] args) { try { // Writing binary data to a file using OutputStream byte[] data = {(byte) 0xe0, 0x4f, (byte) 0xd0, 0x20, (byte) 0xea}; OutputStream os = new FileOutputStream('data.bin'); os.write(data); os.close(); // Reading binary data from a file using InputStream InputStream is = new FileInputStream('data.bin'); byte[] newData = new byte[5]; is.read(newData); is.close(); // Printing the read data for (byte b : newData) { System.out.println(b); } } catch (IOException e) { e.printStackTrace(); } } }> Výstup
-32 79 -48 32 -22>
32. Jaké jsou super nejvíce třídy pro všechny streamy?
Všechny třídy proudů lze rozdělit do dvou typů tříd, kterými jsou třídy ByteStream a třídy CharacterStream. Třídy ByteStream se dále dělí na třídy InputStream a OutputStream. Třídy CharacterStream se také dělí na třídy Reader a Writer. Třída SuperMost pro všechny třídy InputStream je java.io.InputStream a pro všechny třídy výstupního proudu je java.io.OutPutStream. Podobně pro všechny třídy čtenářů je super-většina třída java.io.Reader a pro všechny třídy spisovatele je to java.io.Writer.
33. Co jsou FileInputStream a FileOutputStream?
Pro čtení a zápis dat nabízí Java I/O Streams. Stream představuje vstupní zdroj nebo výstupní cíl, kterým může být soubor, I/O zařízení, jiný program atd. FileInputStream v Javě se používá ke čtení dat ze souboru jako proudu bajtů. Většinou se používá pro čtení binárních dat, jako jsou obrázky, zvukové soubory nebo serializované objekty.
Příklad:
File file = new File('path_of_the_file'); FileInputStream inputStream = new FileInputStream(file);>V Javě, FileOutputStream Funkce se používá k zápisu dat bajt po bajtu do daného souboru nebo deskriptoru souboru. Obvykle se nezpracovaná bajtová data, jako jsou obrázky, zapisují do souboru pomocí FileOutputStream.
Příklad:
File file = new File('path_of_the_file'); FileOutputStream outputStream = new FileOutputStream(file);>34. Jaký je účel použití tříd BufferedInputStream a BufferedOutputStream?
Když pracujeme se soubory nebo streamem, pak ke zvýšení Input/Output výkonu programu musíme použít třídy BufferedInputStream a BufferedOutputStream. Tyto obě třídy poskytují schopnost ukládání do vyrovnávací paměti, což znamená, že data budou uložena ve vyrovnávací paměti před zápisem do souboru nebo čtením z proudu. Snižuje také počet, kolikrát náš operační systém potřebuje k interakci se sítí nebo diskem. Ukládání do vyrovnávací paměti umožňuje programům zapisovat velké množství dat místo toho, aby je zapisovaly po malých kouscích. To také snižuje režii přístupu k síti nebo disku.
BufferedInputStream(InputStream inp); // used to create the bufferinput stream and save the arguments.>
BufferedOutputStream(OutputStream output); // used to create a new buffer with the default size.>
35. Co jsou to FilterStreams?
Filtr toku nebo Filtr toků vrací proud skládající se z prvků tohoto proudu, které odpovídají danému predikátu. Při práci filter() ve skutečnosti neprovádí filtrování, ale místo toho vytváří nový proud, který při průchodu obsahuje prvky počátečních proudů, které odpovídají danému predikátu.
Příklad:
FileInputStream fis =new FileInoutStream('file_path'); FilterInputStream = new BufferedInputStream(fis);>
36. Co je to I/O filtr?
I/O filtr definovaný také jako vstupní výstupní filtr je objekt, který čte z jednoho proudu a zapisuje data do vstupních a výstupních zdrojů. K použití tohoto filtru byl použit balíček java.io.
37. Kolika způsoby můžete převzít vstup z konzole?
Existují dva způsoby, jak převzít vstup z konzoly v Javě, jak je uvedeno níže:
- Použití argumentu příkazového řádku
- Použití třídy čtečky s vyrovnávací pamětí
- Použití třídy konzoly
- Použití třídy skeneru
Program demonstrující použití každé metody je uveden níže.
Příklad:
Jáva // Java Program to implement input // using Command line argument import java.io.*; class GFG { public static void main(String[] args) { // check if length of args array is // greater than 0 if (args.length > 0) { System.out.println( 'The command line arguments are:'); // iterating the args array and printing // the command line arguments for (String val : args) System.out.println(val); } else System.out.println('No command line ' + 'arguments found.'); } } // Use below commands to run the code // javac GFG.java // java Main techcodeview.com> Jáva // Java Program to implement // Buffer Reader Class import java.io.*; class GFG { public static void main(String[] args) throws IOException { // Enter data using BufferReader BufferedReader read = new BufferedReader( new InputStreamReader(System.in)); // Reading data using readLine String x = read.readLine(); // Printing the read line System.out.println(x); } }> Jáva // Java program to implement input // Using Console Class public class GfG { public static void main(String[] args) { // Using Console to input data from user String x = System.console().readLine(); System.out.println('You entered string ' + x); } }> Jáva // Java program to demonstrate // working of Scanner in Java import java.util.Scanner; class GfG { public static void main(String args[]) { // Using Scanner for Getting Input from User Scanner in = new Scanner(System.in); String str = in.nextLine(); System.out.println('You entered string ' + str); } }> Výstup:
techcodeview.com>
38. Rozdíl v použití print, println a printf.
print, println a printf se používají pro tisk prvků, ale print vytiskne všechny prvky a kurzor zůstane na stejném řádku. println posune kurzor na další řádek. A s printf můžeme také použít identifikátory formátu.
39. Co jsou operátoři?
Operátory jsou speciální typy symbolů používané k provádění některých operací nad proměnnými a hodnotami.
40. Kolik typů operátorů je dostupných v Javě?
Všechny typy operátorů v Javě jsou uvedeny níže:
- Aritmetické operátory
- Unární operátoři
- Operátor přiřazení
- Relační operátoři
- Logické operátory
- Ternární operátor
- Bitové operátory
- Operátoři směn
- instance operátora
Postfixové operátory jsou považovány za nejvyšší prioritu podle priority operátorů Java.
41. Vysvětlete rozdíl mezi operátory>> a>>>.
Operátoři jako>> a>>> se zdají být stejní, ale chovají se trochu jinak. Operátor>> posouvá bity znaménka a operátor>>> se používá k posouvání bitů vyplněných nulou.
Příklad:
Jáva // Java Program to demostrate //>Operátoři> a>>> importují java.io.*; // Třída ovladače GFG { public static void main(String[] args) { int a = -16, b = 1; // Použití>> System.out.println(a >> b); a = -17; b = 1; // Použití>>> System.out.println(a >>> b); } }> Výstup
-8 2147483639>
42. Který operátor Java je správně asociativní?
Existuje pouze jeden operátor, který je správně asociativní, což je operátor =.
43. Co je to tečkový operátor?
Operátor Dot v Javě se používá pro přístup k instančním proměnným a metodám objektů třídy. Používá se také pro přístup ke třídám a dílčím balíčkům z balíčku.
44. Co je kovariantní návratový typ?
Návratový typ kovariance určuje, že návratový typ se může lišit ve stejném směru jako podtřída. Je možné mít různé návratové typy pro přepisující metodu v podřízené třídě, ale návratový typ potomka by měl být podtypem rodičovského návratového typu a kvůli této přepisovací metodě se stává variantou s ohledem na návratový typ.
Kovariantní návratový typ používáme z následujících důvodů:
jak zavřít vývojářský režim
- Zabraňuje matoucím přetypováním typů přítomným v hierarchii tříd a činí kód čitelným, použitelným a udržovatelným.
- Umožňuje mít při přepisování metod konkrétnější typy návratů.
- Pomoc při předcházení výjimkám ClassCastExceptions při vracení za běhu.
45. Co je to přechodné klíčové slovo?
Klíčové slovo přechodné se používá v době serializace, pokud nechceme uložit hodnotu konkrétní proměnné do souboru. Když JVM narazí na přechodné klíčové slovo, ignoruje původní hodnotu proměnné a uloží výchozí hodnotu daného datového typu proměnné.
46. Jaký je rozdíl mezi metodami sleep() a wait()?
Spát() | Počkejte() |
|---|---|
Metoda sleep() patří do třídy vláken. | Metoda Wait() patří do třídy objektů. |
Režim spánku neuvolní zámek, který drží aktuální vlákno. | wait() uvolní zámek, který umožní ostatním vláknům jej získat. |
Tato metoda je statická metoda. | Tato metoda není statickou metodou. |
| Sleep() nevyvolá InterruptedException. | InterruptedException se zobrazí, pokud je vlákno během čekání přerušeno. |
Používá se hlavně ke zpoždění vlákna na určitou konkrétní dobu. | Používá se hlavně k pozastavení vlákna, dokud nebude upozorněno jiným vláknem. |
Sleep() má dvě přetížené metody:
| Wait() má tři přetížené metody:
|
47. Jaké jsou rozdíly mezi String a StringBuffer?
Tětiva | StringBuffer |
|---|---|
| Uložení posloupnosti znaků. | Poskytuje funkce pro práci s řetězci. |
| Je neměnný. | Je proměnlivý (lze jej upravit a lze s ním provádět další operace s řetězci.) |
| Žádné operace s vlákny v řetězci. | Je bezpečný pro vlákna (dvě vlákna nemohou volat metody StringBuffer současně) |
48. Jaké jsou rozdíly mezi StringBuffer a StringBuilder?
StringBuffer | StringBuilder |
|---|---|
| StringBuffer poskytuje funkce pro práci s řetězci. | StringBuilder je třída používaná k vytvoření měnitelného řetězce. |
| Je bezpečný pro vlákna (dvě vlákna nemohou volat metody StringBuffer současně) | Není bezpečný pro vlákna (dvě vlákna mohou volat metody současně) |
| Poměrně pomalé, protože je synchronizováno. | Tím, že není synchronizován, je implementace rychlejší |
49. Který z String nebo String Buffer by měl být preferován, když je potřeba provést mnoho aktualizací v datech?
Řetězec je upřednostňován před StringBuffer, protože StringBuilder je rychlejší než StringBuffer, ale objekty StringBuffer jsou upřednostňovány, protože poskytuje větší bezpečnost vláken.
50. Proč se StringBuffer nazývá mutable?
Třída StringBuffer v Javě se používá k reprezentaci měnitelného řetězce znaků. Nabízí alternativu k neměnné třídě String tím, že vám umožňuje měnit obsah řetězce bez neustálého vytváření nových objektů. Proměnlivé (modifikovatelné) řetězce jsou vytvářeny pomocí třídy StringBuffer. Třída StringBuffer v Javě je identická s třídou String kromě toho, že je měnitelná.
Příklad:
Jáva // Java Program to demonstrate use of stringbuffer public class StringBufferExample { public static void main(String[] args) { StringBuffer s = new StringBuffer(); s.append('Geeks'); s.append('for'); s.append('Geeks'); String message = s.toString(); System.out.println(message); } }> Výstup
techcodeview.com>
51. Jak se liší vytvoření řetězce pomocí new() od vytvoření literálu?
Řetězec používající new() se liší od doslovného, protože když deklarujeme řetězec, ukládá prvky do paměti zásobníku, zatímco když je deklarován pomocí new(), alokuje dynamickou paměť v paměti haldy. Objekt se vytvoří v paměti haldy, i když je přítomen stejný objekt obsahu.
Syntax:
String x = new String('ABC');>

52. Co je pole v Javě?
Pole v Javě je datová struktura, která se používá k uložení sekvence prvků stejného typu s pevnou velikostí. K prvkům pole lze přistupovat pomocí jejich indexu, který začíná od 0 do délky mínus 1. Deklarace pole v Javě se provádí pomocí hranatých závorek a při deklaraci se také uvádí velikost.
Syntax:
int[] Arr = new int[5]; >
53. Na kterých paměťových polích se v Javě vytvářejí?
Pole v Javě se vytvářejí v paměti haldy. Když je pole vytvořeno pomocí nového klíčového slova, je v haldě alokována paměť pro uložení prvků pole. V Javě je paměť haldy spravována Java Virtual Machine (JVM) a je také sdílena mezi všemi vlákny programu Java. Paměť, kterou program již nepoužívá, používá JVM k opětovnému získání paměti garbage collector. Pole v Javě jsou vytvářeny dynamicky, což znamená, že velikost pole je určena během běhu programu. Velikost pole je určena při deklaraci pole a nelze ji po vytvoření pole změnit.
54. Jaké jsou typy pole?
Existují dva typy polí, tj. Primitivní pole a Referenční pole.
- Jednorozměrná pole: Pole, která mají pouze jeden rozměr, tj. pole celých čísel nebo pole řetězců, jsou známá jako jednorozměrná pole.

Syntax:
data_type[] Array_Name = new data_type[ArraySize];>
- Vícerozměrná pole: Pole, která mají dva nebo více rozměrů, jako jsou dvourozměrná nebo trojrozměrná pole.
55. Proč index pole Java začíná 0?
Index pole udává vzdálenost od začátku pole. Takže první prvek má vzdálenost 0, takže počáteční index je 0.
Syntax:
[Base Address + (index * no_of_bytes)]>
56. Jaký je rozdíl mezi polem int[] a polem int[]?
Jak pole int pole[], tak pole int[] se používají k deklaraci pole celých čísel v jazyce Java. Jediný rozdíl mezi nimi je v jejich syntaxi, žádný rozdíl ve funkčnosti mezi nimi není.
int arr[] is a C-Style syntax to declare an Array.>
int[] arr is a Java-Style syntax to declare an Array.>
Obecně se však k deklaraci pole doporučuje používat syntaxi ve stylu Java. Protože je snadno čitelný a pochopitelný, je také konzistentnější s jinými konstrukcemi jazyka Java.
57. Jak zkopírovat pole v Javě?
V Javě existuje několik způsobů, jak zkopírovat pole na základě požadavků.
- metoda clone() v Javě: Tato metoda v Javě se používá k vytvoření mělké kopie daného pole, což znamená, že nové pole bude sdílet stejnou paměť jako původní pole.
int[] Arr = { 1, 2, 3, 5, 0}; int[] tempArr = Arr.clone(); >- metoda arraycopy(): K vytvoření hluboké kopie pole můžeme použít tuto metodu, která vytvoří nové pole se stejnými hodnotami jako původní pole.
int[] Arr = {1, 2, 7, 9, 8}; int[] tempArr = new int[Arr.length]; System.arraycopy(Arr, 0, tempArr, 0, Arr.length);>- metoda copyOf(): Tato metoda se používá k vytvoření nového pole se specifickou délkou a zkopíruje obsah původního pole do nového pole.
int[] Arr = {1, 2, 4, 8}; int[] tempArr = Arrays.copyOf(Arr, Arr.length);>- metoda copyOfRange(): Tato metoda je velmi podobná metodě copyOf() v Javě, ale tato metoda nám také umožňuje určit rozsah prvků, které se mají zkopírovat z původního pole.
int[] Arr = {1, 2, 4, 8}; int[] temArr = Arrays.copyOfRange(Arr, 0, Arr.length);>58. Co rozumíte pod pojmem zubaté pole?
Zubaté pole v Javě je pouze dvourozměrné pole, ve kterém může mít každý řádek pole jinou délku. Protože všechny řádky ve 2-d Array mají stejnou délku, ale zubaté pole umožňuje větší flexibilitu ve velikosti každého řádku. Tato funkce je velmi užitečná v podmínkách, kdy data mají různou délku nebo když je potřeba optimalizovat využití paměti.
Syntax:
int[][] Arr = new int[][] { {1, 2, 8}, {7, 5}, {6, 7, 2, 6} };>59. Je možné nastavit pole jako nestálé?
V Javě není možné vytvořit volatile. Nestálá klíčová slova v Javě lze použít pouze na jednotlivé proměnné, ale ne na pole nebo kolekce. Hodnota proměnné se vždy čte a zapisuje do hlavní paměti, pokud je definována jako nestálá, spíše než aby byla ukládána do mezipaměti v místní paměti vlákna. Díky tomu je snazší zajistit, aby všechna vlákna, která přistupují k proměnné, mohla vidět změny, které v ní byly provedeny.
60. Jaké jsou výhody a nevýhody pole?

Výhody Arrays jsou:
- Přímý a efektivní přístup k jakémukoli prvku v kolekci umožňují pole. K prvkům pole lze přistupovat pomocí operace O(1), což znamená, že čas potřebný k tomu je konstantní a nezávislý na velikosti pole.
- Data lze efektivně ukládat do paměti pomocí polí. Velikost pole je známa v době kompilace, protože jeho prvky jsou uloženy v souvislých paměťových oblastech.
- Vzhledem k tomu, že data jsou uložena v souvislých paměťových oblastech, umožňují pole rychlé načítání dat.
- Pole jsou snadno implementovatelná a srozumitelná, takže jsou ideální volbou pro začátečníky, kteří se učí počítačové programování.
Nevýhody polí jsou:
- Pole jsou vytvořeny s předem určenou velikostí, která je v daném okamžiku zvolena. To znamená, že pokud je třeba zvětšit velikost pole, bude nutné vytvořit nové pole a data zkopírovat ze starého pole do nového pole, což může zabrat spoustu času a paměti.
- V paměťovém prostoru pole může být nevyužitý paměťový prostor, pokud pole není zcela obsazeno. Pokud si špatně vzpomínáte, může to být problém.
- Ve srovnání s jinými datovými strukturami, jako jsou propojené seznamy a stromy, mohou být pole nepružná kvůli své pevné velikosti a omezené podpoře sofistikovaných datových typů.
- Protože všechny prvky pole musí být stejného datového typu, nepodporuje složité datové typy, jako jsou objekty a struktury.
61. Co je to objektově orientované paradigma?
Paradigma doslova znamená vzor nebo metodu. Programovací paradigmata jsou metody řešení programu, který je čtyř typů, a to imperativní, logický, funkční a objektově orientovaný. Když jsou objekty použity jako základní entity, na které se aplikují metody, provádějí se funkce zapouzdření nebo dědičnosti, je to známé jako objektově orientované paradigma.
62. Jaké jsou hlavní koncepty OOP v Javě?
Hlavní koncepty OOP v Javě jsou uvedeny níže:
- Dědictví
- Polymorfismus
- Abstrakce
- Zapouzdření
63. Jaký je rozdíl mezi objektově orientovaným programovacím jazykem a objektově orientovaným programovacím jazykem?
Objektově orientovaný programovací jazyk | Objektově založený programovací jazyk |
|---|---|
| Objektově orientovaný programovací jazyk pokrývá větší pojmy, jako je dědičnost, polymorfismus, abstrakce atd. | Rozsah objektového programování je omezen na použití objektů a zapouzdření. |
| Podporuje všechny vestavěné objekty | Nepodporuje všechny vestavěné objekty |
| Příklady: Java, C# atd. | Příklady: Java skript, vizuální základy atd. |
64. Jak se liší operátor „new“ od operátoru „newInstance()“ v Javě?
operátor new se používá k vytváření objektů, ale pokud chceme rozhodnout o typu objektu, který se má vytvořit za běhu, není možné použít operátor new. V tomto případě musíme použít metoda newInstance(). .
65. Co jsou třídy v Javě?
V Javě jsou třídy kolekce objektů sdílejících podobné vlastnosti a atributy. Třídy představují plán nebo šablonu, ze které jsou objekty vytvářeny. Třídy nejsou entity reálného světa, ale pomáhají nám vytvářet objekty, které jsou entitami reálného světa.
66. Jaký je rozdíl mezi statickou (třídní) metodou a instanční metodou?
Statická (třída) metoda | Instanční metoda |
|---|---|
Statická metoda je přidružena spíše ke třídě než k objektu. | Metoda instance je přidružena spíše k objektu než ke třídě. |
Statické metody lze volat pouze pomocí názvu třídy bez vytvoření instance třídy. | Metodu instance lze volat na konkrétní instanci třídy pomocí odkazu na objekt. |
Statické metody nemají přístup tento klíčové slovo . | Metody instance mají přístup k tento klíčové slovo . |
Tato metoda má přístup pouze ke statickým členům třídy | Tato metoda může přistupovat ke statickým i nestatickým metodám třídy. |
67. Co je toto klíčové slovo v Javě?

„toto“ je klíčové slovo používané k odkazování na proměnnou, která odkazuje na aktuální objekt.
68. Co jsou specifikátory krátkého přístupu a typy specifikátorů přístupu?

Specifikátory přístupu v Javě pomáhají omezit rozsah třídy, konstruktoru, proměnné, metody nebo datového člena. V Javě jsou čtyři typy specifikátorů přístupu uvedené níže:
- Veřejnost
- Soukromé
- Chráněný
- Výchozí
69. Jaká bude počáteční hodnota odkazu na objekt, který je definován jako proměnná instance?
Počáteční hodnota odkazu na objekt, který je definován jako proměnná instance, je hodnota NULL.
70. Co je předmět?
Objekt je reálná entita, která má určité vlastnosti a metody s ním spojené. Objekt je také definován jako instance třídy. Objekt lze deklarovat pomocí nového klíčového slova.
71. Jaké jsou různé způsoby vytváření objektů v Javě?
Níže jsou uvedeny způsoby vytváření objektů v Javě:
- Použití nového klíčového slova
- Použití nové instance
- Použití metody clone().
- Použití deseralizace
- Pomocí metody newInstance() třídy Constructor
Chcete-li se dozvědět více o metodách vytváření objektů v Javě, viz tento článek .
72. Jaké jsou výhody a nevýhody klonování objektů?
Klonování objektů má mnoho výhod a nevýhod, jak je uvedeno níže:
výhody:
- V Javě nelze operátor přiřazení ‚=‘ použít pro klonování, protože jednoduše vytváří kopii referenčních proměnných. K překonání takového rozporu lze použít metodu clone() třídy Object přes operátor přiřazení.
- Metoda clone() je chráněná metoda třídy Object, což znamená, že pouze třída Employee může klonovat objekty Employee. To znamená, že žádná jiná třída než Employee nemůže klonovat objekty Employee, protože nezná atributy třídy Employee.
- Velikost kódu se zmenšuje se snižujícím se opakováním.
- Umožňuje replikaci (něco jako vzor prototypu) ruční inicializací každého pole vytváří velký kód, pokud je objekt složitý, je rychlejší s klonováním.
Nevýhody:
- Protože je metoda Object.clone() chráněna, je potřeba poskytnout vlastní clone() a nepřímo z ní volat Object.clone().
- Pokud nemáme žádné metody, musíme poskytnout klonovatelné rozhraní, protože potřebujeme poskytnout informace o JVM, abychom mohli provést clone() na našem objektu. Pokud ne, nemůžeme klonovat klonovat mělké kopie polí, pokud stačí vrátit super.clone() z metody klonování, což může být problematické.
73. Jaké jsou výhody předání tohoto do metody namísto samotného objektu aktuální třídy?
Předání tohoto do metody namísto samotného objektu aktuální třídy má několik výhod:
- toto je konečná proměnná, kvůli které ji nelze přiřadit žádné nové hodnotě, zatímco aktuální objekt třídy nemusí být konečný a lze jej změnit.
- to lze použít v synchronizovaném bloku.
74. Co je konstruktor?
Konstruktor je speciální metoda, která se používá k inicializaci objektů. Konstruktor je volán při vytvoření objektu. Název konstruktoru je stejný jako název třídy.
příkaz chown
Příklad:
// Class Created class XYZ{ private int val; // Constructor XYZ(){ val=0; } };>75. Co se stane, když ve třídě nezadáte konstruktor?
Pokud nezadáte konstruktor ve třídě v Javě, kompilátor automaticky vygeneruje výchozí konstruktor bez argumentů a bez operace, což je výchozí konstruktor.
76. Kolik typů konstruktorů se používá v Javě?
V Javě existují dva typy konstruktorů, jak je uvedeno níže:
- Výchozí konstruktor
- Parametrizovaný konstruktor
Výchozí konstruktor: Je to typ, který nepřijímá žádnou hodnotu parametru. Používá se k nastavení počátečních hodnot atributů objektu.
class_Name(); // Default constructor called>
Parametrizovaný konstruktor: Je to typ konstruktoru, který přijímá parametry jako argumenty. Ty se používají k přiřazení hodnot proměnným instance během inicializace objektů.
class_Name(parameter1, parameter2......); // All the values passed as parameter will be // allocated accordingly>
77. Jaký je účel výchozího konstruktoru?
Konstruktory pomáhají vytvářet instance třídy nebo lze říci, že vytvářejí objekty třídy. Konstruktor je volán během inicializace objektů. Výchozí konstruktor je typ konstruktoru, který nepřijímá žádný parametr, takže jakákoliv hodnota přiřazená vlastnostem objektů je považována za výchozí hodnoty.
78. Co rozumíte pod pojmem kopírovací konstruktor v Javě?
Kopírovací konstruktor je typ konstruktoru, ve kterém předáváme jiný objekt jako parametr, protože které vlastnosti obou objektů se zdají stejné, proto se zdá, jako by konstruktory vytvořily kopii objektu.
79. Kde a jak můžete použít soukromý konstruktor?
Soukromý konstruktor se používá, pokud nechcete, aby jiná třída vytvořila instanci objektu, abyste se vyhnuli podtřídě. Použitý soukromý konstruktor lze vidět jako implementovaný v příkladu.
Příklad:
Jáva // Java program to demonstrate implementation of Singleton // pattern using private constructors. import java.io.*; class GFG { static GFG instance = null; public int x = 10; // private constructor can't be accessed outside the // class private GFG() {} // Factory method to provide the users with instances static public GFG getInstance() { if (instance == null) instance = new GFG(); return instance; } } // Driver Class class Main { public static void main(String args[]) { GFG a = GFG.getInstance(); GFG b = GFG.getInstance(); a.x = a.x + 10; System.out.println('Value of a.x = ' + a.x); System.out.println('Value of b.x = ' + b.x); } }> Výstup
Value of a.x = 20 Value of b.x = 20>
80. Jaké jsou rozdíly mezi konstruktory a metodami?
Java konstruktory se používají pro inicializaci objektů. Během vytváření jsou konstruktéři voláni, aby nastavili atributy pro objekty, kromě těchto několika základních rozdílů mezi nimi:
- Konstruktory jsou volány pouze při vytvoření objektu, ale jiné metody lze volat vícekrát během životnosti objektu.
- Konstruktory nevracejí nic, zatímco jiné metody mohou vrátit cokoli.
- K nastavení počátečního stavu se používají konstruktory, ale k provádění konkrétních akcí se používají metody.
81. Co je to rozhraní?
Rozhraní v Javě je kolekce statických konečných proměnných a abstraktních metod, které definují smlouvu nebo dohodu pro sadu propojených tříd. Každá třída, která implementuje rozhraní, musí implementovat konkrétní sadu metod. Specifikuje chování, které musí třída vykazovat, ale ne specifika, jak by měla být implementována.
Syntax:
interface { // constant fields // methds that are abstract by default }>Příklad:
Jáva // Java Program to demonstrate Interface import java.io.*; interface Shape { double getArea(); double getPerimeter(); } class Circle implements Shape { private double radius; public Circle(double radius) { this.radius = radius; } public double getArea() { return Math.PI * radius * radius; } public double getPerimeter() { return 2 * Math.PI * radius; } } class GFG { public static void main(String[] args) { Circle circle = new Circle(5.0); System.out.println('Area of circle is ' + circle.getArea()); System.out.println('Perimeter of circle is' + circle.getPerimeter()); } }> Výstup
Area of circle is 78.53981633974483 Perimeter of circle is31.41592653589793>
82. Uveďte některé funkce rozhraní.
Rozhraní v programovacím jazyce Java je definováno jako abstraktní typ používaný k určení chování třídy. Rozhraní v Javě je návrhem chování. Rozhraní Java obsahuje statické konstanty a abstraktní metody.
Vlastnosti rozhraní jsou uvedeny níže:
- Rozhraní může pomoci dosáhnout úplné abstrakce.
- Umožňuje nám používat vícenásobnou dědičnost v Javě.
- Jakákoli třída může implementovat více rozhraní, i když jedna třída může rozšířit pouze jednu třídu.
- Používá se také k dosažení volného spojení.
83. Co je rozhraní značky?
Rozhraní je rozpoznáno jako prázdné rozhraní (žádné pole nebo metody), nazývá se rozhraním značek. Příklady rozhraní značek jsou Serializovatelné, klonovatelné a vzdálené rozhraní.
84. Jaké jsou rozdíly mezi abstraktní třídou a rozhraním?

Abstraktní třída | Třída rozhraní |
|---|---|
V abstraktní třídě lze nalézt jak abstraktní, tak neabstraktní metody. | Rozhraní obsahuje pouze abstraktní metody. |
Abstraktní třída podporuje metody Final. | Třída rozhraní nepodporuje metody Final. |
Třída Abstract nepodporuje vícenásobnou dědičnost. | Třída rozhraní podporuje vícenásobnou dědičnost. |
Abstraktní klíčové slovo se používá k deklaraci abstraktní třídy. | Klíčové slovo rozhraní se používá k deklaraci třídy rozhraní. |
| rozšířit klíčové slovo se používá k rozšíření abstraktní třídy. | nářadí Klíčové slovo se používá k implementaci rozhraní. |
Abstraktní třída má členy jako chráněné, soukromé atd. | Všichni členové třídy jsou ve výchozím nastavení veřejní. |
85. Co myslíte zapouzdřením dat?

Zapouzdření dat je koncept OOPS vlastností a charakteristik tříd, které je rozhraní spojeno dohromady. V zásadě sdružuje data a metody, které s těmito daty pracují, do jedné jednotky. Zapouzdření je dosaženo deklarováním instančních proměnných třídy jako soukromých, což znamená, že k nim lze přistupovat pouze v rámci třídy.
86. Jaké jsou výhody Encapsulation v Javě?
Výhody Encapsulation v Javě jsou uvedeny níže:
- Skrytí dat: je to způsob, jak omezit přístup našich datových členů skrytím podrobností implementace. Zapouzdření také poskytuje způsob, jak data skrýt. Uživatel nebude mít žádnou představu o vnitřní implementaci třídy.
- Zvýšená flexibilita: Můžeme nastavit proměnné třídy pouze pro čtení nebo pouze pro zápis v závislosti na našich požadavcích.
- Opětovná použitelnost: Zapouzdření také zlepšuje opětovnou použitelnost a lze jej snadno změnit podle nových požadavků.
- Testování kódu je snadné: Kód lze snadno testovat pro testování jednotek.
87. Jaká je hlavní výhoda zapouzdření?
Hlavní výhodou Encapsulation v Javě je jeho schopnost chránit vnitřní stav objektu před vnějšími úpravami nebo přístupem. Je to způsob, jak skrýt podrobnosti implementace třídy před přístupem zvenčí a pouze odhalit veřejné rozhraní, které lze použít k interakci s třídou. Hlavním přínosem je poskytnutí možnosti řídit a řídit stav a chování objektu a zároveň jej chránit před změnami a neoprávněným přístupem.
Příklad:
Jáva // Java Program to demonstrate use of Encapsulation import java.io.*; class Person { private String Name; private int age; public String getName() { return Name; } public void setName(String Name) { this.Name = Name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } // Driver class class GFG { // main function public static void main(String[] args) { Person p = new Person(); p.setName('Rohan'); p.setAge(29); System.out.println('Name is ' + p.getName()); System.out.println('Age is ' + p.getAge()); } }> Výstup
Name is Rohan Age is 29>
88. Co rozumíte pod pojmem agregace?

Agregace je termín související se vztahem mezi dvěma třídami, který lze nejlépe popsat jako vztah má-a. Tento druh je nejspecializovanější verzí asociace. Je to jednosměrná asociace, což znamená, že jde o jednosměrný vztah. Obsahuje odkaz na jinou třídu a říká se, že je vlastníkem této třídy.
89. Jaký je vztah ‚IS-A‘ v OOPs Java?
‚IS-A‘ je typ vztahu v OOPs Java, kde jedna třída dědí jinou třídu.
90. Definujte dědičnost.
Když objekt, který patří do podtřídy, získá všechny vlastnosti a chování nadřazeného objektu, který je z nadtřídy, nazývá se to dědičnost. Třída v rámci třídy se nazývá podtřída a podtřída se označuje jako nadtřída. Podtřída nebo podřízená třída jsou považovány za specifické, zatímco nadtřída nebo nadřazená třída jsou obecné. Dědičnost zajišťuje opětovné použití kódu.
91. Jaké jsou různé typy dědičnosti v Javě?
Dědičnost je metoda, pomocí které třída Child může zdědit vlastnosti třídy Super nebo Parent. V Javě je dědičnost čtyř typů:
- Jediné dědictví: Když potomek nebo podtřída rozšiřuje pouze jednu nadtřídu, je známo, že jde o jedinou dědičnost. Vlastnosti třídy s jedním rodičem jsou předány podřízené třídě.
- Víceúrovňová dědičnost: Když potomek nebo podtřída rozšiřuje jakoukoli jinou podtřídu, vytvoří se hierarchie dědičnosti, která je známá jako víceúrovňová dědičnost. Jinými slovy, jedna podtřída se stane rodičovskou třídou jiné.
- Hierarchická dědičnost: Když se více podtříd odvozuje od stejné nadřazené třídy, nazývá se to hierarchická dědičnost. Jinými slovy, třída, která má jednoho rodiče, má mnoho podtříd.
- Vícenásobná dědičnost: Když podřízená třída dědí z více nadřazených tříd, nazývá se to vícenásobná dědičnost. V Javě podporuje pouze vícenásobnou dědičnost rozhraní, nikoli tříd.
92. Co je vícenásobná dědičnost? Podporuje to Java?
Komponenta objektově orientovaného pojmu známá jako vícenásobná dědičnost umožňuje třídě dědit vlastnosti z mnoha nadřazených tříd. Když jsou metody se stejnou signaturou přítomny v nadtřídách i podtřídách, vzniká problém. Volající metodu nemůže kompilátoru určit, která metoda třídy by měla být volána nebo dokonce, která metoda třídy by měla mít přednost.
Poznámka: Java nepodporuje vícenásobnou dědičnost
Příklad:
Jáva // Java Program to show multiple Inheritance import java.io.*; interface Animal { void eat(); } interface Mammal { void drink(); } class Dog implements Animal, Mammal { public void eat() { System.out.println('Eating'); } public void drink() { System.out.println('Drinking'); } void bark() { System.out.println('Barking'); } } class GFG { public static void main(String[] args) { Dog d = new Dog(); d.eat(); d.drink(); d.bark(); } }> Výstup
Eating Drinking Barking>
93. Jak se liší dědičnost v C++ od Javy?
Dědičnost v C++ | Dědičnost v Javě |
|---|---|
| C++ umožňuje uživateli zdědit více tříd. | Java nepodporuje vícenásobnou dědičnost. |
| Když je třída vytvořena v C++, nedědí z třídy objektu, místo toho existuje sama o sobě. | O Javě se vždy říká, že má jedinou dědičnost, protože všechny třídy dědí jedním nebo druhým způsobem z třídy objektů. |
94. Existuje nějaké omezení pro použití dědičnosti?
Ano, existuje omezení použití dědičnosti v Javě, protože kvůli dědičnosti lze zdědit vše ze supertřídy a rozhraní, protože podtřída je příliš seskupená a někdy náchylná k chybám, když se v určitých situacích provádí dynamické přepisování nebo dynamické přetížení.
95. Ačkoli je dědění oblíbeným konceptem OOP, je méně výhodné než skládání. Vysvětlit.
Dědičnost je populární koncept objektově orientovaného programování (OOP), ve kterém třída může zdědit vlastnosti a metody z jakékoli jiné třídy, která se označuje jako nadřazená nebo nadtřída. Na druhou stranu v Composition může třída obsahovat instanci jiné třídy jako členskou proměnnou, která je často označována jako část nebo komponenta. Níže uvádíme několik důvodů, proč je složení výhodnější než dědičnost:
- Těsné spojení: Kdykoli jsou v nadtřídě provedeny jakékoli změny, mohou tyto změny ovlivnit chování všech jejích potomků nebo podtříd. Tento problém snižuje flexibilitu kódu a také vytváří problémy během údržby. Tento problém také vede k těsnému propojení mezi třídami.
- Problém křehké základní třídy: Když změny základní třídy mohou narušit funkčnost jejích odvozených tříd. Tento problém může ztížit přidávání nových funkcí nebo úpravu stávajících. Tento problém je známý jako problém třídy Fragile Base.
- Omezené opětovné použití: Dědičnost v Javě může vést k omezenému opětovnému použití kódu a také k duplikaci kódu. Protože podtřída dědí všechny vlastnosti a metody své nadtřídy, někdy může skončit se zbytečným kódem, který není potřeba. To vede k méně udržovatelné kódové základně.
96. Co je to sdružení?
Asociace je vztah mezi dvěma samostatnými třídami vytvořenými prostřednictvím jejich objektů. Představuje vztah Has-A.
97. Co rozumíte pod pojmem agregace?
Kompozice je omezená forma agregace, ve které jsou dvě entity na sobě vysoce závislé. Reprezentuje část vztah.
98. Jaké je složení Java?
Složení implikuje vztah, kde dítě nemůže existovat samostatně rodiče. Například lidské srdce, srdce neexistuje odděleně od člověka.
99. Uveďte rozdíl mezi složením a agregací.
Agregace | Složení |
|---|---|
Definuje vztah mezi objekty | Představuje část vztahu |
Objekty jsou na sobě nezávislé. | Objekty jsou na sobě závislé. |
Znázorněte to pomocí vyplněného diamantu. | Znázorněte to pomocí prázdného diamantu. |
Dětské předměty nemají životnost. | Dětské předměty mají celý život. |
100. Lze konstruktor zdědit?
Ne, nemůžeme zdědit konstruktor.
101. Co je to polymorfismus?
Polymorfismus je definován jako schopnost mít více než jednu formu. Jedná se o dva typy, jmenovitě polymorfismus v době kompilace nebo přetížení metody – funkce volaná během kompilace. Vezměte si například třídu ‚oblast‘. Na základě počtu parametrů může vypočítat plochu čtverce, trojúhelníku nebo kruhu. Polymorfismus doby běhu nebo odkazy přepisující metody během běhu. Metoda uvnitř třídy přepíše metodu nadřazené třídy.
102. Co je to runtime polymorfismus nebo dynamické odesílání metod?
Dynamické odesílání metod je rozlišovací mechanismus pro přepisování metod během běhu. Přepsání metody je takové, kdy má metoda v podtřídě stejný název, parametry a návratový typ jako metoda v nadtřídě. Když je přepsaná metoda volána prostřednictvím odkazu na nadtřídu, jazyk Java určí, která verze (nadtřída nebo podtřída) této metody se má provést na základě typu objektu, na který se odkazuje v době volání. Rozhodnutí je tedy učiněno za běhu. Toto se nazývá odeslání dynamické metody.
103. Co je přednostní metoda?
Přepsání metody, známé také jako polymorfismus za běhu, je takové, kdy podřízená třída obsahuje stejnou metodu jako nadřazená třída. V nadřazené třídě máme například metodu s názvem ‚gfg()‘. V podtřídě je opět definována metoda gfg(). Když se tedy v podtřídě zavolá gfg(), provede se metoda v rámci id třídy. Zde gfg() v rámci třídy přepíše metodu venku.
104. Co je přetížení metody?

Přepsání metody je metoda k dosažení polymorfismu za běhu v Javě. Přepsání metody je funkce, která umožňuje podřízené třídě poskytovat konkrétní implementaci metody, kterou již poskytuje jedna z jejích nadřazených tříd. Když má metoda v podřízené třídě stejný název, stejné parametry nebo podpis a stejný návratový typ (nebo podtyp) jako metoda v její rodičovské třídě, pak se říká, že metoda v podtřídě přepíše metodu v supertřída.
105. Můžeme přepsat statickou metodu?
Ne, protože statické metody jsou součástí třídy spíše než objektu, takže je nemůžeme přepsat.
106. Můžeme přepsat přetíženou metodu?
Ano, protože přetížená metoda je v očích kompilátoru úplně jiná metoda. Přepsání není vůbec totéž. Rozhodnutí o tom, kterou metodu zavolat, je odloženo na runtime.
107. Můžeme přetížit metodu main()?
Ano v Javě můžeme přetížit hlavní metodu voláním hlavní metody pomocí její předdefinované metody volání.
108. Co je přetěžování metody a přepisování metody?
Přetížení metody: Je také známý jako polymorfismus doby kompilace. Při přetížení metody jsou dvě nebo více metod sdíleny ve stejné třídě s různým podpisem.
Příklad:
Jáva // Java Program to demonstrate use of Method Overloading import java.io.*; class GFG { static int multiply(int a, int b) { return a * b; } static int multiply(int a, int b, int c) { return a * b * c; } static int multiply(int a, int b, int c, int d) { return a * b * c * d; } public static void main(String[] args) { System.out.println('multiply() with 2 parameters'); System.out.println(multiply(4, 5)); System.out.println('multiply() with 3 parameters'); System.out.println(multiply(2, 3, 4)); System.out.println('multiply() with 4 parameters'); System.out.println(multiply(2, 3, 4, 1)); } }> Výstup
multiply() with 2 parameters 20 multiply() with 3 parameters 24 multiply() with 4 parameters 24>
Přepsání metody: K přepsání metody dochází, když podtřída může poskytovat implementaci metody, která je již definována v nadřazené třídě nebo nadtřídě. Návratový typ, název a argumenty musí být podobné metodám v nadtřídě.
Příklad:
Jáva // Java Program to demonstrate use of Method Overriding import java.io.*; class Vehicle { void drive() { System.out.println('drive() method of base class'); System.out.println('driving the Car.'); } } class Car extends Vehicle { void drive() { System.out.println( 'drive() method of derived class'); System.out.println('Car is driving.'); } } class GFG { public static void main(String[] args) { Car c1 = new Car(); Vehicle v1 = new Vehicle(); c1.drive(); v1.drive(); Vehicle vehicle = new Car(); // drive() method of Vehicle class is overridden by // Car class drive() vehicle.drive(); } }> Výstup
drive() method of derived class Car is driving. drive() method of base class driving the Car. drive() method of derived class Car is driving.>
Přetížení metody | Přepsání metody |
|---|---|
Když jsou dvě nebo více metod ve stejné třídě s různými parametry, ale stejným názvem. | Když podtřída poskytuje vlastní implementaci metody, která je již definována v nadřazené třídě. |
K přetížení metody může dojít pouze ve stejné třídě nebo mezi podtřídou nebo nadřazenou třídou. | K přepsání metody může dojít pouze v podtřídě. |
Když dojde k chybě, je zachycena v době kompilace programu. | Když dojde k chybě, je zachycena za běhu programu. |
Příklad polymorfismu doby kompilace. | Příklad polymorfismu za běhu. |
Metoda Přetížení může, ale nemusí vyžadovat dědičnost. | Přepsání metody vždy vyžaduje dědičnost. |
Vyskytuje se v rámci třídy. | Provádí se ve dvou třídách s dědičným vztahem. |
109. Můžeme potlačit soukromé metody?
V Javě není možné přepsat soukromé metody. Přepsání metody je tam, kde je implementována metoda v podtřídě namísto metody z nadřazené třídy. Soukromé metody jsou přístupné pouze v rámci třídy, ve které jsou deklarovány. Protože tato metoda není viditelná pro ostatní třídy a nelze k ní přistupovat, nelze ji přepsat.
110. Můžeme změnit rozsah přepsané metody v podtřídě?
V Javě není možné upravit rozsah přepsané metody. Rozsah metody podtřídy musí být stejný nebo širší než rozsah přepsané metody metody Superclass. Přepsaná metoda v podtřídě může mít například veřejný rozsah nebo přístupnější rozsah, jako je chráněný nebo výchozí, pokud má přepsaná metoda v nadtřídě veřejný rozsah. Nemůže však mít exkluzivnější rozsah, jako je soukromý.
111. Můžeme upravit klauzuli throws metody nadtřídy a zároveň ji přepsat v podtřídě?
Klauzuli throws metody Superclass můžeme upravit s určitými omezeními, můžeme změnit klauzuli throws metody superclass a přepsat ji v podtřídě. Metoda potlačení podtřídy může specifikovat nekontrolované výjimky pouze v případě, že metoda nadtřídy nedeklaruje žádné výjimky. Pokud metoda nadtřídy deklaruje výjimku, metoda podtřídy může deklarovat stejnou výjimku, výjimku podtřídy nebo žádnou výjimku. Metoda podtřídy však nemůže deklarovat nadřazenou výjimku, která je širší než ty, které jsou deklarovány v metodě nadtřídy.
112. Můžete mít virtuální funkce v Javě?
Ano, Java podporuje virtuální funkce. Funkce jsou ve výchozím nastavení virtuální a lze je změnit na nevirtuální pomocí klíčového slova final.
113. Co je abstrakce?
Abstrakce se týká aktu reprezentace základních rysů bez zahrnutí detailů pozadí. Podrobné informace nebo implementace jsou skryté. Nejčastějším příkladem abstrakce je auto, víme, jak zapnout motor, zrychlit a pohybovat se, nicméně způsob, jakým motor funguje, a jeho vnitřní součásti jsou složitou logikou skrytou běžným uživatelům. To se obvykle provádí kvůli zvládnutí složitosti.
114. Co je abstraktní třída?
Třídu deklarovanou jako abstraktní nelze vytvořit instanci, tj. nelze vytvořit objekt. Může nebo nemusí obsahovat abstraktní metody, ale pokud má třída alespoň jednu abstraktní metodu, musí být deklarována jako abstraktní.
Příklad abstraktní třídy s abstraktní metodou:
Jáva // Java Program to implement // abstract method import java.io.*; // Abstract class abstract class Fruits { abstract void run(); } // Driver Class class Apple extends Fruits { void run() { System.out.println('Abstract class example'); } // main method public static void main(String args[]) { Fruits obj = new Apple(); obj.run(); } }> 115. Kdy se používají abstraktní metody?
Abstraktní metoda se používá, když chceme použít metodu, ale chceme, aby o implementaci rozhodovaly podřízené třídy, v takovém případě použijeme abstraktní metody s nadřazenými třídami.
116. Jak se můžete vyhnout serializaci v podřízené třídě, pokud základní třída implementuje rozhraní Serializable?
Serializaci v podřízené třídě, pokud základní třída implementuje rozhraní Serializable, se jí můžeme vyhnout definováním metody writeObject() a vyvoláním NotSerializableException().
117. Co je Collection Framework v Javě?
Kolekce jsou jednotky objektů v Javě. Kolektivní rámec je sada rozhraní a tříd v Javě, které se používají k reprezentaci a manipulaci s kolekcemi objektů různými způsoby. Rámec kolekce obsahuje třídy (ArrayList, Vector, LinkedList, PriorityQueue, TreeSet) a více rozhraní (Set, List, Queue, Deque), kde každé rozhraní slouží k ukládání určitého typu dat.
118. Vysvětlete různá rozhraní používaná v rámci Collection.
Implementace rámce kolekce
- Rozhraní kolekce
- Rozhraní seznamu
- Nastavit rozhraní
- Rozhraní fronty
- A rozhraní
- Mapové rozhraní
Rozhraní sbírky: Collection je primární dostupné rozhraní, které lze importovat pomocí java.util.Collection.
Syntax:
public interface Collection extends iterable>
119. Jak můžete synchronizovat ArrayList v Javě?
ArrayList lze synchronizovat pomocí dvou níže uvedených metod:
- Použití Collections.synchronizedList()
- Pomocí CopyOnWriteArrayList
Pomocí Collections.synchronizedList():
public static List synchronizedList(List list)>
Použití CopyOnWriteArrayList:
- Vytvořte prázdný seznam.
- Implementuje rozhraní Seznam
- Je to vlákno-safe varianta ArrayList
- T představuje generický
120. Proč potřebujeme synchronizovaný ArrayList, když máme vektory (které jsou synchronizované) v Javě?
ArrayList je z určitých důvodů potřeba, i když máme vektory:
- ArrayList je rychlejší než Vectors.
- ArrayList podporuje multithreading, zatímco Vectors podporuje pouze jednovláknové použití.
- ArrayList je bezpečnější, protože Vectors podporuje jednotlivá vlákna a jednotlivé operace jsou méně bezpečné a jejich synchronizace trvá déle.
- Vektory jsou v Javě považovány za zastaralé kvůli jejich synchronizované povaze.
121. Proč nemůžeme vytvořit generické pole?
Obecná pole nelze vytvořit, protože pole nese informace o typu jeho prvků za běhu, kvůli čemuž během běhu vyvolá ‚ArrayStoreException‘, pokud si typ prvků není podobný. Vzhledem k tomu, že informace o generických typech jsou vymazány v době kompilace pomocí Type Erasure, kontrola úložiště pole by prošla tam, kde měla selhat.
122. Souvislá paměťová místa se obvykle používají pro ukládání skutečných hodnot v poli, ale ne v ArrayList. Vysvětlit.
Prvky pole jsou uloženy v souvislých paměťových místech, což znamená, že každý prvek je uložen v samostatném bloku na základě něj umístěného v poli. Vzhledem k tomu, že prvky pole jsou uloženy na souvislých místech, může být relativně snadné přistupovat k libovolnému prvku podle jeho indexu, protože adresu prvku lze vypočítat na základě umístění prvku. Ale Java implementuje ArrayLists jako dynamická pole, což znamená, že velikost se může měnit, když jsou prvky odebírány nebo přidávány. Prvky ArrayList nejsou uloženy v souvislých paměťových místech, aby se přizpůsobily této dynamické povaze. Místo toho ArrayList využívá metodu známou jako rozšiřitelné pole, ve kterém je základní pole podle potřeby rozšířeno na větší velikost a prvky jsou poté zkopírovány do nového umístění. Na rozdíl od ArrayListu, který má dynamickou velikost a neukládá své prvky do souvislých paměťových míst, má pole pevnou velikost a jeho prvky jsou uloženy tam.
123. Vysvětlete metodu převodu ArrayList na Array a Array na ArrayList.
Konverze seznamu na ArrayList
Existuje několik metod, jak převést List na ArrayList

Programátoři mohou převést Array na ArrayList pomocí metody asList() třídy Arrays. Je to statická metoda třídy Arrays, která přijímá objekt List.
Syntax:
Arrays.asList(item)>
Příklad:
Jáva // Java program to demonstrate conversion of // Array to ArrayList of fixed-size. import java.util.*; // Driver Class class GFG { // Main Function public static void main(String[] args) { String[] temp = { 'Abc', 'Def', 'Ghi', 'Jkl' }; // Conversion of array to ArrayList // using Arrays.asList List conv = Arrays.asList(temp); System.out.println(conv); } }> Výstup
[Abc, Def, Ghi, Jkl]>
Konverze ArrayList na Array

Programátoři Java mohou převést ArrayList na
Syntax:
List_object.toArray(new String[List_object.size()])>
Příklad:
Jáva // Java program to demonstrate working of // Objectp[] toArray() import java.io.*; import java.util.List; import java.util.ArrayList; // Driver Class class GFG { // Main Function public static void main(String[] args) { // List declared List<Integer> arr = new ArrayList<Integer>(); arr.add(1); arr.add(2); arr.add(3); arr.add(2); arr.add(1); // Conversion Object[] objects = arr.toArray(); // Printing array of objects for (Object obj : objects) System.out.print(obj + ' '); } }> Výstup
1 2 3 2 1>
124. Jak dynamicky roste velikost ArrayList? A také uveďte, jak je to interně implementováno.
Vzhledem k povaze založené na poli ArrayLists dynamicky roste velikost, což zajišťuje, že je vždy dostatek místa pro prvky. Když je prvek ArrayList vytvořen poprvé, výchozí kapacita je přibližně 10-16 prvků, což v podstatě závisí na verzi Java. Prvky ArrayList se zkopírují z původního pole do nového, když je kapacita původního pole plná. Jak se velikost ArrayList dynamicky zvyšuje, třída vytvoří nové pole větších velikostí a zkopíruje všechny prvky ze starého pole do nového pole. Nyní je reference nového pole použita interně. Tento proces dynamického růstu pole se nazývá změna velikosti.
125. Co je to vektor v Javě?
Vektory v Javě jsou podobné a mohou do nich uložit více prvků. Vektory dodržují určitá pravidla uvedená níže:
- Vektor lze importovat pomocí Java.util.Vector.
- Vektor je implementován pomocí dynamického pole, jak se velikost vektoru zvětšuje a zmenšuje v závislosti na prvcích do něj vložených.
- Prvky vektoru pomocí indexových čísel.
- Vektory jsou ve své podstatě synchronizované, což znamená, že používají pouze jedno vlákno (v určitou dobu se provádí pouze jeden proces).
- Vektor obsahuje mnoho metod, které nejsou součástí rámce kolekcí.
Syntax:
Vector gfg = new Vector(size, increment);>
126. Jak nastavit Java ArrayList pouze pro čtení?
ArrayList lze připravit pouze pomocí metody poskytované Collections pomocí metody Collections.unmodifiableList().
Syntax:
array_readonly = Collections.unmodifiableList(ArrayList);>
Příklad:
Jáva // Java program to demonstrate // unmodifiableList() method import java.util.*; public class Main { public static void main(String[] argv) throws Exception { try { // creating object of ArrayList <Character> ArrayList<Character> temp = new ArrayList<Character>(); // populate the list temp.add('X'); temp.add('Y'); temp.add('Z'); // printing the list System.out.println('Initial list: ' + temp); // getting readonly list // using unmodifiableList() method List<Character> new_array = Collections.unmodifiableList(temp); // printing the list System.out.println('ReadOnly ArrayList: ' + new_array); // Adding element to new Collection System.out.println('
If add element in ' + ' the ReadOnly ArrayList'); new_array.add('A'); } catch (UnsupportedOperationException e) { System.out.println('Exception is thrown : ' + e); } } }> Výstup
Initial list: [X, Y, Z] ReadOnly ArrayList: [X, Y, Z] If add element in the ReadOnly ArrayList Exception is thrown : java.lang.UnsupportedOperationException>
127. Co je prioritní fronta v Javě?

Prioritní fronta je abstraktní datový typ podobný běžné frontě nebo datové struktuře zásobníku. Prvky uložené v prvcích jsou závislé na prioritě definované od nízké po vysokou. PriorityQueue je založena na prioritní haldě.
Syntax:
Jáva // Java program to demonstrate the // working of PriorityQueue import java.util.*; class PriorityQueueDemo { // Main Method public static void main(String args[]) { // Creating empty priority queue PriorityQueue<Integer> var1 = new PriorityQueue<Integer>(); // Adding items to the pQueue using add() var1.add(10); var1.add(20); var1.add(15); // Printing the top element of PriorityQueue System.out.println(var1.peek()); } }> Výstup
10>
128. Vysvětlete třídu LinkedList.
Třída LinkedList je Java, která používá k ukládání prvků dvojitě propojený seznam. Zdědí třídu AbstractList a implementuje rozhraní List a Deque. Vlastnosti třídy LinkedList jsou uvedeny níže:
- Třídy LinkedList nejsou synchronizovány.
- Udržuje pořadí vložení.
- Může být použit jako seznam, zásobník nebo fronta.
Syntax:
LinkedList list_name=new LinkedList();>
129. Co je třída Stack v Javě a jaké různé metody poskytuje?
Třída Stack v Javě je datová struktura LIFO, která implementuje datovou strukturu Last In First Out. Je odvozen od třídy Vector, ale má funkce specifické pro zásobníky. Třída Stack v jazyce Java poskytuje následující metody:
- kouknout(): vrátí horní položku ze zásobníku, aniž by ji odstranil
- prázdný(): vrátí hodnotu true, pokud je zásobník prázdný, a v opačném případě vrátí hodnotu false
- TAM(): posune položku na vrchol zásobníku
- pop(): odebere a vrátí horní položku ze zásobníku
- Vyhledávání(): vrátí polohu 1 založenou na objektu z horní části zásobníku. Pokud objekt není v zásobníku, vrátí -1
130. Co je nastaveno v rámci Java Collections a vyjmenujte jeho různé implementace?
Sady jsou kolekce, které neukládají duplicitní prvky. Nedodržují žádné pořadí prvků. Framework Java Collections poskytuje několik implementací rozhraní Set, včetně:
- HashSet: HashSet v Javě ukládá prvky do tabulky has, která poskytuje rychlejší vyhledávání a rychlejší vkládání. HashSet není objednán.
- LinkedHashSet: LinkedHashSet je implementace HashSet, která udržuje pořadí vkládání prvků.
- Sada stromů: TreeSet ukládá prvky v seřazeném pořadí, které je určeno přirozeným řazením prvků nebo vlastním komparátorem poskytovaným v době vytvoření.
131. Co je třída HashSet v Javě a jak ukládá prvky?
Třída HashSet implementuje rozhraní Set v Java Collections Framework a je členem třídy HashSet. Na rozdíl od duplicitních hodnot ukládá kolekci odlišných prvků. V této implementaci je každý prvek mapován na index v poli pomocí hashovací funkce a index se používá k rychlému přístupu k prvku. Vytváří index pro prvek v poli, kde je uložen na základě vstupního prvku. Za předpokladu, že hashovací funkce vhodně rozdělí prvky mezi segmenty, poskytuje třída HashSet výkon v konstantním čase pro základní operace (přidání, odebrání, obsah a velikost).
132. Co je LinkedHashSet v Java Collections Framework?
LinkedHashSet je uspořádaná verze Hashset udržovaná dvojitě propojeným seznamem napříč všemi prvky. Je to velmi užitečné, když je potřeba iterační pořadí. Během iterace v LinkedHashSet jsou prvky vráceny ve stejném pořadí, v jakém byly vloženy.
Syntax:
LinkedHashSet hs = new LinkedHashSet();>
Příklad:
Jáva // Java Program to implement // LinkedHashSet import java.io.*; import java.util.*; // Driver Class class GFG { // Main Function public static void main(String[] args) { // LinkedHashSet declared LinkedHashSet<Integer> hs = new LinkedHashSet<Integer>(); // Add elements in HashSet hs.add(1); hs.add(2); hs.add(5); hs.add(3); // Print values System.out.println('Values:' + hs); } }> Výstup
Values:[1, 2, 5, 3]>
133. Co je mapové rozhraní v Javě?

Mapové rozhraní je přítomno v kolekci Java a lze jej použít s balíčkem Java.util. Pro mapování hodnot ve formě formuláře klíč-hodnota se používá mapové rozhraní. Mapa obsahuje všechny jedinečné klíče. Poskytuje také metody, které jsou s ním spojeny, jako například obsahujeKey(), obsahuje hodnotu () atd.
V mapovém rozhraní je několik typů map, jak je uvedeno níže:
- Seřazená mapa
- Stromová mapa
- HashMap
- LinkedHashMap
134. Vysvětlete Treemap v Javě
TreeMap je typ mapy, která ukládá data ve formě páru klíč-hodnota. Je implementován pomocí červeno-černého stromu. Vlastnosti TreeMap jsou:
- Obsahuje pouze jedinečné prvky.
- Nemůže mít klíč NULL
- Může mít více hodnot NULL.
- Je nesynchronizovaná.
- Udržuje vzestupné pořadí.
135. Co je EnumSet?
EnumSet je specializovaná implementace rozhraní Set pro použití s typem výčtu. Některé funkce EnumSet jsou:
- Je nesynchronizovaná.
- Rychlejší než HashSet.
- Všechny prvky v EnumSet musí pocházet z jednoho typu výčtu.
- Nepovoluje objekty null a pro výjimky vyvolá výjimku NullPointerException.
- Používá iterátor odolný proti selhání.
Syntax:
public abstract class EnumSet >
Parametr: E specifikuje prvky.
136. Co je BlockingQueue?

Blokovací fronta je fronta, která podporuje operace, které při načítání a odebírání prvku čekají, až se fronta vyprázdní, a při přidávání prvku čekají, až se ve frontě uvolní místo.
Syntax:
public interface BlockingQueue extends Queue>
Parametry: E je typ prvků uložených v kolekci
137. Co je ConcurrentHashMap v Javě a implementujete ji?
ConcurrentHashMap je implementován pomocí Hashtable.
Syntax:
public class ConcurrentHashMap extends AbstractMap implements ConcurrentMap, Serializable>
Parametry : K je klíč Typ objektu a V je hodnota Typ objektu
138. Můžete použít jakoukoli třídu jako klíč mapy?
Ano, jako klíč mapy můžeme použít jakoukoli třídu, pokud dodržuje určitá předem definovaná pravidla uvedená níže:
- Třída přepisující metodu equals() musí také přepsat metodu hashCode().
- Třída concurrentHashMap je bezpečná pro vlákna.
- Výchozí úroveň souběžnosti ConcurrentHashMap je 16.
- Vkládání prázdných objektů do ConcurrentHashMap není možné jako klíč nebo jako hodnotu.
139. Co je to iterátor?

Rozhraní Iteratoru poskytuje metody pro iteraci jakékoli kolekce v Javě. Iterator je náhrada Enumeration v Java Collections Framework. Může získat instanci iterátoru z kolekce pomocí metody _iterator()_. Umožňuje také volajícímu odstranit prvky ze základní kolekce během iterace.
140. Co je to výčet?
Výčet je uživatelsky definovaný datový typ. Používá se hlavně k přiřazování názvů integrálním konstantám, názvy usnadňují čtení a údržbu programu. Hlavním cílem výčtu je definovat uživatelem definované datové typy.
Příklad:
// A simple enum example where enum is declared // outside any class (Note enum keyword instead of // class keyword) enum Color { RED, GREEN, BLUE; }>141. Jaký je rozdíl mezi Collection a Collections?
Sbírka | Sbírky |
|---|---|
Kolekce je rozhraní. | Kolekce je třída. |
Poskytuje standardní funkcionalitu datové struktury. | Jde o třídění a synchronizaci prvků kolekce. |
Poskytuje metody, které lze použít pro datovou strukturu. převést int na řetězec c++ | Poskytuje statické metody, které lze použít pro různé operace. |
142. Rozlišujte mezi Array a ArrayList v Javě.
Pole | ArrayList |
|---|---|
Jednorozměrné nebo vícerozměrné | Jednorozměrné |
Pro a pro každou použitou pro iteraci | Zde se iterátor používá k procházení riverArrayList |
Délka klíčového slova vrací velikost pole. | metoda size() se používá k výpočtu velikosti ArrayList. |
Pole má pevnou velikost. | Velikost ArrayList je dynamická a lze ji v případě potřeby zvětšit nebo zmenšit. |
Je rychlejší, jak vidíme výše, s pevnou velikostí | Je relativně pomalejší kvůli své dynamické povaze |
Primitivní datové typy mohou být uloženy přímo v nepravděpodobných objektech. | Primitivní datové typy nejsou přidávány přímo do nepravděpodobných polí, jsou přidávány nepřímo pomocí autoboxing a unboxing |
Nelze je sem přidat, proto je typ nebezpečný. | Mohou být přidány sem, takže ArrayList je typově bezpečný. |
Operátor přiřazení slouží pouze účelu | Zde se používá speciální metoda známá jako metoda add(). |
143. Jaký je rozdíl mezi Array a Collection v Javě?
Pole | Sbírky |
|---|---|
Pole v Javě má pevnou velikost. | Kolekce v Javě mají dynamické velikosti. |
V poli jsou prvky uloženy v souvislých paměťových místech. | V kolekcích nejsou prvky nutně uloženy v souvislých paměťových místech. |
Objekty a primitivní datové typy lze uložit do pole. | Předměty můžeme ukládat pouze do sbírek. |
Pro změnu velikosti pole je nutná ruční manipulace. | Změna velikosti v kolekcích je řešena automaticky. |
Pole má základní metody pro manipulaci. | Kolekce mají pokročilé metody pro manipulaci a iteraci. |
Pole je dostupné od počátku Java. | Kolekce byly představeny v Javě 1.2. |
144. Rozdíl mezi ArrayList a LinkedList.
ArrayList | Spojový seznam |
|---|---|
ArrayList je implementován jako rozšiřitelné pole. | LinkedList je implementován jako dvojitě propojený seznam. |
V ArrayList jsou prvky uloženy v souvislých paměťových místech | Prvky LinkedList jsou uloženy v nesouvislých paměťových místech, protože každý prvek má odkaz na další a předchozí prvky. |
ArrayLists jsou rychlejší pro náhodný přístup. | LinkedLists jsou rychlejší pro operace vkládání a mazání |
ArrayLists jsou paměťově efektivnější. | LinkedList je méně paměťově efektivní |
ArrayLists Použijte více paměti kvůli zachování velikosti pole. | LinkedList Používá méně paměti, protože obsahuje pouze odkazy na prvky |
Operace vyhledávání je rychlejší v ArrayList. | Operace vyhledávání je v LinkedList pomalejší |
145. Rozlišujte mezi ArrayList a Vector v Javě.
ArrayList | Vektor |
|---|---|
ArrayLists jsou implementovány jako rozšiřitelné pole. | Vektor je implementován jako pěstovatelné pole. |
ArrayList není synchronizován. | Vektor je synchronizován. |
ArrayLists jsou rychlejší pro nesouběžné operace. | Vector je pomalejší pro nesouběžné operace kvůli zvýšené režii synchronizace. |
ArrayLists byly představeny v Javě 1.2. | Vektor byl představen v JDK 1.0. |
Doporučeno pro použití v prostředí s jedním vláknem. | Vektory se doporučují pro použití v prostředí s více vlákny. |
Výchozí počáteční kapacita ArrayLists je 10. | Ve vektorech je výchozí počáteční kapacita 10, ale výchozí přírůstek je dvojnásobek velikosti. |
Výkon ArrayList je vysoký. | Výkon vektoru je nízký. |
146. Jaký je rozdíl mezi Iteratorem a ListIteratorem?
Iterátor | ListIterator |
|---|---|
Může procházet prvky přítomné v kolekci pouze směrem dopředu. | Dokáže procházet prvky přítomné ve sbírce ve směru dopředu i dozadu. |
Používá se k procházení mapy, seznamu a sady. | Může procházet pouze seznamem a nikoli dalšími dvěma. |
Indexy nelze získat pomocí Iteratoru | Má metody jako nextIndex() a previousIndex() k získání indexů prvků kdykoli při procházení seznamu. |
Prvky ve sbírce nelze upravit ani nahradit | Může upravit nebo nahradit prvky pomocí sady (E e) |
Nelze přidat prvky a také vyvolá výjimku ConcurrentModificationException. | Může kdykoli snadno přidat prvky do sbírky. |
Některé metody iterátoru jsou next(), remove() a hasNext(). | Některé metody ListIteratoru jsou next(), previous(), hasNext(), hasPrevious(), add(E e). |
147. Rozlišujte mezi HashMap a HashTable.
HashMap | HashTable |
|---|---|
HashMap není synchronizován | HashTable je synchronizována |
Jeden klíč může mít hodnotu NULL | Hodnoty NULL nejsou povoleny |
Iterátor se používá k procházení HashMap. | Lze použít Iterator i Enumertar |
HashMap je rychlejší. | HashTable je ve srovnání s HashMap pomalejší. |
148. Jaký je rozdíl mezi Iterátorem a Enumerací?
Iterátor | Výčet |
|---|---|
Iterátor může procházet jak legacy, tak i non-legacy prvky. | Výčet může procházet pouze staršími prvky. |
Iterátor je rychlý při selhání. | Výčet není rychlý. |
Iterátory jsou pomalejší. | Výčet je rychlejší. |
Iterátor může při procházení kolekce provést operaci odstranění. | Výčet může provádět pouze operace procházení kolekce. |
149. Jaký je rozdíl mezi srovnatelným a komparátorem?
Srovnatelný | Komparátor |
|---|---|
Rozhraní je přítomno v balíčku java.lang. | Rozhraní je přítomno v balíčku java.util. |
Poskytuje metodu CompareTo() k řazení prvků. | Poskytuje metodu Compare() k řazení prvků. |
Poskytuje jednotlivé sekvence řazení. | Poskytuje několik třídicích sekvencí. |
Logika řazení musí být ve stejné třídě, jejíž objekt budete třídit. | Logika řazení by měla být v samostatné třídě, aby bylo možné zapisovat různé řazení na základě různých atributů objektů. |
Metoda třídí data podle pevného pořadí řazení. | Metoda třídí data podle přizpůsobeného pořadí řazení. |
Ovlivňuje původní třídu. | Nemá vliv na původní třídu. |
Často implementováno v API pomocí kalendáře, tříd Wrapper, data a řetězce. | Je implementován k řazení instancí tříd třetích stran. |
150. Jaký je rozdíl mezi Set a Map?
Soubor | Mapa |
|---|---|
Rozhraní Set je implementováno pomocí balíčku java.util. | Mapa je implementována pomocí balíčku java.util. |
Může rozšířit sběrné rozhraní. | Nerozšiřuje sběrné rozhraní. |
Nepovoluje duplicitní hodnoty. | Umožňuje duplicitní hodnoty. |
Sada může seřadit pouze jednu hodnotu null. | Mapa může řadit více hodnot null. |
Otázky k pohovoru Java pro středně pokročilé
151. Vysvětlete iterátor FailFast a iterátor FailSafe spolu s příklady pro každý z nich.
Iterátor FailFast je iterátor, který vyvolá a ConcurrentModificationException pokud zjistí, že podkladová kolekce byla změněna během používání iterátoru. Toto je výchozí chování iterátorů v rámci Java Collections Framework. Například iterátor pro HashMap je FailFast.
Příklad:
Jáva // Java Program to demonstrate FailFast iterator import java.io.*; import java.util.HashMap; import java.util.Iterator; import java.util.Map; class GFG { public static void main(String[] args) { HashMap<Integer, String> map = new HashMap<>(); map.put(1, 'one'); map.put(2, 'two'); Iterator<Map.Entry<Integer, String> > iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<Integer, String> entry = iterator.next(); // this will throw a // ConcurrentModificationException if (entry.getKey() == 1) { map.remove(1); } } } }> Výstup:
Exception in thread 'main' java.util.ConcurrentModificationException>
Iterátor FailSafe nevyvolá a ConcurrentModificationException pokud je podkladová kolekce upravena během používání iterátoru. Případně vytvoří snímek kolekce v době vytvoření iterátoru a iteruje snímek. Například iterátor pro ConcurrentHashMap je FailSafe.
Příklad:
Jáva
// Java Program to demonstrate FailSafe import java.io.*; import java.util.Iterator; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; class GFG { public static void main(String[] args) { ConcurrentHashMap<Integer, String> map = new ConcurrentHashMap<>(); map.put(1, 'one'); map.put(2, 'two'); Iterator<Map.Entry<Integer, String> > iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<Integer, String> entry = iterator.next(); // this will not throw an exception if (entry.getKey() == 1) { map.remove(1); } } } }> 152. Co je zpracování výjimek?
An Výjimka je událost, která přeruší normální tok programu a vyžaduje speciální zpracování. Během provádění programu lze chyby a neplánované výskyty řešit pomocí mechanismu Java Exception Handling. Níže jsou uvedeny některé důvody, proč se v Javě vyskytují výjimky:
- Selhání zařízení
- Ztráta síťového připojení
- Chyby kódu
- Otevření nedostupného souboru
- Neplatný uživatelský vstup
- Fyzická omezení (nedostatek paměti na disku)
153. Kolik typů výjimek může nastat v programu Java?

V Javě obecně existují dva typy výjimek:
- Vestavěné výjimky: Vestavěné výjimky v Javě poskytují knihovny Java. Tyto výjimky lze dále rozdělit do dvou podkategorií, tj. zaškrtnuté a nezaškrtnuté výjimky. Níže jsou uvedeny některé z vestavěných výjimek v Javě:
- ArrayIndexOutOfBoundsExceptions
- ClassNotFoundException
- FileNotFoundException
- IOException
- Výjimka NullPointerException
- Aritmetická výjimka
- InterruptedException
- RuntimeException
- Uživatelem definované výjimky: Uživatelsky definované výjimky jsou definovány samotnými programátory, aby zvládly některé specifické situace nebo chyby, které nejsou pokryty vestavěnými výjimkami. Chcete-li definovat uživatelem definované výjimky, musí být definována nová třída, která rozšiřuje příslušnou třídu výjimky. Uživatelem definované výjimky v Javě se používají, když jsou vestavěné výjimky v Javě.
154. Rozdíl mezi chybou a výjimkou.
Chyby | Výjimky |
|---|---|
Obnova z chyb není možná. | Obnovte se z výjimek buď pomocí bloku try-catch nebo vrácením výjimek zpět volajícímu. |
Chyby jsou všechny nekontrolované typy v Javě. | Zahrnuje zaškrtnuté i nezaškrtnuté typy, které se vyskytují. |
Chyby jsou většinou způsobeny prostředím, ve kterém program běží. | Program je většinou zodpovědný za způsobení výjimek. |
Chyby mohou nastat v době kompilace i během běhu. Doba kompilace: Chyba syntaxe, Doba běhu: Logická chyba. | Všechny výjimky se vyskytují za běhu, ale zaškrtnuté výjimky jsou kompilátoru známy, zatímco nezaškrtnuté ne. |
Jsou definovány v balíčku java.lang.Error. | Jsou definovány v balíčku java.lang.Exception |
Příklady : java.lang.StackOverflowError, java.lang.OutOfMemoryError | Příklady : Zaškrtnuté výjimky: SQLException, IOException Nezaškrtnuté výjimky: ArrayIndexOutOfBoundException, NullPointerException, ArithmeticException. |
155. Vysvětlete hierarchii tříd Java Exception.

Všechny typy výjimek a chyb v Javě jsou podtřídy třídy throwable, což je základní třída hierarchie. Tato třída se pak používá pro výjimečné stavy, které by měly uživatelské programy zachytit. NullPointerException je příkladem takové výjimky. Další větev, chyba, kterou používá běhový systém Java k označení chyb souvisejících s JRE. StackOverflowError je příkladem jedné z takových chyb.
156. Vysvětlete výjimky za běhu.
Výjimky za běhu jsou výjimky, ke kterým dochází během provádění kódu, na rozdíl od výjimek v době kompilace, ke kterým dochází během kompilace. Výjimky za běhu jsou nekontrolované výjimky, protože s nimi JVM nepočítá.
Příklady výjimek za běhu v Javě zahrnují:
- NullPointerException: K tomu dochází, když se aplikace pokusí použít odkaz na prázdný objekt.
- ArrayIndexOutOfBoundsException: K tomu dochází, když se aplikace pokusí o přístup k indexu pole, který je mimo hranice.
- ArithmeticException: K tomu dochází, když se aplikace pokusí dělit nulou.
- IllegalArgumentException: K tomu dochází, když je metoda předána nelegálnímu nebo nevhodnému argumentu.
Na rozdíl od kontrolovaných výjimek nevyžadují výjimky za běhu deklaraci v klauzuli throws nebo zachycení v bloku try-catch. Zpracování výjimek za běhu se však doporučuje, aby bylo možné poskytovat smysluplné chybové zprávy a zabránit zhroucení systému. Protože výjimky za běhu poskytují konkrétnější informace o problému než zaškrtnuté výjimky, umožňují vývojářům snadněji a rychleji detekovat a opravovat chyby programování.
157. Co je výjimka NullPointerException?
Je to typ výjimky za běhu, která je vyvolána, když se program pokusí použít odkaz na objekt, který má hodnotu null. Hlavní použití NullPointerException je indikovat, že referenční proměnné není přiřazena žádná hodnota, a také se používá pro implementaci datových struktur, jako jsou propojené seznamy a stromy.
158. Kdy je vyvolána výjimka ArrayStoreException?
Výjimka ArrayStore je vyvolána při pokusu o uložení nesprávného typu objektu do pole objektů.
Příklad:
Jáva
// Java Program to implement // ArrayStoreException public class GFG { public static void main(String args[]) { // Since Double class extends Number class // only Double type numbers // can be stored in this array Number[] a = new Double[2]; // Trying to store an integer value // in this Double type array a[0] = new Integer(4); } }> Příklad:
Exception in thread 'main' java.lang.ArrayStoreException: java.lang.Integer at GFG.main(GFG.java:6)>
159. Jaký je rozdíl mezi zaškrtnutou výjimkou a nezaškrtnutou výjimkou?
Zaškrtnutá výjimka:
Zaškrtnuté výjimky jsou výjimky, které se kontrolují během kompilace programu. Pokud v programu nějaký kód v metodě vyvolá zaškrtnutou výjimku, pak metoda musí výjimku buď zpracovat, nebo musí výjimku specifikovat pomocí klíčového slova throws.
Kontrolované výjimky jsou dvou typů:
„co je 10 ze 100“
- Plně zkontrolované výjimky: jsou také zkontrolovány všechny jeho podřízené třídy, jako je IOException a InterruptedException.
- Částečně zaškrtnuté výjimky: některé z jeho podřízených tříd jsou nezaškrtnuté, například výjimka.
Nezaškrtnutá výjimka:
Nezaškrtnuté jsou výjimky, které nejsou kontrolovány v době kompilace programu. Výjimky pod třídami Error a RuntimeException jsou nekontrolované výjimky, vše ostatní pod throwable je zaškrtnuto.
160. Jaká je základní třída pro Error and Exception?

Chyba je neplatná operace provedená uživatelem, která způsobuje abnormality v programu. Výjimky jsou neočekávané události nebo podmínky, které nastanou při běhu programu, výjimka naruší normální tok instrukcí programu.
Chyby a výjimky mají společnou nadřazenou třídu, kterou je třída java.lang.Throwable.
161. Je nutné, aby po každém bloku try následoval blok catch?
Ne, není nutné používat catch blok po bloku try v Javě, protože můžeme vytvořit další kombinaci s finálním blokem. Nakonec je blok, který běží navzdory skutečnosti, že výjimka je vyvolána nebo ne.
162. Co je šíření výjimek?
Šíření výjimek je proces, ve kterém je výjimka odstraněna shora dolů v zásobníku. Pokud není jednou zachycena, výjimka opět klesne na předchozí metodu a tak dále, dokud není zachycena nebo dokud nedosáhne úplného dna zásobníku volání.
163. Co se stane, když vložíte System.exit(0) do bloku try or catch? Provede se konečně blok?
System.exit(int) má schopnost vyvolat SecurityException. Pokud je tedy v případě zabezpečení vyvolána výjimka, pak se nakonec provede blok, jinak se JVM při volání System uzavře. exit(0), kvůli kterému se nakonec blok neprovede.
164. Co rozumíte pod pojmem klonování objektů a jak toho dosáhnete v Javě?
Je to proces vytváření přesné kopie jakéhokoli objektu. Aby to bylo podporováno, musí třída Java implementovat rozhraní Cloneable balíčku java.lang a přepsat metodu clone() poskytovanou třídou Object, jejíž syntaxe je:
Chráněný objekt clone() vyvolá CloneNotSupportedException{ return (Object)super.clone();}V případě, že rozhraní Cloneable není implementováno a pouze je přepsána metoda, výsledkem je CloneNotSupportedException v Javě.
165. Jak ovlivní výjimky program, pokud je nezpracovává?
Výjimky jsou zodpovědné za náhlé ukončení běhu programu během provádění a kód zapsaný po výskytu výjimky se neprovede.
166. K čemu slouží konečné klíčové slovo?
Klíčové slovo final se používá k tomu, aby se funkce staly nevirtuálními. Ve výchozím nastavení jsou všechny funkce virtuální, takže aby byly nevirtuální, použijeme klíčové slovo final.
167. Jaký účel plní klíčová slova konečná, konečná a finalizace?
i). finále:
final je klíčové slovo, které se používá s proměnnou, metodou nebo třídou, takže je nelze přepsat.
Příklad:
Jáva
// Java Program to use final // keyword import java.io.*; // Driver Class class GFG { // Main function public static void main(String[] args) { final int x = 100; x = 50; } }> Výstup:
./GFG.java:6: error: cannot assign a value to final variable x x=50; ^ 1 error>
ii). Konečně
konečně je blok kódu používaný s try-catch při zpracování výjimek. Kód napsaný v bloku konečně běží navzdory faktu, že je vyvolána výjimka nebo ne.
Příklad:
Jáva
// Java Program to implement finally import java.io.*; // Driver class class GFG { // Main function public static void main(String[] args) { int x = 10; // try block try { System.out.println('Try block'); } // finally block finally { System.out.println( 'Always runs even without exceptions'); } } }> Výstup
Try block Always runs even without exceptions>
iii). dokončit
Jedná se o metodu, která se volá těsně před odstraněním/zničením objektů, které jsou způsobilé ke shromažďování odpadků k provedení činnosti čištění.
Příklad:
Jáva
/*package whatever // do not write package name here */ import java.io.*; class GFG { public static void main(String[] args) { System.out.println('Main function running'); System.gc(); } // Here overriding finalize method public void finalize() { System.out.println('finalize method overridden'); } }> Výstup
Main function running>
168. Jaký je rozdíl mezi this() a super() v Javě?
tento( ) | super ( ) |
|---|---|
Představuje aktuální instanci třídy. | Představuje aktuální instanci nadřazené třídy. |
Volá výchozí konstruktor stejné třídy. | Volá výchozí konstruktor základní třídy. |
Přístup k metodám stejné třídy. | Přístup k metodám nadřazené třídy. |
Body aktuální instance třídy. | Ukazuje instanci nadtřídy. |
169. Co je multitasking?
Multitasking v Javě označuje schopnost programu provádět několik úkolů najednou. To dokážou vlákna, což jsou rychlé operace obsažené v jediném programu. Provádění více věcí najednou je známé jako multitasking.
Příklad:
Jáva
// Java program for multitasking import java.io.*; public class MyThread extends Thread { public void run() { // Code to be executed in this thread for (int i = 0; i < 10; i++) { System.out.println( 'Thread ' + Thread.currentThread().getId() + ': ' + i); } } } public class GFG { public static void main(String[] args) { MyThread thread1 = new MyThread(); MyThread thread2 = new MyThread(); // Start the threads thread1.start(); thread2.start(); } }> 170. Co myslíte vícevláknovým programem?
Vícevláknové programy v Javě obsahují vlákna, která běží souběžně, místo aby běžela sekvenčně. Počítač může využívat své zdroje efektivněji kombinací více úkolů najednou. Jakýkoli program s multithreadingem umožňuje více než jednomu uživateli současně používat program bez spouštění více kopií. Vícevláknový program je navržen tak, aby spouštěl více procesů současně, což může zlepšit výkon programu a umožňuje programu využívat více procesorů a zlepšuje celkovou propustnost.
171. Jaké jsou výhody multithreadingu?
Použití multithreadingu má několik výhod, které jsou následující:
- Odezva: Odezva uživatele se zvyšuje, protože vícevláknová interaktivní aplikace umožňuje spouštění kódu, i když je sekce blokována nebo provádí zdlouhavý proces.
- Sdílení zdrojů: Proces může provádět předávání zpráv a sdílenou paměť díky multithreadingu.
- Ekonomika: Jsme schopni sdílet paměť, díky čemuž jsou procesy ekonomické.
- Škálovatelnost: Vícevláknové zpracování na více počítačích CPU zvyšuje paralelismus.
- Lepší komunikace: Funkce synchronizace vláken zlepšuje komunikaci mezi procesy.
- Využití multiprocesorové architektury
- Minimalizované využití systémových prostředků
172. Jaké jsou dva způsoby, kterými lze vlákno vytvořit?
Multithreading je funkce Java, která umožňuje souběžné provádění dvou nebo více částí programu pro maximální využití CPU. Obecně jsou vlákna malé, lehké procesy s oddělenými cestami provádění. Tato vlákna používají sdílenou paměť, ale jednají nezávisle, takže pokud některé vlákno selže, neovlivní to ostatní vlákna. Existují dva způsoby, jak vytvořit vlákno:
- Rozšířením třídy Thread
- Implementací rozhraní Runnable.
Rozšířením třídy Thread
Vytvoříme třídu, která rozšiřuje java.lang.Třída vláken . Tato třída přepíše metodu run() dostupnou ve třídě Thread. Vlákno začíná svůj život v metodě run().
Syntax:
public class MyThread extends Thread { public void run() { // thread code goes here } }>Implementací rozhraní Runnable
Vytvoříme novou třídu, která implementuje java.lang.Runnable rozhraní a přepíše metodu run(). Poté vytvoříme instanci objektu Thread a zavoláme na tento objekt metodu start().
Syntax:
public class MyRunnable implements Runnable { public void run() { // thread code goes here } }>173. Co je to vlákno?
Vlákna v Javě jsou odlehčené podprocesy s nejmenší jednotkou procesů a mají také samostatné cesty provádění. Tato vlákna používají sdílenou paměť, ale jednají nezávisle, pokud tedy existuje výjimka ve vláknech, která neovlivňují fungování jiných vláken, přestože sdílejí stejnou paměť. Vlákno má svůj vlastní programový čítač, zásobník provádění a lokální proměnné, ale sdílí stejný paměťový prostor s jinými vlákny ve stejném procesu. Java poskytuje vestavěnou podporu pro multithreading prostřednictvím Spustitelné rozhraní a Třída nití .
174. Rozdíl mezi procesem a vláknem?
Proces a vlákno jsou obě jednotky provádění v počítačovém systému, ale liší se v několika ohledech:
Proces | Vlákno |
|---|---|
Proces je spuštěný program. | Vlákno je jediná sekvence instrukcí v rámci procesu. |
Ukončení procesu trvá déle. | Ukončení vlákna trvá kratší dobu. |
Přepínání kontextu trvá déle. | Vlákno trvá kratší dobu pro přepínání kontextu. |
Proces je méně efektivní z hlediska komunikace. | Vlákno je z hlediska komunikace efektivnější. |
Proces je izolovaný. | Vlákna sdílejí paměť. |
Proces má svůj vlastní řídicí blok procesu, zásobník a adresní prostor. | Vlákno má Parents' PCB, svůj vlastní Thread Control Block a Stack a společný adresní prostor. |
Proces mezi sebou nesdílí data. | Vlákna mezi sebou sdílejí data. |
175. Popište životní cyklus vlákna?

A vlákno v Javě v kterémkoli okamžiku existuje v kterémkoli z následujících stavů. Vlákno se v každém okamžiku nachází pouze v jednom ze zobrazených stavů:
- Nový: Vlákno bylo vytvořeno, ale ještě nezačalo.
- Spustitelné: Vlákno je spuštěno, provádí svou úlohu nebo je připraveno ke spuštění, pokud neexistují žádná jiná vlákna s vyšší prioritou.
- Blokováno: Vlákno je dočasně pozastaveno a čeká na zdroj nebo událost.
- Čekání: Vlákno čeká na jiné vlákno, aby provedlo úlohu, nebo po určitou dobu, která uplyne.
- Ukončeno: Vlákno dokončilo svůj úkol nebo bylo ukončeno jiným vláknem.
176. Vysvětlete metodu suspend() pod třídou Thread.
Metoda suspend() třídy Thread v Javě dočasně pozastaví provádění vlákna. Když je vlákno pozastaveno, přejde do zablokovaného stavu a nebude naplánováno operačním systémem, což znamená, že nebude moci provést svou úlohu, dokud nebude obnoveno. V moderním programovacím jazyce Java existují bezpečnější a flexibilnější alternativy k metodám suspend(). Tato metoda nevrací žádnou hodnotu.
Syntax:
public final void suspend();>
Příklad:
Jáva
// Java program to show thread suspend() method import java.io.*; class MyThread extends Thread { public void run() { for (int i = 0; i < 10; i++) { System.out.println(' Running thread : ' + i); try { Thread.sleep(1000); } catch (Interrupted_Exception e) { e.printStackTrace(); } } } } class GFG { public static void main(String[] args) { MyThread t1 = new MyThread(); t1.start(); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } // suspend the execution of the thread t1.suspend(); System.out.println('Suspended thread '); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } // resume the execution of the thread t1.resume(); System.out.println('Resumed thread'); } }> Výstup:
Thread running: 0 Thread running: 1 Thread running: 2 Suspended thread Resumed thread Thread running: 3 Thread running: 4 Thread running: 5 Thread running: 6 Thread running: 7 Thread running: 8 Thread running: 9>
177. Vysvětlete hlavní vlákno v části Provádění třídy Thread.
Java poskytuje vestavěnou podporu pro vícevláknové programování. Hlavní vlákno je považováno za nadřazené vlákno všech ostatních vláken, která jsou vytvořena během provádění programu. Hlavní vlákno se automaticky vytvoří při spuštění programu. Toto vlákno provádí hlavní metodu programu. Je odpovědný za provádění hlavní logiky programu Java a také za manipulaci se vstupními operacemi uživatele. Hlavní vlákno slouží jako základní vlákno, ze kterého jsou vytvořena všechna ostatní podřízená vlákna.

178. Co je to vlákno démona?
Vlákno démona v Javě je vlákno s nízkou prioritou, které se používá k provádění operací na pozadí nebo úloh, které se používají k nepřetržitému provádění. jako je sběr odpadu, odeslání signálů, posluchače akcí atd. Vlákna démonů v Javě mají nižší prioritu než uživatelská vlákna, což znamená, že se mohou spouštět, pouze když neběží žádná uživatelská vlákna. Vlákna démonů v Javě jsou užitečné funkce, které jsou vyžadovány pro úlohy na pozadí, které nevyžadují explicitní vypnutí nebo dokončení. Umožňuje efektivnější využití systémových prostředků a používá se ke zjednodušení zdrojů a může zjednodušit dlouhotrvající úkoly.
179. Jaké jsou způsoby, kterými může vlákno vstoupit do stavu čekání?
Vlákno je odlehčený proces, který běží souběžně s druhým vláknem v rámci jednoho procesu. Každé vlákno může provádět jinou úlohu a sdílet zdroje v rámci jednoho procesu. Vlákno v Javě může vstoupit do stavu čekání mnoha různými způsoby:
- Volání metody Sleep(): Spánek () metoda se používá k pozastavení provádění vlákna na určitou dobu. Zatímco je vlákno pozastaveno, přejde do stavu čekání.
- Metoda Wait(): Tato metoda se používá k čekání vlákna, dokud mu druhé vlákno nedá signál k probuzení. Vlákno přejde do stavu čekání, dokud neobdrží upozornění od jiného vlákna.
- Join() metoda: Metodu Join() lze použít k čekání, až vlákno dokončí provádění. Volající vlákno přejde do stavu čekání, dokud není dokončeno cílové vlákno.
- Čekání na I/O operace: Pokud vlákno čeká na dokončení operace Input/Output, přejde do stavu čekání, dokud nebude operace dokončena.
- Problémy se synchronizací: Pokud se ve vícevláknové aplikaci vyskytnou nějaké problémy se synchronizací, vlákna mohou přejít do stavu čekání, dokud nebudou problémy se synchronizací vyřešeny.
180. Jak probíhá multi-threading na počítači s jedním CPU?
Java používá techniku zvanou sdílení času, běžně označovanou jako time-slicing, k implementaci multi-threadingu na počítačích s jedním CPU. Vzhled paralelního provádění vzniká přepínáním CPU mezi aktivními vlákny. Operační systém má na starosti postupné přidělování času procesoru každému vláknu a plánování vláken.
Aby se zabránilo vláknům ve vzájemné interakci a vytváření závodních situací nebo jiných problémů, má Java řadu způsobů, jak řídit chování vláken, včetně synchronizace a zamykání. Je možné vytvořit vícevláknové programátory, které fungují správně a efektivně na stroji s jedním CPU regulací interakce mezi vlákny a zajištěním synchronizace klíčových částí kódu. Na rozdíl od spouštění stejného programu na počítači s více procesory nebo jádry může multi-threading na jednom procesoru vyvolat pouze zdání paralelismu a skutečný nárůst výkonu může být skromný. Operační systém rozděluje čas CPU, který je k dispozici, když na jednom CPU běží mnoho vláken, na malé časové úseky a každému vláknu přiděluje časový úsek, který se má spustit. Rychlé přepínání mezi vlákny operačním systémem vytváří dojem paralelního provádění. Přepínání mezi vlákny se zdá být okamžité, protože časové úseky jsou často velmi malé, v řádu milisekund nebo mikrosekund.
Java Interview Otázky pro zkušené
181. Jaké jsou různé typy priorit vláken v Javě? A jaká je výchozí priorita vlákna přiřazeného JVM?
Priority ve vláknech je koncept, kdy každé vlákno má prioritu, o které se dá laicky říci, že zde má prioritu každý objekt, což je reprezentováno čísly v rozmezí od 1 do 10. V Javě jsou různé typy vlastností vláken zmíněných níže:
- MIN_PRIORITY
- MAX_PRIORITY
- NORM_PRIORITY
Ve výchozím nastavení je vlákno přiřazeno NORM_PRIORITY.
182. Proč je v Javě nezbytný Garbage Collection?
V Javě je sběr odpadků nezbytný, aby se zabránilo únikům paměti, které mohou způsobit zhroucení programu a jeho nestabilitu. Neexistuje způsob, jak se vyhnout shromažďování odpadu v Javě. Na rozdíl od C++ pomáhá Garbage collection v Javě programátorům soustředit se na vývoj aplikace namísto správy paměťových zdrojů a obav z úniku paměti. Java Virtual Machine (JVM) automaticky pravidelně spravuje paměť spuštěním garbage collectoru, který uvolní nevyužitou paměť v aplikaci. Shromažďování odpadků zefektivňuje paměť Java, protože odstraňuje nereferencované objekty z paměti haldy.
183. Jaká je nevýhoda Garbage Collection?
Kromě mnoha výhod má Garbage Collector některé níže uvedené nevýhody:
- Hlavní nevýhodou shromažďování odpadků je to, že může způsobit pauzy v provádění aplikace, protože se snaží vyčistit paměť, což zpomaluje výkon aplikace.
- Proces shromažďování odpadků je nedeterministický, což ztěžuje předvídat, kdy dojde ke shromažďování odpadků, což způsobuje nepředvídatelné chování v aplikacích. Pokud například napíšeme jakýkoli program, pak je pro programátory těžké rozhodnout, zda je problém způsoben shromažďováním odpadu nebo jinými faktory v programu.
- Sběr odpadu může také zvýšit využití paměti, pokud program vytvoří a zahodí mnoho objektů s krátkou životností.
184. Vysvětlete rozdíl mezi malým, velkým a úplným svozem odpadu.
Java Virtual Machine (JVM) odstraňuje objekty, které se již nepoužívají, pomocí garbage collectoru, který tyto objekty pravidelně kontroluje a odstraňuje. V JVM existují různé typy shromažďování odpadků, z nichž každý má jiné vlastnosti a dopady na výkon. Hlavní typy sběru odpadu jsou:
- Odvoz drobného odpadu: Také známý jako shromažďování odpadků mladé generace, tento typ shromažďování odpadků se používá ke shromažďování a obnově paměti, kterou používají objekty s krátkou životností (objekty, které se rychle vytvářejí a zahazují).
- Velký sběr odpadu: Tento typ shromažďování odpadků, známý také jako sběr odpadu staré generace, se používá ke shromažďování a obnově paměti, kterou používají objekty s dlouhou životností (objekty, které přežijí více menších sbírek odpadu a jsou povýšeny na starou generaci).
- Kompletní svoz odpadu: Během úplného sběru odpadu se shromažďují a regenerují vzpomínky všech generací, včetně vzpomínek mladých i starých. Úplný úklid obvykle trvá déle než dokončení menšího nebo většího odpadu, což způsobí dočasné pozastavení aplikace.
185. Jak v Javě identifikujete hlavní a menší shromažďování odpadu?
Hlavní sběr odpadu funguje v prostoru přeživších a sběr malého odpadu funguje v prostoru Eden, aby provedl rutinu označení a zametání. A oba je můžeme identifikovat na základě výstupu, kde menší kolekce tiskne GC, zatímco hlavní kolekce tiskne Full GC pro případ, kdy je protokolování garbage collection povoleno pomocí -XX:PrintGCDetails nebo verbose:gc.
186. Co je nevracení paměti a jak ovlivňuje shromažďování paměti?
V Javě mohou být úniky paměti způsobeny řadou faktorů, například nesprávným uzavřením zdrojů, držením odkazů na objekty déle, než je nutné, nebo vytvářením příliš mnoha objektů zbytečně. Existují situace, kdy garbage collector neshromažďuje objekty, protože je na tyto objekty odkaz. V těchto situacích, kdy aplikace vytváří mnoho objektů a nepoužívá je a každý objekt má nějaké platné reference, nemůže sběrač odpadu v Javě objekty zničit. Tyto zbytečné objekty, které neposkytují programu žádnou hodnotu, jsou známé jako úniky paměti. Úniky paměti mohou negativně ovlivnit shromažďování paměti tím, že zabrání sběrači paměti získat zpět nevyužitou paměť. Toto chování povede k pomalému výkonu nebo někdy k selhání systému. V programu je důležité vyhnout se únikům paměti správnou správou zdrojů a odkazů na objekty.
Příklad:
Jáva
// Java Program to demonstrate memory leaks import java.io.*; import java.util.Vector; class GFG { public static void main(String[] args) { Vector a = new Vector(21312312); Vector b = new Vector(2147412344); Vector c = new Vector(219944); System.out.println('Memory Leak in Java'); } }> Výstup:
Exception in thread 'main' java.lang.OutOfMemoryError: Java heap space at java.base/java.util.Vector.(Vector.java:142) at java.base/java.util.Vector.(Vector.java:155) at GFG.main(GFG.java:9)>
187. Pojmenujte některé třídy obsažené v balíčku java.util.regex.
Regular Expressions neboli Regex v Javě je API používané pro vyhledávání a manipulaci s řetězci v Javě. Vytváří vzory řetězců, které mohou extrahovat potřebná data z řetězců nebo mohou zobecnit vzor.
V java.util.regex jsou uvedeny 3 třídy:
- Třída vzoru: Může definovat vzory
- Matcher Class: Může provádět operace shody s textem pomocí vzorů
- Třída PatternSyntaxException: Může indikovat chybu syntaxe ve vzoru regulárního výrazu.
Kromě balíčku 3 tříd se také skládá z jediného rozhraní MatchResult Interface, které lze použít pro reprezentaci výsledku operace shody.
188. Napište regulární výraz pro ověření hesla. Heslo musí začínat abecedou a následovat alfanumerické znaky; Jeho délka musí být v rozmezí 8 až 20.
regex = ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&-+=()])(?=S+$).{8, 20}$>Vysvětlení:
- ^ používá se pro počáteční znak řetězce.
- (?=.*[0-9]) použité pro číslici se musí vyskytovat alespoň jednou.
- (?=.*[a-z]) použité pro malou abecedu se musí vyskytovat alespoň jednou.
- (?=.*[A-Z]) používá se pro velká písmena, která se musí v podřetězci vyskytovat alespoň jednou.
- (?=.*[@#$%^&-+=()] používá se pro speciální znak, který se musí vyskytnout alespoň jednou.
- (?=S+$) mezery v celém řetězci nepovolují.
- .{8, 20} používá se pro minimálně 8 znaků a maximálně 20 znaků.
- $ se používá pro konec řetězce.
189. Co je JDBC?
JDBC standardní API se používá k propojení Java aplikací a relačních databází. Poskytuje kolekci tříd a rozhraní, která umožňují programátorům používat ke komunikaci s databází programovací jazyk Java. Třídy a rozhraní JDBC umožňují aplikaci posílat požadavky, které uživatelé zadají do určené databáze. Obecně existují čtyři komponenty JDBC, pomocí kterých interaguje s databází:
- JDBC API
- Správce ovladačů JDBC
- Testovací sada JDBC
- Ovladače mostu JDBC-ODBC

190. Co je ovladač JDBC?
Ovladač JDBC je softwarová komponenta, která se používá k umožnění interakce Java aplikace s databází. JDBC poskytuje implementaci rozhraní JDBC API pro konkrétní systém správy databází, což mu umožňuje připojit databázi, spouštět příkazy SQL a získávat data. Existují čtyři typy ovladačů JDBC:
- Ovladač JDBC-ODBC Bridge
- Nativní ovladač API
- Ovladač síťového protokolu
- Tenký řidič

191. Jaké jsou kroky pro připojení k databázi v Javě?
Existují určité kroky pro připojení databáze a programu Java, jak je uvedeno níže:
- Importujte balíčky
- Načtěte ovladače pomocí metody forName().
- Zaregistrujte ovladače pomocí DriverManager
- Navažte připojení pomocí objektu třídy Connection
- Vytvořte prohlášení
- Proveďte dotaz
- Zavřete připojení
192. Co jsou komponenty rozhraní JDBC API?
Komponenty JDBC API poskytují různé metody a rozhraní pro snadnou komunikaci s databázemi a také poskytuje balíčky jako java Se a java EE, které poskytují možnost zápisu po spuštění kdekoli (WORA).
Syntax:
java.sql.*;>
193. Co je rozhraní připojení JDBC?
Java Database Connectivity interface (JDBC) je softwarová komponenta, která umožňuje Java aplikacím komunikovat s databázemi. Pro zlepšení připojení vyžaduje JDBC ovladače pro každou databázi.
194. Co znamená rozhraní JDBC ResultSet?
Rozhraní JDBC ResultSet slouží k ukládání dat z databáze a jejich použití v našem programu Java. Můžeme také použít ResultSet k aktualizaci dat pomocí metod updateXXX(). Objekt ResultSet ukazuje kurzor před první řádek výsledkových dat. Pomocí metody next() můžeme iterovat ResultSet.
195. Co je sada řádků JDBC?
JDBC RowSet poskytuje způsob, jak ukládat data v tabulkové formě. RowSet je rozhraní v jazyce Java, které lze použít v rámci balíčku java.sql. Spojení mezi objektem RowSet a zdrojem dat je udržováno po celou dobu jeho životního cyklu. Sady řádků jsou rozděleny do pěti kategorií na základě implementace uvedené níže:
- JdbcRowSet
- CachedRowSet
- WebRowSet
- FilteredRowSet
- JoinRowSet
196. Jaká je role třídy JDBC DriverManager?
Třída JDBC DriverManager funguje jako rozhraní pro uživatele a ovladače. Používá se mnoha způsoby, jak je uvedeno níže:
- Slouží k vytvoření spojení mezi Java aplikací a databází.
- Pomáhá sledovat ovladače, které jsou k dispozici.
- Může pomoci vytvořit spojení mezi databází a příslušnými ovladači.
- Obsahuje všechny metody, které mohou registrovat a zrušit registraci tříd databázových ovladačů.
- Metoda DriverManager.registerDriver() může udržovat seznam tříd ovladačů, které se samy zaregistrovaly.
Otázky týkající se rozdílového pohovoru v jazyce Java
197. Rozlišujte mezi Iterovatelným a Iterátorem.
Iterovatelné | Iterátor |
|---|---|
Iterable poskytuje způsob, jak iterovat přes sekvenci prvků. | Iterátor pomáhá při postupném iterování kolekce prvků. |
| iterátor() metoda vrací Iterátor. | hasNext() a další() jsou vyžadovány metody. |
| odstranit() metoda je volitelná. | odstranit() v iterátoru je vyžadována metoda. |
Příklady jsou Seznam, Fronta a Nastavit. | Příklady jsou ListIterator, Enumeration a ArrayIterator. |
198. Rozlišujte mezi seznamem a souborem.
Seznam | Soubor |
|---|---|
Objednáno | Neuspořádané |
Seznam umožňuje duplikáty. | Sada neumožňuje duplicitní hodnoty. |
Seznam je přístupný pomocí indexu. | Set je přístupný pomocí hashcode. |
Lze uložit více nulových prvků. | Nulový prvek lze uložit pouze jednou. |
Příklady jsou ArrayList, LinkedList atd. | Příklady jsou HashSet a TreeSet. LinkedHashSet atd. |
199. Rozlišujte mezi seznamem a mapou.
Seznam | Mapa |
|---|---|
Rozhraní seznamu umožňuje duplicitní prvky. | Mapa neumožňuje duplicitní prvky. |
Seznam zachovává pořadí vložení. | Mapa neuchovává pořadí vložení. |
Lze uložit více nulových prvků. | Mapa umožňuje maximálně jeden klíč null a libovolný počet hodnot null. |
Seznam poskytuje metodu get() pro získání prvku na zadaném indexu. | Mapa neposkytuje metodu get pro získání prvků na zadaném indexu. |
Seznam je implementován pomocí ArrayList atd. | Mapa je implementována pomocí HashMap, TreeMap, LinkedHashMap |
200. Rozlišujte mezi frontou a zásobníkem.
Fronta | Zásobník |
|---|---|
Struktura dat fronty se používá k ukládání prvků a používá se k provádění operací, jako je zařazení do fronty, vyřazení z fronty zezadu nebo konec fronty. | Struktura dat zásobníku se používá k ukládání prvků a používá se k provádění operací, jako je push, pop z horní části zásobníku. |
Struktura dat fronty Implementuje pořadí FIFO. | Struktura dat zásobníku Implementuje objednávku LIFO. |
Vkládání a mazání ve frontách probíhá z opačných konců seznamu. Mazání se provádí z přední části seznamu a vkládání se provádí na konci seznamu. | Vkládání a mazání v hromadách probíhá pouze z jednoho konce seznamu, který se nazývá horní. |
Operace vložení se nazývá operace fronty. | Operace vložení se nazývá operace Push. |
Fronta se obecně používá k řešení problémů souvisejících se sekvenčním zpracováním. | Stack se obecně používá k řešení problémů souvisejících s rekurzí. |
201. Rozlišujte mezi PriorityQueue a TreeSet.
Prioritní fronta | TreeSet |
|---|---|
Jako podkladovou datovou strukturu používá frontu. | Používá sadu jako základní datovou strukturu. |
Tato datová struktura umožňuje duplicitní prvky | Tato datová struktura neumožňuje duplicitní prvky |
Prioritní fronta je implementována třídou PriorityQueue. | TreeSet je implementován třídou TreeSet. |
PriorityQueue přichází v JDK 1.5. | TreeSet přichází v JDK 1.4. |
PriorityQueue pq = new PriorityQueue(); | reeSet ts = new TreeSet(); |
202. Rozlišujte mezi Jednotně propojeným seznamem a Dvojitě propojeným seznamem.
Jednotlivě propojený seznam | Dvojitě propojený seznam |
|---|---|
Single Linked List obsahuje pouze dva segmenty, tj. Data a Link. | Dvojitě propojený seznam obsahuje tři segmenty, tj. Data a dva ukazatele. |
Procházení v jednotlivě propojeném seznamu je možné pouze v dopředném směru. | Procházení ve dvojitě propojeném seznamu je možné pouze v obou směrech dopředu i dozadu. |
Využívá méně paměti, protože každý jednotlivý uzel má pouze jeden ukazatel. | Vyžaduje více paměti než jednotlivě propojený seznam, protože každý uzel má dva ukazatele. |
Snadné použití a vkládání uzlů na začátek seznamu. | O něco složitější na použití a snadné vložení na konec seznamu. |
Časová složitost vkládání a mazání je O(n). | Časová složitost inzerce a delece je O(1). |
| | |
203. Rozlišujte mezi Failfast a Failsafe.
FailFast | FailSafe |
|---|---|
Failsfast selže okamžitě, když během iterace zjistí souběžnou úpravu. | Failsafe pokračuje v iteraci původní kolekce a také vytváří kopii k úpravě. |
Failfast se obecně používá v prostředí s jedním vláknem. | Failsafe se používá ve vícevláknových prostředích. |
Failfast neumožňuje žádné úpravy během iterace. | Failsafe umožňuje úpravy během iterace. |
Failfast je rychlý ve srovnání s Failfast, protože nezahrnuje kopírování kolekce. | Failsafe je obecně pomalý ve srovnání s Failfast. |
FailFast hází ConcurrentModificationException pokud je kolekce během iterace upravena. | FailSafe nevyvolá žádnou výjimku, ale místo toho vytvoří kopii kolekce k iteraci. |
204. Rozlišujte mezi HashMap a TreeMap.
HashMap | Stromová mapa |
|---|---|
Hasmap používá hashtable k ukládání párů klíč-hodnota. | Treemap používá červeno-černé stromy k uložení páru klíč-hodnota. co je automaticky zapojeno v Javě |
Hashmap neudržuje žádné konkrétní pořadí pro páry klíč–hodnota. | Stromová mapa zachovává přirozené uspořádání založené na klíčích. |
Pořadí iterací není v hashmap zaručeno. | Iterace je seřazená podle klíčů. |
Hashmapy jsou rychlejší pro načítání než Treemap. | Načítání ve stromové mapě je pomalejší, protože k nalezení klíčů používá procházení stromem. |
Hashmap je implementován pomocí pole propojených seznamů. | TreeMap je implementován pomocí červeno-černého stromu. |
Hashmap používá k porovnání klíčů metodu equals() třídy Object. | TreeMap používá k porovnání klíčů metodu CompareTo(). |
205. Rozlišujte mezi Queue a Deque.
Fronta | O čem |
|---|---|
Fronta je lineární datová struktura, která se používá k ukládání kolekce prvků. | Deque také známá jako dvojitá fronta je také lineární datová struktura, která ukládá kolekci prvků s operacemi pro odebrání a přidání z obou konců. |
Prvky ve frontě lze vkládat pouze na konec datové struktury. | Prvky lze vkládat z obou konců datové struktury. |
Fronta může být implementována pomocí Array nebo Linked List. | Dequeue lze implementovat pomocí Circular Array nebo Double Linked List. |
Fronty se obecně používají k implementaci čekacího seznamu nebo fronty úkolů. | Deque se používá k implementaci zásobníku nebo prvků pro vyřazení z fronty z obou konců. |
| | |
206. Rozlišujte mezi HashSet a TreeSet.
HashSet | TreeSet |
|---|---|
HashSet je neuspořádaný. | TreeSet je založen na přirozeném uspořádání. |
HashSet umožňuje nulové prvky. | TreeSet nepovoluje prvky null. |
HashSet je implementován třídou HashSet. | TreeSet je implementován třídou TreeSet. |
HashSet hs = new HashSet(); | TreeSet ts = new TreeSet(); |
Java Interview Questions – FAQ
Q1. Jaký je plat vývojáře Java v Indii?
Podle různých zdrojů je průměrný plat vývojáře Java Backend více než 14 milionů ročně, což je o 30 % více než u jakékoli jiné vývojářské role . Zde se také můžete podívat na náš nejnovější kurz Portál praxe GeekforGeeks může být také užitečné.
Q5. Jak mohu vyniknout v Java rozhovoru?
Chcete-li vyniknout v pohovoru v jazyce Java, prokažte hluboké porozumění konceptům Java a praktickým aplikacím. Předveďte své dovednosti při řešení problémů tím, že vysvětlíte svůj přístup ke složitým scénářům a poskytnete účinná řešení. Kromě toho zdůrazněte všechny relevantní projekty nebo příspěvky, které jste komunitě Java poskytli. Pozitivní dojem může zanechat i projev nadšení, dobré komunikace a ochoty učit se.



