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

V tejto už štvrtej časti obľúbeného seriálu pokračujeme v často pýtaných otázkach, ktoré sa môžu vyskytnúť na prvom kole pracovného pohovoru na pozíciu Java programátor junior. Ak si ešte nečítal predošlé diely, nájdeš ich tu:

Kedy by ste uprednostnili statickú metódu (static method) oproti klasickej v Jave?

Statická metóda v Jave je metóda, ktorá patrí ku triede a nie ku konkrétnym inštanciám tejto triedy. To znamená, že môžeme volať statické metódy priamo z triedy, bez potreby vytvárania objektu tejto triedy.

Hlavné odlišnosti statických metód oproti klasickým sú:

  • Deklarácia: Statické metódy sa deklarujú pomocou kľúčového slova static pred návratovým typom metódy.
  • Volanie: Pre volanie statickej metódy nepotrebujeme vytvárať objekt triedy. Voláme ju priamo pomocou mena triedy.
  • Prístup k atribútom: Statické metódy môžu pristupovať len ku statickým atribútom triedy, pretože nemajú prístup k inštancii objektu.

Obmedzenia statických metód

Keďže statické metódy neoperujú nad atribútmi inštancie triedy, mali by sme si byť preto vedomí, že:
– statická metóda sa nemôže priamo odkazovať na atribút inštancie
– statická metóda nemôže priamo volať metódu inštancie
– odvodená trieda nemôže preťažiť (override) statické metódy
– v statických metódach nemôžeme použiť kľúčové slová this a super

Statické metódy sa používajú v prípadoch, keď metóda nepotrebuje meniť stav objektu alebo nepoužíva premenné inštancie. Rovnako, keď chceme implementovať metódu bez vytvárania inštancie. Využitie tak nájde najčastejšie v pomocných metódach.

V akom prípade by ste použili finálnu metódu (final method) v Jave?

Finálna metóda, je označenie takej metódy, ktorá nemôže byť prekrytá (override) v odvodených triedach. Týmto spôsobom dosiahneme zákaz zmeny implementácie tejto metódy.

Hlavné odlišnosti finálnych metód oproti klasickým sú:

  • Deklarácia: Finálne metódy sa deklarujú pomocou kľúčového slova final pred návratovým typom metódy.
  • Prekrytie: Finálna metóda si zachováva svoju pôvodnú implementáciu z nadradenej triedy a nemôže byť zmenená.

Použitie finálnych metód je užitočné v prípade, keď navrhujeme triedu a chceme zabezpečiť, že konkrétna hotová metóda by sa nemala dať ďalej upravovať. Štandardné Java knižnice sú plné metód označených ako final.

Čo je to singleton a aké má praktické využitie?

Singleton je návrhový vzor triedy, ktorý zabezpečuje existenciu iba jednej inštancie danej triedy a poskytuje k tejto inštancii prístup zvonku. Cieľom tohto návrhového vzoru je zamedziť vytváraniu viacerých inštancií triedy a zabezpečiť, aby všetky odkazy na túto triedu smerovali k jedinej existujúcej inštancii.

Hlavné vlastnosti singleton triedy sú:

  • Privátny konštruktor: Singleton trieda má konštruktor nastavený ako private, čo bráni vytváraniu nových inštancií mimo samotnej triedy.
  • Privátna statická inštancia: Singleton uchováva svoju jedinú inštanciu ako privátnu statickú premennú tejto triedy.
  • Verejná statická metóda: Singleton poskytuje verejnú (public) statickú metódu, ktorý zabezpečuje prístup k samotnej inštancii. Táto metóda kontroluje, či inštancia už existuje, a buď ju vytvorí, alebo ju vráti.

Singleton návrhový vzor je užitočný, keď potrebujeme zabezpečiť, aby existovala iba jedna inštancia triedy v celom prostredí programu, napríklad pri práci so zdieľanými zdrojmi, databázovými spojeniami alebo objektami obsahujúcimi globálne nastavenia.

Aká je úloha deštruktora v Jave?

V jazyku Java nie je priamo ekvivalentný koncept deštruktora ako v niektorých iných jazykoch, napríklad v C++. V Jave sa stará o automatické uvoľňovanie pamäte zberač odpadu (garbage collector) a teda nie je potreba explicitne definovať deštruktory.

Pri tvorbe objektov v Jave netreba zohľadňovať uvoľňovanie pamäte ani ich deštrukciu. Keď sa objekt stane nepoužiteľným a stratí sa naň odkaz (referencia), garbage collector automaticky deteguje takéto nepoužívané objekty a uvoľní pamäť, ktorú zaberajú.

V Jave je možné implementovať metódu finalize(), ktorá sa volá tesne predtým, než je objekt odstránený z pamäte zberačom odpadu. Táto metóda však nie je rovnaká ako deštruktor v iných jazykoch a má obmedzený vplyv na správu pamäte a uvoľňovanie zdrojov. Používanie finalize() sa neodporúča, pretože môže mať nepredvídateľné správanie.

Opíš spracovanie výnimiek (exception handling) a vysvetli prečo je to dôležité

Spracovanie výnimiek je koncept, ktorý umožňuje programátorom ošetriť a riadiť výnimočné situácie alebo chyby, ktoré môžu nastať počas behu programu. Výnimky môžu byť spôsobené rôznymi faktormi, ako napríklad chybným vstupom, problémami so súborovým systémom alebo nekonzistentným správaním programu.

Hlavné bloky spracovania výnimiek (exception handling blocks)

Hlavné bloky spracovania výnimiek slúžia na zachytávanie a spracovanie výnimiek. Poznáme nasledovné:

  • try: Obsahuje kód, v ktorom môžu vzniknúť výnimky. Tento blok musí byť vždy prítomný pri spracovaní výnimiek.
  • catch: Blok, ktorý spracúva zachytenú výnimku. Catch blokov môže byť viacero pre rôzne typy výnimiek.
  • finally: Blok s kódom, ktorý sa vykoná nezávisle na tom, či výnimka nastala alebo nie. Tento blok sa používa na zabezpečenie, že určitý kód sa vykoná vždy, napríklad uvoľnenie zdrojov.
  • throw: Používa sa na explicitné vyvolanie výnimky v rámci kódu. Umiestňuje sa vo vnútri bloku try.

Vyhadzovanie výnimiek: Výnimky môžu byť explicitne vyhodené pomocou throw príkazu. Tento príkaz sa používa na signalizovanie, že výnimka nastala.

Spracovanie výnimiek je dôležitou súčasťou na zabezpečenie, že program neskončí neočakávaným pádom a poskytne informácie o prípadných chybách, ktoré môžu nastať.

Ak si Java programátor a hľadáš prácu, prečítaj si viac o plate programátora a pozri si naše 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ť