Java Interview Questions

5.0(1)
studied byStudied by 24 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/84

flashcard set

Earn XP

Description and Tags

Junior and intermidiate Question for Java interview.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

85 Terms

1
New cards

Mik a Wrapper osztályok?

Objektumok. Minden primitív adattípushoz tartozik egy wrapper osztály, mely egy nem primitív osztályt hoz létre belőlük, ami a heap-n tárolódik.

2
New cards

Mi a classloader?

A class loader a legelső fájl, amit betölt a JVM. Dinamikusan működik, futásidőben. A memóriában tárolódik. Bootstrap classloader a fő osztály és minden más classloader alá tartozik.
pl.: System, Extension, Application classloader.

3
New cards

Mi a marker interface?

Egy olyan interface, amely nem tartalmaz változókat, metódusokat, csak futásidejű információt nyújt a programnak.
pl.: Serializable, cloneable, remote …

4
New cards

Sorold fel az 5 fő memóriakiosztást!

  1. Class memory

  2. Heap memory

  3. Stack memory

  4. Program counter Registry

  5. Native Method Stack memory

5
New cards

Mi a Java String Pool?

A Heap memóriában Stringek gyűjteménye. Ha létrehoztunk egy Stringet, akkor a JVM először megnézi, hogy létezik-e. Ha igen, akkor egy referenciát ad meg. Ha nem, akkor helyet foglal neki és létrehozza.

6
New cards

Mi a Late Binding?

A Polimorfizmus hatására, ha egy gyerekosztály az “@override” kulcsszóval felüldefiniálja a szülő metódusát, akkor a program, futásidőben dönti el, hogy annak a metódusnak épp melyik változatát fogja használni.

7
New cards

Mi az enumeráció?

Egy interfész, amely lehetővőteszi, a kollekcióban tárolt elemek szekvenciális hozzáférését. Kezelhetünk és felsorolhatunk különböző értékeket egy adott adattípusban.

8
New cards

Mi a copy contructor?

Egy olyan constructor, amelynek paraméterében önnön maga típusát várja. Ezzel könnyen létre tudunk hozni egy másolatot egy már létező példányból. Ez jobban működik, mintha a clone() metódussal másolnánk le a példányt. (deep copy készül).

9
New cards

Mi történik, ha a main nem static?

Sikeresen lefordul, de egy Run-time errort fog dobni: “NoSuchMethodError.”

10
New cards

Visszaadhat-e egy konstruktor valamilyen értéket?

Igen alapértelmezetten magát az osztályt adja vissza. Külső behatást nem tudunk gyakorolni rá.

11
New cards

Mi a “this” kulcsszó?

Ez egy referencia kulcsszó, amellyel az épp aktuális osztály metódusaira, változóira konstruktorára utalunk.

12
New cards

Mi a lokális változó?

Egy metódusban vagy konstruktorban létrehozott változó, ami akkor jön létre, amikor a program belép a metódusba és kilépéskor megszűnik a létezésük. Pont ezért a Heap memory-ban tárolódnak és kívülről nem hozzáférhető.

13
New cards

Mi a különbség a >> és a >>> közt?

Mindkettő biteltolást jelent jobbra.
pl.: >> esetén a biteket eltolja jobbra és közben, figyeli az előjelet. Negatív számoknál 1-ket hoz be, pozitívaknál pedig 0kat. (signed)
01100111>>>2 → 0001100 lesz, előjeltől függetlenül mindig 0kat hoz be. (unsigned, nem tartja meg az előjelet)

14
New cards

Futtatható-e úgy a program, hogy “static public void main(){}”?

Igen, mert a java nyelv nem köti meg a módosító szavak sorrendjét.

15
New cards

Mire használjuk a generikus típusokat?

Typesafety-t biztosítanak. Átláthatóbb és hatékonyabb lesz a kód. Futásidő helyett már fordításkor lezajlik.
Metódusnál megadhatjuk, hogy milyen értéket kell biztosan visszaadni, még voidnál is.
Típusok: <E>,<T>,<K>,<V>,<N>

16
New cards

Mi az instance változó?

