Java Flow Control interjúkérdések (+ válaszok)

Ez a cikk egy sorozat része: • Java Collections interjúkérdések

• Java típusú rendszerinterjúkérdések

• Java egyidejű interjúkérdések (+ válaszok)

• Java osztály felépítése és inicializálása interjúkérdések

• Java 8 interjúkérdések (+ válaszok)

• Memóriakezelés Java interjúkérdésekben (+ válaszok)

• Java Generics interjúkérdések (+ válaszok)

• Java Flow Control interjúkérdések (+ válaszok) (aktuális cikk) • Java kivételek interjúkérdések (+ válaszok)

• Java Annotations Interjúkérdések (+ Válaszok)

• A tavaszi keretrendszer legfontosabb interjúi

1. Bemutatkozás

A vezérlési folyamat utasítások lehetővé teszik a fejlesztők számára a döntéshozatalt, a hurok létrehozását és az elágazást az adott kódblokkok végrehajtásának folyamatának feltételes megváltoztatásához.

Ebben a cikkben áttekintünk néhány folyamatvezérlő interjú kérdést, amelyek felmerülhetnek egy interjú során, és adott esetben; példákat valósítunk meg, hogy jobban megértsük válaszaikat.

2. Kérdések

Q1. Írja le ha akkor és ha-akkor-más nyilatkozatok. Milyen típusú kifejezések használhatók feltételként?

Mindkét állítás azt mondja programunknak, hogy csak akkor hajtsa végre a bennük lévő kódot, ha egy adott állapot ezt értékeli igaz. Azonban a ha-akkor-más utasítás egy másodlagos végrehajtási utat biztosít arra az esetre, ha az if záradék ezt értékeli hamis:

