Kérdések az interjút
Az egyik legnépszerűbb kérdések az interjú a java-fejlesztő egy kérés, hogy kapcsolja a tömbben. Ez nagyon hasonlít arra a kérdésre, az utolsó cikket, a fordulópont sor. de egy kicsit másról. A kérdés nem tűnik bonyolult, csak annyit kell tennie, hogy hozzon létre egy új tömb azonos méretű, menjen át az eredeti tömb végétől a hit egy új tölteléket. Minden készen áll. De nem, mi is létrehozott egy további sor azonos méretű, mint az eredeti, ami megnehezíti a döntést O (n). Nem tudjuk használni a megoldás, ha a tömb mérete nagyon nagy (például 10 millió példány), és a kis méret kupac. Mit tehetünk itt? Hogyan lehet javítani a döntést? Tudunk adja át egy tömb létrehozása nélkül további puffert? Mert mi a probléma, azt feltételezzük, hogy van egy sor egész (általában egy interjú egy jó gyakorlat, hogy kérje a megfelelő kérdéseket a megfelelő helyeken, mint mondják az emberek az tudja egy vonása jó programozó). A kulcs itt észre, hogy be kell kapcsolnia az eredeti tömb, nem tudjuk használni más tömb, de használható egy vagy két további változót, ez nagyon is lehetséges. Az is elfogadhatatlan, hogy harmadik féltől származó könyvtárak vagy Java API, amely képes ezt a munkát nekünk, valamint java.util.Arrays osztály módszerek. kivéve Arrays.toString () megjelenítéséhez tömbök. Amikor a követelmények egyértelművé kezd, hogy megoldja a problémát.
Az első dolog, ami eszembe jut, hogy végighaladni az összes elemet a tömb és cserélni őket. Az első elem és az utolsó, a második elem az utolsó előtti, stb Ebben az esetben minden tömbelem lesz kapcsolva át anélkül, hogy járulékos pufferrel. A legfontosabb dolog az, hogy meg kell szem előtt tartani, ez az, amit meg kell átrendezni az elemeket, amíg elérjük a közepén a tömb, különben mi lesz az azonos tömböt. Felmerül a kérdés, mi van, ha a tömbnek páros számú elemet? Ebben az esetben, a közepén a tömb lesz a két elem, és meg kell cserélni őket, így a válogatás feltétele tartalmazni fog egy kifejezést index <= middle а не index Ahogy a mondás tartja, jobb, hogy egyszer, mint elolvasni 100-szor.
Az alábbiakban egy példát a program, amely megfordítja a tömb egy menetben, csak egy jó ötlet, hogy nézd meg a unit tesztek erre alábbi kódot a jobb megértést.
Az alábbiakban az én sor JUnit tesztek a fordított (int [] input) módszer. A vizsgálatokat ki kell terjednie az esetekben, amikor egy üres tömböt, ha a tömb helyett null. tömb tartalmaz egy elemet, a tömbnek páros és páratlan számú elemet.
Míg az összes. Folytatni kell.