Egy osztályon belül, de metóduson kívül létrehozott változó, mely példányosításkor foglal helyet a program a heap-n. Alapértelmezett értéke 0, false, null.

17
New cards

Statikus metódus overloading-olható?

Nem, statikus metódust nem tudunk felülírni a gyerekosztályban. Hibát fog dobni. “Static method cannot be referenced.”

18
New cards

Mi az asszociáció?

Osztályok között kétirányú összeköttetés, melyben egyik fél sincs a másik befolyása alatt. Mindkét irányba lehet adatot továbbítani.
Pl.: Professzor - kurzus, bank - ügyfél

19
New cards

Mi az a JDK?

Jaba Developement Kit. Ez egy összesített csomag a JRE-nek és a fejlesztői eszközöknek.
Oracle: JDK SE, JDK EE, JDK ME

20
New cards

Mi a JIT?

Just-in-Time compiler. Ez a Java runtime envirement-hez tartozik. Futásidőben fordítja le a a byte kódokat gépi nyelvre.

21
New cards

Miért tekintjük Dinamikusnak a Java nyelvet?

Mert a java nyelv könnyen alkalmazkodik a változó környezetekhez. Sok futásidejű információt tartalmaz, amik segítik az objektumokhoz való hozzáférést futásidőben.

22
New cards

Le tudsz futtatni egy kódot mielőtt lefutna a main?

Igen, a static kulcsszót használva bármilyen metódus előtt előbb le fog futni, minthogy a program belépne a main-be.

23
New cards

Lehet-e együtt használni a “this()” és a “super()” kulcsszavakat?

Nem lehet használni a kettőt együtt csak külön külön.

24
New cards

Sorold fel egy applet élettartamát!

  1. Initialization

  2. Start

  3. Stop

  4. Destroy

  5. Paint

25
New cards

Mi a lokális változók alapértelmezett értéke?

Ha létrehozunk egy változót, akkor annak nincs alapértelmezett értéke, ha csak mi nem adunk, ezért alapértelmezetten vagy random lesz vagy egy úgynevezett “garbage” érték. Ez a korábban azon a címen létező változó érteke lesz.

26
New cards

Mi a statikus változó?

A statikus változóknak már fordításidőben foglalódik hely a Stack memory-ban, Mindig csak egy másolat van belőlük, még akkor is, ha többször van egy objektum példányosítva.

27
New cards

Mi a csomag(Package)?

Egy projekten belül a fájlrendszer így néz ki: Projekt → src mappa → Package → classfile → code. A csomag az osztályok, interfészek, könyvtárak és JAR fájlok összessége. Segít, hogy a kódokat újra felhasználjuk.

28
New cards

Mi a super kulcsszó?

Ez egy referencia kulcsszó, mely a közvetlen szülő osztályra referál.

29
New cards

Mi az object cloning?

Ez a .clone() metódus, amellyel képesek vagyunk teljesen lemásolni egy már létező objektumot. (deep clone)

30
New cards

Miért nem teljesen objektum orientált a java nyelv?

Mert még mindig 8+ primitív adattípust támogat.

31
New cards

Mi a kivétel?

A kivétel egy váratlan esemény a program futása közben, amely megállíhatja a programot. Ezeket a megállásokat kezelhetjük Exception Handlinggel. pl.: Try-Catch

32
New cards

Mi a final kulcsszó?

Funkciója függ, hogy hol használjuk.
Adattag: Csak egyszer fog felvenni értéket az adattag, amit később nem tudunk megváltoztatni a program futása alatt, ezt megteheti deklarációkor vagy, mikor meghívjuk a konstruktort.
Metódus: Nem írható felül (@override) a leszármazott osztályokban.
Osztály: Nem lehet gyerekosztálya.

33
New cards

Hányszor hívja meg a program a finalize() metódust?

A Java runtime hívja meg a finalize() metódust az objektumokra. Mindig akkor mielőtt a Garbage Collector lefutna, mivel a finalize() gondoskodik róla, hogy minden esetlegesen nyitva maradt fájlt bezárjon.

34
New cards

Lehetséges a pointerek megvalósítása java-ban?

