Java developer interview FAQ, 2. diel: Časté otázky na pracovnom pohovore Java programátora juniora

V tomto diely seriálu pokračujeme v často kladených otázkach, ktoré sa môžu vyskytnúť na 1.kole pracovného pohovoru na pozíciu Java programátor junior.

Pozri si aj ďalšie články zo seriálu Java programátor pohovor:

Vysvetli pojem Java package.

V Jave je package (balíček) spôsob organizácie a zoskupovania súvisiacich tried, rozhraní, zdrojov a podbalíčkov na jednom mieste. Takto poskytuje mechanizmus na zapuzdrenie a správu kódu v Jave. Používaním balíčkov sa dá zabrániť konfliktom v názvoch medzi triedami s rovnakým názvom v rôznych balíčkoch. Balíčky taktiež zjednodušujú opätovné použitie kódu a udržateľnosť tým, že poskytujú hierarchickú štruktúru kódu.

Aká je úloha metódy (method) v Java?

V Jave je metóda (method) funkcia alebo procedúra, ktorá slúži na vykonávanie určitých operácií. Metóda je súčasťou triedy a definuje jej správanie. Môže prijímať vstupné parametre, vykonávať operácie a vracať výsledky. Metódy sú základnými stavebnými blokmi programu. Umožňujú rozdeliť ho na menšie úlohy a tak dosiahnuť lepšie organizovanie kódu, znovupoužiteľnosť a modularitu.

Java je unikátna aj pre svoj garbage collection. Vysvetli tento princíp.

Garbage collection (zbieranie nepotrebného odpadu) je v Jave automatizovaný proces správy pamäte, ktorý sa stará o uvoľňovanie pamäte obsadenej objektami, ktoré už nie sú dostupné a teda potrebné. Keď v Jave vytvoríme objekt, alokuje sa pamäť. Keď však objekt nie je viac dostupný pre program, pretože naň neexistuje žiadna referencia, garbage collector ho rozpozná a uvoľní pamäť, čím ju získame späť na ďalšie použitie. Java Garbage collection sa stará o uvoľňovanie pamäte, zabraňuje problémom s tzv. únikmi pamäte (memory leaks) a zjednodušuje život programátorom, pretože nemusia manuálne spravovať alokáciu a dealokáciu pamäte.

Rozhrania (Java interface) sú v Jave veľmi dôležité. Vysvetli prečo.

V Jave je rozhranie (interface) definované ako kolekcia abstraktných metód, ktoré slúžia na deklaráciu správania, ktoré by mali implementovať triedy. Rozhrania definujú, aké metódy by mali byť k dispozícii v triedach, ale neimplementujú ich konkrétne. Triedy môžu implementovať jedno alebo viacero rozhraní, čím získavajú možnosť zdieľať a poskytovať spoločné správanie.

Rozhrania sú dôležité v Jave z niekoľkých dôvodov. Prvým dôvodom je, že umožňujú dosiahnuť abstrakciu a oddelenie zodpovednosti. Pomáhajú pri definovaní spoločných kontraktov a zároveň oddeľujú implementáciu od deklarácie.

Druhým dôvodom je, že rozhrania umožňujú viacnásobnú dedičnosť správania v Jave. Triedy môžu implementovať viacero rozhraní, čím získavajú možnosť dediť vlastnosti a metódy z viacerých zdrojov.

Tretím dôvodom je, že rozhrania slúžia ako základ pre polymorfizmus. Môžeme vytvoriť premennú typu rozhrania a priradiť jej inštanciu triedy, ktorá implementuje dané rozhranie. Týmto spôsobom môžeme pracovať s viacerými objektami rôznych tried, ktoré však implementujú rovnaké rozhranie, a volať ich metódy jednotným spôsobom.

Všetky tieto dôvody robia z rozhraní dôležitú súčasť jazyka Java a zabezpečujú flexibilitu, modularitu a znovupoužiteľnosť kódu.

Čo znamená výraz v Jave Final class a kedy je vhodné túto vlastnosť použiť?

Deklarovaním triedy ako final class dostaneme v Java triedu, od ktorej sa nedá dediť a teda predstavuje už hotovú, dokončenú triedu.

Použitie final class môže byť užitočné v niekoľkých z nasledovných prípadoch:

  • Zabezpečenie bezpečnosti: Ak chceme zabrániť iným triedam v dedení našej triedy a zmenách, ktoré by mohli ovplyvniť jej správanie alebo stav.
  • Efektivita a optimalizácia: Keď trieda nie je určená na dedenie, jej označenie ako final umožňuje kompilátoru optimalizovať kód triedy.
  • Konštantné triedy: V niektorých prípadoch chceme mať triedu, ktorej objekty sú nemenné a nemôžu byť zmenené po ich vytvorení. Použitie final class nám umožňuje dosiahnuť tento stav a zabezpečiť, že objekty triedy zostanú konštantné.
  • Prekrytie metód: Keď metóda v triede je označená ako final (tiež. final method), nemôže byť preťažená (override) v dediacich triedach. Toto je užitočné, ak chceme zabrániť zmenám alebo prepísaniu určitých metód triedy v dedičných triedach.

Použitie teda závisí od konkrétneho scenára a požiadaviek na návrh. Všeobecne platí, že označenie triedy ako final je vhodné, ak nechceme, aby bola dedená alebo menená, a zabezpečuje stabilitu a bezpečnosť nášho kódu.

Začiatočníci v Jave si často pletú pojmy ako definícia a deklarácia (definition, declaration). Aký je medzi nimi rozdiel?

Vo všeobecnosti rozdiel medzi definíciou (definition) a deklaráciou (declaration) je nasledovný:

  • Deklarácia je zápis, ktorý informuje kompilátor o existencii premennej, metódy alebo triedy. Pri deklarácii sa uvádza typ a názov entity, ale nie všetky podrobnosti alebo implementačné detaily. Deklarácia hovorí kompilátoru, že daná entita existuje a môže byť použitá.
  • Zatiaľ čo definícia sa používa na poskytnutie podrobností a implementácie entity, ktorá bola predtým deklarovaná. Definícia obsahuje kompletné informácie a realizáciu danej entity. Pri definícii sa určuje, ako by mala entita fungovať a aké presne operácie vykonávať.

Keď to zhrniem, tak deklarácia informuje o existencii entity a uvádza jej typ a názov, zatiaľ čo definícia poskytuje kompletné informácie a implementáciu entity.

Pozri si viac článkov pre začínajúcich programátorov: ako sa stať programátorom, viac o plate programátora. Hľadáš prácu ako Java developer? V msg life Slovakia máme skvelé firemné benefity. Reaguj na pracovné ponuky.

O autorovi

Jozef Wagner

Java Developer Senior

Viac ako 10 rokov programujem v Jave, momentálne pracujem v msg life Slovakia ako Java programátor senior a pomáham zákazníkom implementovať ich požiadavky do poistného softvéru Life Factory. Vo voľnom čase si rád oddýchnem v lese, prípadne si zahrám nejakú dobrú počítačovú hru.

Daj nám o sebe vedieť