Skip to content

Commit

Permalink
Add exercie descriptions to the main README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
lamfalusy committed Nov 3, 2020
1 parent 4bab718 commit f283587
Showing 1 changed file with 86 additions and 5 deletions.
91 changes: 86 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,14 @@ Mi a különbség Java-ban a Class, Abstract Class és az Interface között? Eg

## Harmadik hét

### UML modelling
1. Modellezd le a Neptun tárgyfelvételéhez szükséges objektumokat (tárgy, hallgató, oktató) UML diagram segítségével.
2. Implementáld a létrehozott diagramot egy tetszőleges nyelven.
### Neptun tantárgyfelvétel modellezése UML-ben
Modellezd le a Neptun rendszer tárgyfelvételéhez szükséges objektumokat UML diagramm segítségével.

### Neptun tantárgyfelvétel UML diagram implementálása
Implementáld le az előző feladatban létrehozott diagrammot egy tetszőleges nyelven.

### OO modellezés
Írj egy 1 oldalas esszét arról, hogy OO modellezés során milyen elveket tudsz követni (pl.: SOLID, KISS, DRY, YAGNI).

## Negyedik hét

Expand Down Expand Up @@ -82,6 +87,15 @@ Implementálj egy Java osztályt, amely képes egy előre definiált n darab Int
* Egy tetszőleges Integer értékről tudja eldönteni, hogy már tároljuk-e (ehhez egy bináris keresőt implementálj)
* A tárolt elemeket az osztályunk be tudja rendezni és a rendezett (pl növekvő sorrend) struktúrával vissza tud térni (ehhez egy buborék rendezőt implementálj)

### Saját HashMap implementáció

Írj egy saját java.util.Map implementációt, mely nem használja a Java Collection API-t.
Az implementáció meg kell feleljen az összes megadott unit tesztnek, nem kell tudjon kezelni null értékű kulcsokat és a “keySet”, “values”, “entrySet” metódusok nem kell támogassák az elem törlést.

Plusz feladatok:
* az implementáció támogat null kulcsokat,
* a “keySet”, “values”, “entrySet” metódusok támogatják az elem törlést.

## Ötödik hét


Expand Down Expand Up @@ -127,6 +141,13 @@ Változtasd meg a ```String third = "...";``` sort úgy, hogy a firstMatchesSeco
firstMatchesSecondWithEqualToOperator, firstMatchesThirdWithEquals értéke true,
a firstMatchesThirdWithEqualToOperator értéke pedig false legyen. Magyarázd meg, mi történik a háttérben.

### Java GC
Mutasd be nagy vonalakban hogyan működik Java-ban a GC (Garbage Collector). Lehetséges az OutOfMemoryError kezelése, ha igen milyen esetekben?

Források:
* https://medium.com/@hasithalgamge/seven-types-of-java-garbage-collectors-6297a1418e82
* https://stackoverflow.com/questions/2679330/catching-java-lang-outofmemoryerror

## Hatodik hét

### Mátrix szorzás Stream API-val
Expand Down Expand Up @@ -210,7 +231,7 @@ Meghívódik e minden esetben a finally ág? Válaszát indokolja!
### Reactive

Számoljuk ki az első 10 nem negatív egész szám összegét és áltagát.

1. Tegyük mindezt reaktív módon.
2. A számok előállítását végző komponensre "figyelhessenek" a különböző
statisztikákat számító komponensek, az egyes számítások pedig
Expand All @@ -233,4 +254,64 @@ Számoljuk ki az első 10 nem negatív egész szám összegét és áltagát.
8. A megoldásunk legyen nyitott a bővítésre de zárt a módosításra.
Legyen lehetőség új statisztikák bevezetésére úgy, hogy a meglévő
osztályokat nem módosítjuk illetve szükség esetén tudjunk hasonlóképpen
új komponenseket létrehozni a számok előállítására is.
új komponenseket létrehozni a számok előállítására is.

### Back To The Future

Adott az alábbi kódrészlet:
```
public class FutureChainingExercise {
private static ExecutorService executorService = Executors.newFixedThreadPool(2);
public static void main(String[] args) {
CompletableFuture<String> longTask = CompletableFuture.supplyAsync(() -> {
sleep(1000);
return "Hello";
}, executorService);
CompletableFuture<String> shortTask = CompletableFuture.supplyAsync(() -> {
sleep(500);
return "Hi";
}, executorService);
CompletableFuture<String> mediumTask = CompletableFuture.supplyAsync(() -> {
sleep(750);
return "Hey";
}, executorService);
CompletableFuture<String> result = longTask.applyToEitherAsync(shortTask, String::toUpperCase, executorService);
result = result.thenApply(s -> s + " World");
CompletableFuture<Void> extraLongTask = CompletableFuture.supplyAsync(() -> {
sleep(1500);
return null;
}, executorService);
result = result.thenCombineAsync(mediumTask, (s1, s2) -> s2 + ", " + s1, executorService);
System.out.println(result.getNow("Bye"));
sleep(1500);
System.out.println(result.getNow("Bye"));
result.runAfterBothAsync(extraLongTask, () -> System.out.println("After both!"), executorService);
result.whenCompleteAsync((s, throwable) -> System.out.println("Complete: " + s), executorService);
executorService.shutdown();
}
/**
*
* @param sleeptime sleep time in milliseconds
*/
private static void sleep(int sleeptime) {...}
}
```
Mi lesz kiíratva a standard kimenetre és miért?

### AOP
Készíts két példa projektet, melyben egyes metódusok futási idejét méred majd kiíratod úgy, hogy a metódus futási idejének méréséhez AOP-t használsz. Az első projektben csak az AspectJ könyvtárat, a második esetében pedig Spring AOP-t használj.

0 comments on commit f283587

Please sign in to comment.