Nem lehetséges. A pointerek közvetlen a memóriacímre mutatnak, de a JVM saját maga kezeli a memóriacímeket és az egyszerűség megtartása érdekében nem tették lehetővé a hozzáférést.

35
New cards

Miért gyorsabb a delete funkció a LinkedList-en, mint az Array-ben?

Linkelt listában egy minimális változtatás szükséges törlés esetén. Pontosabban, a kitörölt elemre mutató kulcsot kell módosítani, hogy a következő elemre mutasson.
Array-ben ez sokkal több módosítással jár, mivel a kitörölt elem soron következő tagjait mind eggyel előrébb kell mozgatni.

36
New cards

Mi a thread lépései?

A thread lépései:

  1. New Born

  2. Runnnable

  3. Running

  4. Blocked (input/output)

  5. Dead (JVM megszüntetése)

37
New cards

Mi a singleton osztály?

Amikor egy osztály konstruktorát priváttá tesszük, akkor abból az osztályból csak egy példányt tudunk létrehozni, ezért hívjuk Singleton-nak.

38
New cards

Java interface-k és absztrakt osztályok közti különbség?

Egy Absztrakt osztályban 0..n absztrakt és nem absztrakt metódus létezhet, míg az interfészekben csak absztrakt metódusok lehetnek. Az interfészekkel lehet többszörös öröklődést megvalósítani. Minden implementált interfész metódusát meg kell valósítani egy osztályon belül, kivéve ha az osztály abstract.

39
New cards

Milyen loggolási keretrendszert ismersz?

Log4J
Ezzel a keretrendszerrel ellenőrizni tudjuk, hogy a programunk megfelelően működik és a várt eredményt adja. A fejlesztők a log üzenetek alapján tudják eldönteni a bug állapotát, mikor, hol keletkezett a hiba.

SLF4J stb.

40
New cards

Milyen adatstruktúrákat ismersz?

Set, List, Map, Queue, Stack, LinkedList, Concurrent

41
New cards

Hogyan működik a HashMap?

A HashMap előnye, hogy az adatok beillesztése, elem keresése és lekérése O(1) időben zajlik a kulcsok alapján. Value szerint O(n). Bármilyen osztályt használhatunk kulcsként, viszont akkor meg kell adni a .euqals() és a .hashcode() működését @override-al. Amikor létrehozzuk a HashMap-t akkor a kulcs lefutattja a hashcode() metódusát, ami kiválaszt egy bucket-t és ott eltárolja az értéket. Kulcs alapján kereséskor szintén lefut a hashcode és abban a bucket-ben végig iterál a kulcs .equals() metódusa.
Pl.: Map<String, Product> Products = new HashMap<> ();

42
New cards

Java-ban mi a lock? Mikor használják?

A lock a többszálúságot vezérlő/befolyásoló interfész a java nyelvben. Feladat például:

  1. A notify során a legrégebb óta várakozó kapja meg a vezérlést.

  2. Ha van a szálnak egy kritikus szakasza, amit mindegy, hogy mikor hajt végre, akkor a futás közben ellenörzi, hogy épp várakoznak-e és megakadna vagy sem. Ha nem akadna meg akkor belép, ha megakadna, akkor lefoglalja az erőforrást és addig mást csinál.

  3. Sorba áll egy erőforrásért, de ha adott időben nem kerül sorra, akkor tovább lép.

  4. A szinkronizálás legyen eltérő adott erőforrás olvasása és írása során.

  5. Kívülről meg lehessen szakítani a szál várakozását akkor is, ha nem kerülne sorra.

    .lock() - erőforrást lehet lefoglalni és várakozni.

43
New cards

Mi a különbség az optimistic és a pessimistic lock között?

Az optimistic lock ellenőrzi a erőforráshoz való hozzáférést, és követi annak a változását, ha változás van, akkor megy, hogy használja. (arra számít, hogy ritkán van használva és lesz hely).

A pessmistic lock arra számít, hogy az erőforrás használatba lesz véve, ezért azt lelockolja, hogy amíg ő használja, addig más ne tudjon hozzáférni és csak akkor engedi el, amikor már végzett.

44
New cards

Milyen fontosabb patterneket ismersz?

