14 Často kladené otázky a odpovědi v rozhovoru s Java [2022]

Chystáte se na pracovní pohovor zaměřený na programování v jazyce Java? Tento článek obsahuje otázky a odpovědi, které vám pomohou zvládnout pohovor a ukázat vaše znalosti.

James Gosling v roce 1982 inicioval vývoj Javy jako vysokoúrovňového jazyka, který staví na principech objektově orientovaného programování. Java se stala jedním z nejpopulárnějších a nejrozšířenějších programovacích jazyků. Začínající i zkušení vývojáři softwaru si ji vybírají jako perspektivní volbu pro svou kariéru.

Java se zabývá koncepty jako jsou třídy, dědičnost, JSON, iterátory, výčty, proměnné s nestálými hodnotami, dočasnost, hibernace, HTTP tunelování a abstraktní třídy. Základ syntaxe má Java společný s programovacími jazyky C++ a C. Je však klíčové seznámit se s klíčovými otázkami, které mohou personalisté na pohovoru klást.

Abychom podpořili vývojáře v Javě, přinášíme přehled důležitých otázek a odpovědí, které se mohou objevit na pohovoru.

Je Java ryze objektově orientovaný jazyk? Zdůvodněte svou odpověď.

Java není považována za stoprocentně objektově orientovaný jazyk. Zahrnuje primitivní datové typy jako short, byte, double, float, long, char, boolean a další, které nejsou objekty. I přes to splňuje mnoho objektově orientovaných principů.

Proč je Java populární jako jazyk nezávislý na platformě?

Programovací jazyk Java je nezávislý na konkrétním hardwaru a softwaru díky kompilátoru a běhovému prostředí (JRE). Java kompilátor převádí zdrojový kód na bajtový kód, který je nezávislý na platformě. To umožňuje spouštění kódu na různých systémech, což z něj činí velmi populární volbu.

Objasněte hlavní rozdíl mezi JDK, JRE a JVM.

Java Development Kit (JDK) Java Runtime Environment (JRE) Java Virtual Machine (JVM)
JDK je nástroj nutný pro dokumentování, kompilaci a vytváření balíčků programů v Javě. JRE slouží ke spouštění bajtového kódu Java. JVM je virtuální stroj, který poskytuje běhové prostředí pro spouštění bajtového kódu Java.
Obsahuje vývojové nástroje a JRE. Umožňuje implementaci JVM a její fyzickou existenci. Zahrnuje implementaci, specifikaci a běhové instance.
Implementuje Java Standard Edition, Micro Edition a Enterprise Edition. Provádí načítání, ověřování a spouštění kódu. Obsahuje knihovny, které usnadňují používání JVM.

Jaké jsou specifikátory přístupu u tříd v Javě?

Specifikátor přístupu je klíčové slovo, které se umisťuje před název třídy v Javě a udává rozsah přístupu pomocí různých modifikátorů:

  • protected – Umožňuje přístup k metodám a proměnným ze stejné třídy, balíčku nebo z podtřídy, ale ne z jiné třídy v jiném balíčku.
  • private – Umožňuje přístup k metodám a proměnným pouze z dané třídy.
  • public – Metody, třídy a proměnné jsou dostupné odkudkoliv v kódu.
  • default – Metody, třídy a proměnné jsou dostupné pouze ze stejného balíčku, nikoliv zvenčí.

Jaký je rozdíl mezi lokální proměnnou a proměnnou instance?

Lokální proměnná – Tyto proměnné jsou deklarovány uvnitř konstruktoru, funkce nebo bloku a jsou dostupné pouze v tomto rozsahu. Jiná metoda třídy nemá k lokální proměnné přístup ani o ní nemá žádné informace.

Proměnná instance – Tyto proměnné jsou deklarované ve třídě a všechny metody k nim mají přístup. Tyto proměnné reprezentují vlastnosti objektu a jakákoliv úprava ovlivní jen tuto instanci, aniž by to ovlivnilo ostatní instance třídy.

Co je to JIT Compiler?

Just In Time Compiler se používá ke zvýšení výkonu aplikací. Kompiluje bajtový kód za běhu, čímž zkracuje dobu potřebnou pro spuštění. Také pomáhá překládat kód z JVM do instrukční sady procesoru.

Stručně vysvětlete, co je singleton třída.

Jedná se o speciální typ třídy, která může mít vždy jen jednu instanci nebo objekt.

Co je klonování objektů?

Klonování objektů je vytváření duplikátu objektu v Javě, což vývojářům umožňuje tyto duplikáty později používat. Pomocí metody `clone()` a implementací rozhraní `java.lang.Cloneable` mohou vývojáři Javy snadno vytvářet klony objektů.

Vysvětlete, co jsou to konstruktory.

Konstruktory jsou speciální bloky kódu, které mají stejný název jako třída a slouží k inicializaci nového objektu dané třídy. Konstruktor je automaticky volán při vytváření objektu a nemá žádný návratový typ. Existují dva typy konstruktorů:

  • Parametrizovaný konstruktor – Konstruktor, který přijímá argumenty a inicializuje proměnné instance s těmito hodnotami.
  • Výchozí konstruktor – Konstruktor, který nemá žádné argumenty a inicializuje proměnné instance na výchozí hodnoty. Je generován automaticky, pokud není definován žádný jiný konstruktor.

Jaký je rozdíl mezi operátorem == a metodou equals() v Javě?

Operátor rovnosti (==) je binární operátor, který porovnává hodnotu primitivních datových typů a referenční identitu objektů v Javě. Metoda `equals()`, kterou definuje třída `Object`, porovnává objekty a jejich rovnost je definována obchodní logikou.

Jaký je rozdíl mezi TreeSet a HashSet?

TreeSet HashSet
Uchovává prvky v seřazeném pořadí. Neuchovává prvky v seřazeném pořadí.
Povoluje heterogenní objekty (objekty různých typů). Nepovoluje heterogenní objekty.
Implementuje rozhraní SortedSet a využívá stromy pro ukládání dat. Implementuje se pomocí hashovací tabulky.

Co znamená inicializace pomocí dvojitých závorek?

V Javě inicializace pomocí dvojitých závorek kombinuje dva nezávislé procesy. Používá dvě sady závorek pro vytvoření anonymní vnitřní třídy a inicializačního bloku. Klíčové slovo „this“ v rámci vnitřní třídy umožňuje odkazovat na vnější třídu při inicializaci.

Co je Java String Pool?

Java String Pool je kolekce řetězců v paměti heap, kam se ukládají nové objekty typu String. String Pool nejprve zkontroluje, zda již objekt existuje a v případě shody vrací odkaz na existující objekt. Pokud ne, vytvoří se nový objekt a vrátí se na něj odkaz.

Co znamená třída Collection v Javě?

Třída Collection představuje framework pro manipulaci a organizaci skupin objektů. Poskytuje metody pro provádění operací jako mazání, vyhledávání, třídění, úpravy a vkládání prvků v rámci definovaných rozhraní a tříd.

Závěrem

Java je bezesporu jedním z nejpopulárnějších programovacích jazyků, který nabízí rozsáhlé standardní knihovny a výkonné nástroje. Podporuje vlákna pro řešení problémů, které vyžadují souběžnost. Má vestavěné funkce a snadno použitelnou syntaxi, která zaručuje stabilitu.

Chcete-li se v Javě zdokonalit, zvažte některý z dostupných online kurzů.