1/84
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
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.
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.
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 …
Sorold fel az 5 fő memóriakiosztást!
Class memory
Heap memory
Stack memory
Program counter Registry
Native Method Stack memory
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.
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.
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.
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).
Mi történik, ha a main nem static?
Sikeresen lefordul, de egy Run-time errort fog dobni: “NoSuchMethodError.”
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á.
Mi a “this” kulcsszó?
Ez egy referencia kulcsszó, amellyel az épp aktuális osztály metódusaira, változóira konstruktorára utalunk.
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ő.
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)
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.
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>
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.
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.”
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
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
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.
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.
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.
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.
Sorold fel egy applet élettartamát!
Initialization
Start
Stop
Destroy
Paint
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.
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.
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.
Mi a super kulcsszó?
Ez egy referencia kulcsszó, mely a közvetlen szülő osztályra referál.
Mi az object cloning?
Ez a .clone() metódus, amellyel képesek vagyunk teljesen lemásolni egy már létező objektumot. (deep clone)
Miért nem teljesen objektum orientált a java nyelv?
Mert még mindig 8+ primitív adattípust támogat.
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
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.
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.
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.
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.
Mi a thread lépései?
A thread lépései:
New Born
Runnnable
Running
Blocked (input/output)
Dead (JVM megszüntetése)
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.
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.
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.
Milyen adatstruktúrákat ismersz?
Set, List, Map, Queue, Stack, LinkedList, Concurrent
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<> ();
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:
A notify során a legrégebb óta várakozó kapja meg a vezérlést.
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.
Sorba áll egy erőforrásért, de ha adott időben nem kerül sorra, akkor tovább lép.
A szinkronizálás legyen eltérő adott erőforrás olvasása és írása során.
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.
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.
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
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.
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.
Mit jelent a git tag?
A tag egy olyan referecia pont, amely egy speciális commitra history-ra mutat.
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.
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.
Soroljon fel pár REST-es metódust, headert!
GET
PUT
DELETE
POST
PATCH
Authenticate
Request
Response
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.
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
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ő
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.
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
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”
Milyen Springes annotációkat ismersz?
Autowired, Component, Service, Repository, Controller, Get, Put
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.
Mire használjuk a service-ket Springben?
REST-es resource mögötti logikára, csak class-okra lehet alkalmazni.
Mi az a JPA?
Java Persistance Api, az adatbázissal való kommunikációt valósítja meg.
Adj példát Springes tervezési modellre!
pl.: MVC, MVVM
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.
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.
Mi az Angular Directive?
HTML tagek kibővítésére használt attribútum. @Directive annotációval vannak jelölve.
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.
Mi az EventEmitter?
Szinkronos vagy aszinkronos megoldási módszer az események küldésére. Többszálúságban lehet haszna.
Angulárban, hogy hozunk létre Service-t?
Injectable annotációkkal és importálással
Milyen lifecycle hookokat ismersz Angularban?
ngOnChanges, ngOnInit, ngOnDestroy
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.
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.
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.
Milyen változó típusokat ismersz JS-ben?
Const, let, var, Scope-ban eltérőek
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á.
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.
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:
Executor: feladatokat futtatásáért felel.
ExecutorService: szálelérhetőség alapján állít össze egy várólistát.
Lockes: lezár más szálakat, hogy elérjenek bizonyos funkciókat, amig jelenleg használ.
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);
Mi a rekurzió?
Mikor önmagát hívjuk meg.
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.
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.
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.
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.
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.
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.
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.
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