Szegedi EPAM céghez mennyire nehéz bekerülni?
Üdv! 1 éve végeztem el egy egy éves java fejlesztői tanfolyamot.Manapság hackerrankon gyakorlok, változó sikerekkel. Ebben java8-at, htmlt, javaFxet, Tomcatet, XAMPPot, CSSt, és MySQLt tanultunk. A java objektumok használata megy, illetve tudom a OO alapelveket is. Az összes hívható metódust az objektumokra nem tudom még fejből. Az egyszerűbb feladatok szintén mennek, például listából/tömbből akármelyik két szám közötti legkisebb különbség visszaadása. Az összetettebbeket már kevésbé. Ilyen például az alábbi feladat, ami számomra nehezen lekódolható - így csak nagyjából sikerült logikailag megvalósítanom állásinterjún is:
Adott 1 Integer lista/tömb, ki kell keresni a 2 legkisebb számot belőle. Ezeket összeadni, az értéküket kimenteni 1 változóba, majd az összegüket a lista legvégére tenni. Mindezt addig csinálni, amíg egyetlen elemből nem fog állni a lista, és a kapott értékeket egymáshoz hozzáadni. Számomra ebben az a nehézkes, hogy egy hosszabb kódnál hova tegyem az új lépéseket - más szóval, hogy jó helyre tegyem a scopeokat. "Ez a for ciklus vagy új változó logikailag hova kerüljön, ha xy-t akarom megvalósítani?"
Pl.
a = {2,4,5};
int számláló = 0;
ebből adódóan:
a = {5,6};
int számláló = 6;
...
a = {11};
int számláló = 17;
A kérdésem az lenne, hogy mennyire kellene még elmélyítsem a tudásom? Nemrég beküldtem az általuk adott online teszt megoldását, de még 5 napra rá sem kaptam választ, így kezdem úgy érezni, hogy nem feleltem meg. A válaszokat előre is köszi.
#13
Elküldtem üzenetben.
Sziasztok!
Én is most tanulom a Java-t és ráakadtam erre a feladatra. A kérdésem az lenne, hogy meg lehet ezt rövidebben oldani? (a debug jellegű kiíratásokat nyilván ki lehetne belőle venni és a formázást is lehetne rövidíteni)
List<Integer> numsList = new ArrayList<>();
numsList.add(5);
numsList.add(6);
numsList.add(15);
numsList.add(2);
numsList.add(3);
numsList.add(22);
numsList.add(1);
numsList.add(33);
System.out.println(numsList);
System.out.println();
while (1 < numsList.size()) {
int a = numsList.getFirst();
int b;
int c;
for (int i = 0; i < numsList.size(); i++) {
if (numsList.get(i) < a)
a = numsList.get(i);
}
System.out.println("a: " + a + " (i: " + numsList.indexOf(a) + ")");
numsList.remove(numsList.indexOf(a));
b = numsList.get(0);
for (int i = 0; i < numsList.size(); i++) {
if (numsList.get(i) < b)
b = numsList.get(i);
}
System.out.println("b: " + b + " (i: " + numsList.indexOf(b) + ")");
numsList.remove(numsList.indexOf(b));
c = a + b;
System.out.println("c: " + c);
numsList.add(c);
System.out.println(numsList);
System.out.println();
}
}
}
Új listába is lehetne tenni az "a"-t, kétszer futtatva a legkisebb szám keresést, és akkor a lista első két elemének összege lenne a "c", amit az eredeti listához adunk. Ezután az "új" listánkból ciklusonként lehetne törölni az elemeket és elölről kezdődne minden, ahogy a fenti megoldásban is van.
Megoldásom listával. Van ennél rövidebb implementáció?
List<Integer> numsList = new ArrayList<>();
numsList.add(5);
numsList.add(6);
numsList.add(15);
numsList.add(2);
numsList.add(3);
numsList.add(22);
numsList.add(1);
numsList.add(33);
System.out.println(numsList + "\n");
while (1 < numsList.size()) {
List<Integer> x1AndX2Nums = new ArrayList<>();
for (int j = 0; j < 2; j++) {
int x = numsList.getFirst();
for (int i = 0; i < numsList.size(); i++) {
if (numsList.get(i) < x)
x = numsList.get(i);
}
System.out.println("x" + (j + 1) + ": " + x + " (index: " + numsList.indexOf(x) + ")");
numsList.remove(numsList.indexOf(x));
x1AndX2Nums.add(x);
}
int y = x1AndX2Nums.get(0) + x1AndX2Nums.get(1);
System.out.println("y: " + y);
numsList.add(y);
System.out.println(numsList + "\n");
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!