Builder Pattern: Creational Design Pattern, elkerülhető a hatalmas konstruktor kreálása rentgeteg paraméterrel, nem teszi kötelezővé minden adat deklarálását.

Factory Pattern: Creational Design Pattern, Több subclass megléte esetén, egy factory osztályt hozunk létre, amely a megfelelő objektumot adja vissza. Ezzel könyebb az objektumok implementálása, változtatása, tesztelése, és újra felhasználása.

Event driven: System design practice, microszolgáltatásoknál hasznos

45
New cards

Mi az a REST?

Egy szoftverarchitektúra, HTTP keretein belül jelent meg először, de nem csak arra korlátozódik, Kliens és Szerver közötti kérés választ valósítja meg.

46
New cards

Hogyan működik a rebase és mit jelent?

Sokkal letisztultab lineáris lesz a commit history, az a commitok áthelyeződnek egy másik ágra, vagy az aktuális ág elejére.

47
New cards

Mit jelent a git tag?

A tag egy olyan referecia pont, amely egy speciális commitra history-ra mutat.

48
New cards

Mire és mikor használjuk a merge-t?

A merge paranccsal kettő vagy több ágban végzett változtatásokat tudunk egyesíteni egy ágba. Különböző fejlesztői ágakon végzett munka is könnyen integrálható így a főágba.

49
New cards

Mi a Merge vagy Pull request?

Nem equivalens a git merge vagy git pull paranccsal. Mikor egyesíteni akarunk egy feature-t vagy egy fejlesztői ágat a főágra.

50
New cards

Soroljon fel pár REST-es metódust, headert!

  1. GET

  2. PUT

  3. DELETE

  4. POST

  5. PATCH

  6. Authenticate

  7. Request

  8. Response

51
New cards

Mi a különbség az Exception és a Runtime Exception között?

Az Exception (checked) egy olyan hiba, amit még fordítás időben kezelnünk kell. A Runtime Exception (unchecked) egy futásidőben bekövetkezhető hibát jelez, ezt nem tudja teljesen biztosan megmondani.

52
New cards

Mi az MVC?

Modell View Controller: Három komponensű tervezésű modell.
Modell: Adatok tárolása és kezelése
View: Felhasználói felület része, amely a modellt/adatok jeleníti meg
Controller: Kapcsolatot biztosít a View és a modell között, kezeli a felhasználói inputot

53
New cards

Milyen láthatósági szintek vannak Java-ban?

public: bárhonnan elérhető

private: csak a saját osztályból elérhető

protected: csak a saját csomagban és subclassokból elérhető

alapértelmezett: csak a saját csomagban elérhető

54
New cards

Mi az “@Autwired”? Mikor használjuk?

Függőségek kezelésére használjuk, osztályon kívül példányosítás automatikusan.

55
New cards

Mi az ORM?

Object Relational Mapping
Java objektumok és relációs adatbázis között létesít kapcsolatot a java alkalmazásban.
pl.: JPA, Hibernate, Transaction

56
New cards

Mik azok az entitások? Mire használják őket?

Az entitások Springben az alkalmazásokban létező objektumok, amelyeket adatbázisban lehet tárolni vagy onnan lekérdezni. Ezeket JPA annotációkkal jelöljük: “@Entity”

57
New cards

Milyen Springes annotációkat ismersz?

Autowired, Component, Service, Repository, Controller, Get, Put

58
New cards

Mi az a Java Reflection?

Egy API, amellyel futásidőben módosíthatjuk, vizsgálhatjuk az osztályokat, objektumokat, interfészeket.
Az alábbi módon érhetjük el a az objektum osztályának adatait:
Field[] varName[] = objName .getClass().getDeclaredFields(): ez egy Field[] tömben adja vissza az objName osztályában fellelhető változók neveit. Ezen végig tudunk iterálni és ha megtaláltuk a keresett adattagot, akkor azt meg tudjuk változtatni még akkor is a kívánt értékünkre, ha az private static típusú akár:
field.getName() - visszaadja a változó nevét
field.set(objName, “uj ertek”) - új érték megadása
field.setAccessible(true) - ha privát és statikus, akkor előbb ezt kell használnunk, hogy módosíthatóvá tegyük.

