Pokud byste navrhovali GC, jaké přístupy ke sběru odpadu znáte kromě průchodu grafem dosažitelnosti?
Java
Co je to deadlock? V čem se liší od race condition? Jak se vyhnout deadlocku, i když není možné předem určit pořadí získávání zámků?
Implementujte RecommenderService s metodami getTop(User user, int limit) a addDocument(Document document), využívající in-memory úložiště
Kolik váží ukazatel? Co to je?
Na co je potřeba zásobník a na co je potřeba halda? Čím se liší?
Proč test selhal s NullPointerException a jak to opravit?
Co je to halda (heap)?
Jak v Javě dochází k odstranění objektů z heapu? Povídej o Garbage Collector.
Porovnejte výkon následujících fragmentů kódu, které kopírují prvky z pole Integer do pole int a naopak, včetně případu, kdy jsou vytvářeny nové objekty Integer z hodnot int: ```java int SIZE = 1000000; int[] x = new int[SIZE]; Integer[] y = new Integer[SIZE]; for (;;) { for (int i = 0; i < SIZE; ++i) { x[i] = y[i]; } } ``` ```java int SIZE = 1000000; int[] x = new int[SIZE]; Integer[] y = new Integer[SIZE]; for (;;) { for (int i = 0; i < SIZE; ++i) { y[i] = x[i]; } } ``` ```java int SIZE = 1000000; int[] x = new int[SIZE]; Integer[] y = new Integer[SIZE]; for (;;) { for (int i = 0; i < SIZE; ++i) { y[i] = new Integer(x[i]); } } ``` Analyzujte a vysvětlete rozdíly ve výkonu a chování mezi těmito přístupy.
Které princip SOLID je porušen v aktuální implementaci, kde je služba pevně svázána s konkrétní implementací úložiště (ArrayList)?
Jaké způsoby komunikace mezi procesy (IPC) znáte na úrovni rozhraní operačního systému Unix?
int SIZE = 1000000; int[] x = new int[SIZE]; Integer[] y = new Integer[SIZE]; for (;;) { for (int i = 0; i < SIZE; ++i) { y[i] = new Integer(x[i]); } }
Jaký problém může nastat v produkčním prostředí při vícenásobném paralelním přístupu ke službě?
Jak se primitiv objeví ve zásobníku a jak v haldě?
Na co je potřeba synchronized? Co bys použil místo synchronized pro implementaci vlákno-bezpečného čítače?
/** * Vyhledání dvou čísel v poli, jejichž součet je roven zadanému číslu * <p> * Napište funkci, která přijímá jako první argument pole nesetříděných kladných čísel * a jako druhý argument kladné číslo. Funkce by měla vracet true, pokud v poli * jsou 2 čísla, jejichž součet dává druhý argument. * <p> * Vstup: ([10, 15, 3, 7], 17) * Výstup: true */
Jaké jsou nevýhody současného přístupu, kdy se při každém volání getTop seřadí celý seznam?
Rozluštěte zkratku ACID a vysvětlete každou vlastnost.
Co je to systémový volání fork v operačních systémech rodiny Unix?
Jak správně implementovat závislosti (Dependency Injection) ve službě — jaký přístup je preferovanější?