ha (életkor> = 21) {// ...} más {// ...}

Más programozási nyelvektől eltérően a Java csak támogat logikai kifejezések mint feltételek. Ha más típusú kifejezést próbálunk használni, fordítási hibát kapunk.

Q2. Írja le kapcsoló nyilatkozat. Milyen objektumtípusok használhatók a kapcsoló kikötés?

A Switch lehetővé teszi több végrehajtási útvonal kiválasztását a változók értéke alapján.

Minden utat a jelöli ügy vagy alapértelmezett, a kapcsoló nyilatkozat mindegyiket értékeli ügy kifejezés az egyezéshez, és végrehajtja az utasításokat, amelyek az egyező címkét követik a-ig szünet nyilatkozat található. Ha nem talál egyezést, akkor a alapértelmezett blokk kerül végrehajtásra:

kapcsoló (yearsOfJavaExperience) {eset 0: System.out.println ("Student"); szünet; 1. eset: System.out.println ("Junior"); szünet; 2. eset: System.out.println ("Közép"); szünet; alapértelmezett: System.out.println ("Senior"); }

Tudjuk használni byte, rövid, char, int, csomagolt verzióik, enums és Húrs mint kapcsoló értékek.

Q3. Mi történik, ha elfelejtjük betenni a szünet nyilatkozat a ügy záradék a kapcsoló?

A kapcsoló nyilatkozat esik-vályú. Ez azt jelenti, hogy folytatni fogja mindenki végrehajtását ügy címkéket, amíg nem talál a szünet utasítás, annak ellenére, hogy ezek a címkék nem egyeznek a kifejezés értékével.

Íme egy példa ennek bemutatására:

int művelet = 2; int szám = 10; kapcsoló (működés) {1. eset: szám = szám + 10; szünet; 2. eset: szám = szám - 4; 3. eset: szám = szám / 3; 4. eset: szám = szám * 10; szünet; }

A kód futtatása után szám Ez a 20 helyett a 6 értéket tartalmazza. Ez hasznos lehet olyan helyzetekben, amikor ugyanazt a műveletet több esethez szeretnénk társítani.

Q4. Mikor célszerűbb S-t használniboszorkány Egy I felettf-Akkor-egyebek Nyilatkozat és fordítva?

A kapcsoló utasítás jobban alkalmazható, ha egyetlen változót tesztelnek sok egyedi értékkel, vagy ha több érték hajtja végre ugyanazt a kódot:

váltás (hónap) {eset 1: eset 3: eset 5: eset 7: eset 8: eset 10: eset 12: nap = 31; szünet; 2. eset: nap = 28; szünet; alapértelmezett: nap = 30; }

An ha-akkor-más Az utasítás előnyösebb, ha ellenőrizni kell az értéktartományokat vagy a több feltételt:

if (aPassword == null || aPassword.isEmpty ()) {// üres jelszó} else if (aPassword.length () <8 || aPassword.equals ("12345678")) {// gyenge jelszó} else {/ / jó jelszó}

Q5. Milyen típusú hurkokat támogat a Java?

A Java háromféle hurkot kínál: mert, míg, és csinálni, miközben.

A mert ciklus lehetőséget nyújt az értékek tartományának ismétlésére. A leghasznosabb, ha előre tudjuk, hogy egy feladatot hányszor ismételnek meg:

mert (int i = 0; i <10; i ++) {// ...}

A míg ciklus végrehajthatja az utasítások blokkját, miközben egy adott feltétel az igaz:

while (iterator.hasNext ()) {// ...}

A csinálni, miközben az a változata míg nyilatkozat, amelyben a logikai kifejezés a hurok alján található. Ez garantálja, hogy a kód legalább egyszer végrehajtásra kerül:

do {// ...} while (választás! = -1);

Q6. Mi az a továbbfejlesztve hurok?

A szintaxisa a mert utasítás, amelynek célja a gyűjtemény, tömb, enum vagy a Iterálható felület:

for (String aString: arrayOfStrings) {// ...}

Q7. Hogyan lehet kilépni egy körből?

Használni a szünet utasítással azonnal megszakíthatjuk a hurok végrehajtását:

for (int i = 0;; i ++) {if (i> 10) {törés; }}

Q8. Mi a különbség a címkézetlen és a címkézett között szünet nyilatkozat?

Egy felirat nélküli szünet utasítás a legbelsőt megszünteti kapcsoló, mert, míg vagy csinálni, miközben nyilatkozat, míg a címkézett szünet befejezi egy külső utasítás végrehajtását.

Készítsünk egy példát ennek bemutatására:

int [] [] táblázat = {{1, 2, 3}, {25, 37, 49}, {55, 68, 93}}; logikai érték = hamis; int loopCycles = 0; külső: for (int [] sorok: táblázat) {for (int sor: sorok) {loopCycles ++; ha (sor == 37) {talált = igaz; törés külső; }}}

Ha megtalálja a 37-es számot, a címkézett szünet utasítás a legkülsőt megszünteti mert ciklus, és több ciklus nem kerül végrehajtásra. Így, loopCycles 5 értékével végződik.

Azonban a felirat nélküli szünet csak a legbelső utasítással fejeződik be, a vezérlés áramlását a legkülső felé juttatja vissza mert ez folytatja a hurkot a következőig sor ban,-ben asztal változó, így a loopCycles vége 8-as értékkel.

Q9. Mi a különbség a címkézetlen és a címkézett között folytatni nyilatkozat?

Egy felirat nélküli folytatni utasítás a legbelső legutóbbi iterációjának végére ugrik mert, míg, vagy csinálni, miközben hurok, míg a címkézett folytatni a megadott címkével ellátott külső hurokhoz ugrik.

Íme egy példa, amely ezt szemlélteti:

int [] [] táblázat = {{1, 15, 3}, {25, 15, 49}, {15, 68, 93}}; int loopCycles = 0; külső: for (int [] sorok: táblázat) {for (int sor: sorok) {loopCycles ++; if (sor == 15) {folytassa a külsőt; }}}

Az érvelés megegyezik az előző kérdésével. A címkézett folytatni utasítás a legkülsőt megszünteti mert hurok.

Így, loopCycles az 5 érték megtartásával végződik, míg a címkézetlen verzió csak a legbelső utasítást fejezi be, így a loopCycles 9-es értékkel végződik.

Q10. Írja le a végrehajtási folyamatot a próbáld meg utolérni konstrukció.

Amikor egy program belépett a próbáld ki blokk, és egy kivétel dobódik benne, a próbáld ki blokk megszakad, és a vezérlés folyamata folytatódik a-val fogás blokk, amely képes kezelni a dobott kivételt.

Ha ilyen blokk nem létezik, akkor az aktuális metódus végrehajtása leáll, és a kivétel a hívásverem előző metódusához vezet. Alternatív megoldásként, ha nem történik kivétel, mindet fogás a blokkokat figyelmen kívül hagyják, és a program futtatása normálisan folytatódik.

A végül A blokk mindig végrehajtásra kerül, függetlenül attól, hogy kivételt dobtak-e a test testébe próbáld ki Blokk.

Q11. Mely helyzetekben a végül blokk nem hajtható végre?

Amikor a JVM a program végrehajtása közben megszűnik próbáld ki vagy fogás blokkolja, például hívással System.exit (), vagy amikor a végrehajtó szál megszakad vagy megszakad, akkor a végső blokk nem kerül végrehajtásra.

Q12. Mi az eredménye a következő kód futtatásának?

nyilvános statikus int hozzárendelés () {int szám = 1; próbáld ki a {szám = 3; if (true) {dobjon új Kivételt ("Teszt Kivétel"); } szám = 2; } fogás (kivétel kivétel) {visszatérési szám; } végül {szám = 4; } visszatérési szám; } System.out.println (hozzárendelés ());

A kód a 3. számot adja ki. Annak ellenére, hogy a végül blokk mindig végrehajtásra kerül, ez csak a próbáld ki blokk kijáratok.

A példában a Visszatérés utasítás végrehajtása a próbáld elkapni blokk vége. Így a hozzárendelés szám ban,-ben végül a blokknak nincs hatása, mivel a változó már visszatér az a hívó kódjáhozmegbízás módszer.

Q13. Mely helyzetekben próbálkozz végre blokk akkor is használható, ha a kivételeket nem lehet dobni?

Ez a blokk akkor hasznos, ha azt akarjuk biztosítani, hogy véletlenül ne kerüljük meg a kódban használt erőforrások megtisztítását egy szünet, folytatni vagy Visszatérés nyilatkozat:

HeavyProcess heavyProcess = új HeavyProcess (); próbáld meg a {// ... return heavyProcess.heavyTask () parancsot; } végül {heavyProcess.doCleanUp (); }

Emellett olyan helyzetekkel is szembesülhetünk, amelyekben nem tudjuk lokálisan kezelni a dobott kivételt, vagy azt akarjuk, hogy a jelenlegi módszer a kivételt még mindig dobja, miközben erőforrásokat szabadíthatunk fel:

public void doDangerousTask (Feladat feladat) dobja a ComplicatedException {try {// ... task.gatherResources (); if (task.isComplicated ()) {dobja az új ComplicatedException-t ("Túl nehéz"); } // ...} végül {task.freeResources (); }}

Q14. Hogyan működik erőforrásokkal próbálkozzon munka?

A erőforrásokkal próbálkozzon utasítás kimondja és inicializálja egy vagy több erőforrást, mielőtt a próbáld ki blokkolja és automatikusan bezárja őket az utasítás végén, függetlenül attól, hogy a blokk rendesen vagy hirtelen fejeződött-e be. Bármely objektum megvalósítása Automatikusan zárható vagy Bezárható az interfészek erőforrásként használhatók:

try (StringWriter író = új StringWriter ()) {író.írja ("Hello világ!"); }

3. Következtetés

Ebben a cikkben a Java-fejlesztők számára készített technikai interjúkban megjelenő, a vezérlési folyamat utasításokkal kapcsolatos leggyakrabban feltett kérdéseket ismertettük. Ezt csak a további kutatások kezdeteként kell kezelni, és nem mint kimerítő felsorolást.

Sok sikert az interjúban.

Következő » Java kivételek interjúkérdések (+ válaszok) « Korábbi Java Generics interjúkérdések (+ válaszok)