Gdybyś projektował GC, jakie podejścia do zbierania śmieci znasz oprócz przechodzenia grafu osiągalności?
Java
Czym jest deadlock? Czym różni się od warunku wyścigu? Jak unikać deadlocka, nawet jeśli nie można wcześniej określić kolejności przejęcia blokad?
Zaimplementuj RecommenderService z metodami getTop(User user, int limit) i addDocument(Document document), korzystając z pamięci operacyjnej
Ile waży wskaźnik? Co to jest?
Do czego służy stos i do czego służy sterta? Jaka jest różnica?
Dlaczego test kończył się NullPointerException i jak to naprawić?
Czym jest heap (stos)?
Jak w Javie odbywa się usuwanie obiektów z heap? Opowiedz o Garbage Collector.
Porównaj wydajność następujących fragmentów kodu, które kopiują elementy z tablicy Integer do tablicy int i odwrotnie, w tym przypadek, gdy tworzone są nowe obiekty Integer z wartości 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]); } } ``` Przeanalizuj i wyjaśnij różnice w wydajności i zachowaniu między tymi podejściami.
Któła zasada SOLID jest naruszona w obecnej implementacji, gdzie serwis jest mocno związany z konkretną implementacją przechowywania (ArrayList)?
Jakie metody komunikacji międzyprocesowej (IPC) znasz na poziomie interfejsów systemu operacyjnego 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]); } }
Do czego służy synchronized? Co byś użył do zaimplementowania bezpiecznego dla wątków licznika zamiast synchronized?
Jakie problemy mogą wystąpić w środowisku produkcyjnym przy wielowątkowym dostępie do usługi (kilka równoległych zapytań REST)?
Jakie są wady obecnego podejścia polegającego na sortowaniu całej listy przy każdym wywołaniu getTop?
/** * Szukanie dwóch liczb w tablicy, których suma jest równa podanej liczbie * <p> * Napisz funkcję, która jako pierwszy argument przyjmuje tablicę nieuporządkowanych liczb dodatnich * i jako drugi argument liczbę dodatnią. Funkcja powinna zwracać true, jeśli w tablicy * znajdują się 2 liczby, których suma daje drugi argument. * <p> * Input: ([10, 15, 3, 7], 17) * Output: true */
Jak primitive pojawia się na stosie, a jak na stercie?
Jak poprawnie wdrażać zależności (Dependency Injection) w serwisie — które podejście jest bardziej preferowane?
Rozszyfruj skrót ACID i wyjaśnij każdą cechę.
Czym jest wywołanie systemowe fork w systemach operacyjnych rodziny Unix?