59
New cards

Mire használjuk a service-ket Springben?

REST-es resource mögötti logikára, csak class-okra lehet alkalmazni.

60
New cards

Mi az a JPA?

Java Persistance Api, az adatbázissal való kommunikációt valósítja meg.

61
New cards

Adj példát Springes tervezési modellre!

pl.: MVC, MVVM

62
New cards

Mi az a Spring Bean, hogy tudunk létrehozni beant?

Minden Objektum a Spring keretrendszerben, amit a Spring container-en keresztül hozunk létre azt Spring Bean-nek hívjuk. Annotációkkal hozzul létre őket, @component, @service vagy XML-es metaadatokkal.

63
New cards

Sync és Async között mi a különbség?

A syncnél megvárjuk a választ, míg az asyncnél többet is elküldhetünk egyszerre és nem kell megvárni a választ, futhat tovább a program.

64
New cards

Mi az Angular Directive?

HTML tagek kibővítésére használt attribútum. @Directive annotációval vannak jelölve.

65
New cards

Hogyan lehet Angulárban megvalósítani a two-way binding-ot?

Two-Way Binding: Információ megjelenítése a felhasználónak és a felhasználói input kezelése a feladata. Általában ngModel-el valósítják meg.

66
New cards

Mi az EventEmitter?

Szinkronos vagy aszinkronos megoldási módszer az események küldésére. Többszálúságban lehet haszna.

67
New cards

Angulárban, hogy hozunk létre Service-t?

Injectable annotációkkal és importálással

68
New cards

Milyen lifecycle hookokat ismersz Angularban?

ngOnChanges, ngOnInit, ngOnDestroy

69
New cards

Javascriptben milyen scopek vannak?

local: Function-n belül
block: let, const - ezek csak a {} belül léteznek a var nem lehet block scope
global: Function-n kívül létrehozott.

70
New cards

Mi az a Hoisting JS-ben?

A javascript nem blokkalapú láthatósággal rendelkezik, hanem függvényalapúval, ezért a JS interpreter a függvényen belül deklarált változókat és függvényeket felülre helyezi, és később a sorukban csak értékadás történik.

71
New cards

Mi a callback és a closure?

Callback: JS-ben az eljárásokat objektumként értelmezzük és átadhatóak egymásnak.

Closure: Functionök csoportja. Segíti egy function-nek egy másik külső function változóihoz való hozzáférést.

72
New cards

Milyen változó típusokat ismersz JS-ben?

Const, let, var, Scope-ban eltérőek

73
New cards

Mi a static kulcsszó szerepe?

Változóban: A Stack-ben foglalódik hely neki, nem kell példányosítani az osztályt ahhoz, hogy elérjük, tudjuk változtatni az értékét később, az osztály többszöri példányosításakor is csak egy változat él belőle.
Metódusban: Rögtön lefut a program futásakor, mielőtt az belépne a main-be, nem fér hozzá a nem statikus változókhoz, szintén példányosítás nélkül hozzáférhető, nem lehet override-olni, de over hide-olni igen, ugyanaz kb. csak nem felülírja, hanem a elrejti a super class metódusát.
Class: Java-ban a fő osztály nem lehet static csak a belső osztály. A statikus belső osztályok csak a külső osztály statikus tagjaihoz fér hozzá.

74
New cards

Mik az osztályok?

Az osztályok az OOP szerves részei. A program gyakorlatilag az osztályok és azok közötti kommunikációból áll. Egy-egy Objektumot számos kisebb objektumból állíthatunk össze. Class kulcsszóval definiáljuk őket. Léteznek Subclass-ok és nessted class-ok, minden létezhet konstruktora, metódusa és változója, lehet abstract.

75
New cards

Mi concurrent package java-ban?

Ennek a csomag köszönhetően oldható meg javában a többszálúság, azaz hogy párhuzamosan tudjunk futtatni egyszerre több alkalmazást, programot. Ennek legfontosabb része a Threads. Számos része van a csomagnak:

  1. Executor: feladatokat futtatásáért felel.

  2. ExecutorService: szálelérhetőség alapján állít össze egy várólistát.

  3. Lockes: lezár más szálakat, hogy elérjenek bizonyos funkciókat, amig jelenleg használ.

