Gyakran feltett kérdésre interjúk gyűjteménye osztály java (1. rész)
Gyakran feltett kérdésre interjúk gyűjteménye osztályok Java (1. rész).
Kétségtelen, hogy a gyűjtemény Java rendkívül fontos terület, és a kérdések a gyűjtemények fogják kérni interjúk mind a kezdő és tapasztalt programozók. A téma olyan hatalmas, hogy gyakorlatilag lehetetlen, hogy ellepje teljesen. Mégis alapján a korábbi interjúk, megpróbálom felsorolni, amennyire csak lehet egy jó kérdés, amelyre fel kell készülnünk.
Kérdés lesz bonyolult és egyszerű, hogy ha a kérdés úgy tűnik, túl primitív - ne felejtsük el, hogy ez tökéletes kevésbé tapasztalt programozók.
Kérdések ebben a cikkben:
Általános kérdések
Továbbá, a keret tartalmazza a Map interfész. amely nem az örököse a Collection interfész. Az ok, amiért ő nem öröklik a gyűjtemény. megbeszéljük a negyedik kérdést.Nos, a válasz egyszerű: - „mert ez nem szükséges.” Funkcionalitás interfészt biztosít Cloneable és Serializable egyszerűen nem szükséges a gyűjtemény.
A másik ok - nem kell mindig Cloneable alosztály, mert minden egyes klónozási művelet fogyaszt sok memóriát, és tapasztalatlan programozók tölthetnek maguknak anélkül, hogy észrevette a következményeket.
És az utolsó ok - klónozás és sorszámozás nagyon szűken specifikus műveleteket, és rájön, amelyre szükségük van csak akkor, ha szükség van rá. Sok gyűjtemény osztályok végre ezeket a kapcsolódási pontokat, de nem szükségképpen zálogba őket minden gyűjtemény általában. Ha kell klónozni és sorszámozás - csak használja az osztályokat, hol van, ha nem - a más osztályokba.A helyes válasz erre a kérdésre - „mert nem kompatibilisek egymással.” A leírt módszer Collection interfész ADD (Object o). Szótár nem tartalmazhat ez a módszer, mert a munka a kulcs / érték párokat. Továbbá, a szótárak nincs ötlete Keyset, valueSet, amelyek nem a gyűjteményekben.
Ezen különbségek miatt, Térkép felület nem örökölheti Collection interfész. és ez jelenti a külön ága a hierarchiában.
Kérdések a listák
List Java egy rendezett gyűjteménye terméket. Mindegyik elemnek van egy indexe, kezdve nulla. Minden indexek egyediek. Amellett, hogy a leírt módszerek a felület Collection. A listák saját módszereit, elsősorban dolgozni az elemek a gyűjtemény az index. Lehet osztani ezeket a módszereket 3 csoportra - keresi a tétel, kap egy különleges elem, a gyűjtemény és az al-mintavételre. Mindezeket a műveleteket lehet végrehajtani az index az elem. Alapvető osztályok az interfészt megvalósító List Stack, vektor, ArrayList és láncolt lista. További információt velük, olvassa el a dokumentációt.
Ez a kérdés egy kicsit mélyebb, mint a programozás, ahogy a kezdők. Ennek célja -, hogy ellenőrizze a jelölt tudását a közüzemi órák keretén Collection. Vegyünk két ilyen osztályok, a legkeresettebb interjúk - gyűjtemények és mátrixok. A gyűjtemények osztály biztosítja a statikus módszerek műveletek gyűjtemények. Ennek megfelelően tömbök olyan statikus módszereket tömb műveletek.
Azt is szeretném megjegyezni, hogy ez a módszer képes kezelni nemcsak a húr, akkor hozzon létre egy listát a tételek bármilyen típusú, ami egy tömb.
Mint az előző, ez a kérdés teszteli tudását a közüzemi órák Gyűjtemény
Kérdések a készletek
Ő modellek matematikai sor halmazelmélet. Állítsa be a felület hasonlít a listára. de van néhány különbség. Először - ez nem rendezett gyűjteményéből. Ezért, hozzáadása / törlése elemek nem igényel válogatás. A fő jellemzője a készletek - egyediségét elemek, vagyis egy és ugyanaz az elem nem található meg a set kétszer.
Nagyon fontos, hogy a működés közben egyenlő () és kivonat, (). lehetővé teszik, hogy hasonlítsa össze a különböző osztályok. Két azonos csak akkor, ha ugyanazokat az elemeket tartalmazzák.
Ebből következik a fentiekből, a készülék nem támogatja műveleteket az index alapján az elem egy listában. A halmazok csak azok a módszerek, amelyek leírását az a felület Collection.
A fő osztályok az interfészt megvalósító Set. vannak EnumSet, Hash-halmaz, LinkedHashSet és TreeSet. Ha szeretne többet megtudni - olvasható a vonatkozó részeit Java dokumentáció.Mint már tudjuk, a HashMap üzletek kulcs / érték párokat, és a gombok egyedinek kell lennie. Hash-halmaz használja HashMap ezt a funkciót, hogy biztosítsa az egyediségét elemeit. A Hash-halmaz osztályban. Szótár leírása a következő:
Tehát, ha az elemet menteni a beállított, hogy hozza ezt az elemet, amely kulcsfontosságú a szótárban, és az értéke az objektum a jelenlegi, az alábbiak szerint:
Azt javasoljuk, hogy olvassa el ezt a cikket. ez segít, hogy könnyen válaszolni minden kérdésre kapcsolatos HashMap.Amint látható, az előző választ, az eljárás add () nincs ellenőrzés null. Továbbá, HashMap lehetővé teszi egy kulcs érvénytelen. következésképpen az egyszeri null elemet adhatunk Hash-halmaz.
TreeSet dolgozik ugyanazon az elven, mint a Hash-halmaz. de használ NavigableMap tároló elemek
NavigableMap egy osztály, amely örökli SortedMap. SortedMap, és nem teszi lehetővé a kulcs null. Következésképpen Treemap nem támogatja tárolására tételek, mint a null. Ha megpróbálja felvenni a null a TreeSet. kap egy kivétel NullPointerException.
Kérdések a szótárak
WeakHashMap egy megvalósítása a Map interfész. amely gyenge kapcsolatok az elemeknek. Azaz, ha a külső WeakHashMap nem volt egyetlen hivatkozás a eleme, ez az elem eltávolítható a szemétgyűjtő. Ez az osztály használatára tervezték tárgyakat, amelyek egyenlő () metódus ellenőrzi a személyazonosságát az objektumokat az == operátor. Miután az elem eltávolításra kerül a szemétgyűjtő, azt nem lehet visszaállítani, és nagy meglepetésére a programozó, hogy megtalálja azt a szótárban nem működnek.Venni a hivatalos dokumentumok:
Végrehajtás szótár teljes mértékben támogatja a multi-threading a hozzáadni / törölni / keresés elemekkel. Ez az osztály meg kell egyeznie előírások, mint a hash tábla, és a hash tábla tartalmaz módszerek megfelelő módszereket. Annak ellenére azonban, minden művelet szálbiztosságát, a minta elemeinek a művelet nem zár az asztalra, és nem arra, hogy tiltsanak be minden hozzáférést az asztalra. Ez az osztály kompatibilis hash valamennyi kérdésben, kivéve többszálú szinkronizálást.
A legfontosabb kérdés, amely valószínűleg kérni az interjú során bármilyen szinten programozó. Meg kell jól ismerik a témát, és nem csak azért, mert a legtöbb feltett kérdésre, de azért is, mert a megértés HashMap készülék lehetővé teszi, hogy könnyen megértsék a funkciók a más gyűjteményekben.
A válasz erre a kérdésre igen kiterjedt, és ez teljesen lehetséges, hogy olvassa el ezt a cikket -, hogy a HashMap. És abban a pillanatban, csak ne feledjük, hogy a HashMap működik tördeljük. Szótár definíció szerint egy olyan objektum, amely megköti a kulcsokat és értékeket. A tárolási ilyen struktúrák, hogy egy belső osztály bejegyzést.
Változók és a legfontosabb érték tárolására használt kulcsot és értéket. És a tárgyak a tömbben Entry
Az index a kívánt elem a tömbben úgy számítjuk ki, a hash-kulcs kód. További információ elérhető a linken keresztül elején választ.A következő egy jó kérdés, ami általában beállítva kiadása után a működését az HashMap. Ezért, egy fő korlátja - a legfontosabb az, hogy olyan legyen, hogy akkor már lehet beszerezni a szótárban jelentését. Ellenkező esetben csak arra használja nincs értelme. Ha érti, hogy a HashMap, tudja, hogy munkája nagymértékben függ kivonat, () és egyenlő () objektum kulcsokat.
Mint látható a fenti, a legfontosabb az, hogy egy jó, és ugyanaz a kivonat, újra és újra, nem számít, hogy hányszor kért. Továbbá ugyanaz a kulcs hívás esetén egyenlő () vissza kell igaz. és a különböző - hamis.
Amiből az következik, hogy a legjobb jelölt a szerepe kulcsfontosságú osztályok megváltoztathatatlan.
Treemap egy különleges fajta HashMap. A különbség az, hogy a kulcsok tárolása egy Treemap rendezett. Alapértelmezésben a „természetes válogatás”. Felülbírálása válogató ellátható egy példányt összehasonlító osztályban. összehasonlítani és módszer, amely felhasználható a sorrendet.
Felhívjuk figyelmét, hogy minden kulcsot adunk a szótárban végre kell hajtania a Összehasonlítható interfész (szükséges válogatás). Sőt, az összes kulcsot kell egymást kompatibilis: k1.compareTo (k2) ne okozzon ClassCastException bármely K1 és K2 tárolja a szótárban. Ha a felhasználó megpróbálja, hogy egy kulcsot a szótárban, amely sérti ezt a feltételt (például egy string kulcs a szótárban, ahol minden a kulcsok az Integer), tegye módszer (Object kulcs, Object érték) hívjanak ClassCastException.
A méret a lista numList átalakítás után változatlan marad. mert amint az B.Ekkelya „mögöttes ábrázolás egy tömb, amely nem teszi lehetővé az átméretezés. Calling hozzá () vagy törölni () az a lista megpróbálja módosítani a méret a tömb, és ez vezet a futásidejű hiba”. Más szóval a felsorolás csak átalakító forrás tömbben. Körülbelül JavaDoc Arrays.asList (): Visszaadja a fix méretű lista mögött a megadott tömb.
De egy ilyen művelet:
Már vissza a teljes gyűjtemény, amely mérete változtatható, hiszen már dolgozunk egy büntetlen előéletű.
Tájékoztatása Eckel, hatékonyabb felhasználása eljárásokban Collections.addAll () - ez a módszer sokkal gyorsabb:
Reader 12502/84 téma
élő most
- Vita a feladatok TÉMA: 2408
Előfizetők: 12441 "class =" js-infobox „> 192,22 - Fordítása Topeka: 84
Előfizetők: 12502 "class =" js-infobox „> 34.02 - News of Topeka: 199
Előfizetők: 12330 "class =" js-infobox „> 31.86 - IntelliJ Idea Topeka: 23
Előfizetők: 12485 "class =" js-infobox „> 21.62 - Vita téma előadások: 41
Előfizetők: 12478 "class =" js-infobox „> 20,36 - A tervezési minták Topeka: 2
Az előfizetők 26 "class =" js-infobox „> 11.48 - Govnokod Topeka: 22
Az előfizetők 70 "class =" js-infobox „> 5,66 - Cikkek TÉMA: 75
Előfizetők: 12483 "class =" js-infobox „> 5,66 - Vizsgálati elemei Topeka 6
Az előfizetők 13 "class =" js-infobox „> 4,08 - Arbor Topeka: 110
Előfizetők: 125 "class =" js-infobox „> 3,41