76
New cards

Magyarázd el a Set adatszerkezetet!

Bármilyen adatot tárolhatunk egy set-ben, de általában vmilyen közös tulajdonság alapján szoktuk az adatokat egy set-be rakni. Nem tartalmaz duplikációt, és az elemek sorrendje nem feltétlen egyezik meg az elemek beillesztésének sorrendjével. Lehet használni rajta a metszet, unió, különbség operációkat. HashSet, TreeSet is létezik.
private Set<Integer> setA = setOf(1,2,3,4);

77
New cards

Mi a rekurzió?

Mikor önmagát hívjuk meg.

78
New cards

Mi a CI/CD?

Continuous Integration / Continuous Delivery:
Automatikusan gyakran frissíti a kódot mondjuk a GIT-n keresztül, hogy a többi fejlesztő is mindig a legfrisebb változatokkal tudjon tesztelni és dolgozni.

79
New cards

Mi a Kanban?

Egy vizuális tábla, amin vizuálisan rögzítjük a fejlődést és így egyszerűbben nyomon tudjuk követketni az egészet és átláthatóbb is lesz.

80
New cards

Van a többszörös öröklődés?

A java nyelven nincs ténylegesen megvalósítva a többszörös öröklődés, de mégis van rá módszer, hogy vmi hasonlót létrehozzunk. Ezt Abstract osztályokkal és interfészekkel tudjuk elérni. Egy osztálynak lehet több gyerekosztálya, de egy subclass-nak csak egy szülője lehet.

81
New cards

Mit jelent az, hogy a String immutable vagy final?

A String Pool bevezetésekor nyílván probléma volt, hogy több változó mutatott egy memóriacímre, mert ha az egyiken változtatás történt, akkor a többi is megváltozott. Hogy ezt elkerüljük bevezették, hogy a String class final és immutable, azaz állandó, ezért ha most megváltoztatjuk a String-t, és több változó osztozik rajta, akkor egy új memóriacímre fog kerülni ez az új érték.

82
New cards

Mi a @Restcontroller?

A Springen belül egyesíti a @Controller és a @ResponseBody annotációkat. Segítségével nem kell mindig kitennünk a @ResponseBody annotációt minden metódushoz, hanem egyszer a Class elején a @Restcontroller gondoskodik arról, hogy a HTTP kérést kezelő metódusok visszatérési értéke rögtön serializálva legyen JSON-ná és HTTP válasz legyen.

83
New cards

Mik az Endpointok, működésük?

Monitorozni és irányítani tudjuk vele a Spring alkalmazásunkat.
Actuator Endpoint: Monitorozást és a kezelést teszi lehetővé az alkalmazásunkkal. pl.: Health Endpoint, az alkalmazásról közöl információkat.
Custom Endpoint: Létre tudunk hozni sajátot, amit mi befolyásolunk, hogy bizonyos információkat megtudjun ka programunkról, amikre kíváncsiak vagyunk.
@Endpoint annotációval tudjuk megadni a saját funkciónkat endpointként.

84
New cards

Mi a Spring Container?

A Spring container az egyik alapköve a Springnek. Ez gondoskodik az objektumok kreálásáról és konfigurálásáról. Az IoC törvényét követi. (Inversion of Control) Ez a container irányítja az alkalmazás részeinek folyamatát, a könyebb menedzselés érdekében. A Container kiolvassa a metaadat-ból az információkat, hogy objektumokat hozzon létre, konfigurálja őket és egyesítse. Ezzel egy dinamikus és flexibilis megoldást nyújt az alkalmazásfejlesztésnek.

85
New cards

Mit csinál a @ResponseBody?

Mikor az Angular kliensel együtt működik a Spring. A Spring vár egy JSON fájlt és ezt az @RequestBody deserializálja, hogy érthető legyen Springben.
Az @ResponseBody segítségével, amit az objektum választ visszaadna, automatikusan serializálja JSON-ná és küldi a kliens felé. @RestController esetén nem kell kitennünk a @ResponseBody-t