Wenn du einen GC entwerfen würdest, welche Ansätze der Garbage Collection kennst du neben der Durchlauf des Erreichbarkeitsgraphen?
Java
Was ist ein Deadlock? Worin besteht der Unterschied zu einem Race Condition? Wie kann man Deadlocks vermeiden, auch wenn es unmöglich ist, die Reihenfolge der Sperrung im Voraus zu bestimmen?
Implementieren Sie RecommenderService mit den Methoden getTop(User user, int limit) und addDocument(Document document), unter Verwendung eines In-Memory-Speichers
Wie viel wiegt ein Zeiger? Was ist das?
Wozu dient der Stack und wozu der Heap? Was ist der Unterschied?
Warum ist der Test mit einer NullPointerException fehlgeschlagen und wie kann man das beheben?
Was ist ein Heap (Haufen)?
Wie werden Objekte im Heap in Java gelöscht? Erzählen Sie vom Garbage Collector.
Vergleichen Sie die Leistung der folgenden Codeausschnitte, die Elemente von einem Integer-Array in ein int-Array und umgekehrt kopieren, einschließlich des Falls, in dem neue Integer-Objekte aus int-Werten erstellt werden: ```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]); } } ``` Analysieren und erklären Sie die Unterschiede in Leistung und Verhalten zwischen diesen Ansätzen.
Welches SOLID-Prinzip wird in der aktuellen Implementierung verletzt, bei der der Service stark an eine konkrete Speicherimplementierung (ArrayList) gebunden ist?
Welche Methoden der Interprozesskommunikation (IPC) kennen Sie auf der Ebene der Schnittstellen des Unix-Betriebssystems?
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]); } }
Welches Problem kann in einer Produktionsumgebung bei gleichzeitiger Zugriff auf den Service durch mehrere REST-Anfragen auftreten?
Wozu ist synchronized notwendig? Was würdest du verwenden, um einen thread-sicheren Zähler anstelle von synchronized zu implementieren?
Wie erscheint ein Primitive im Stack und wie im Heap?
Was sind die Nachteile des aktuellen Ansatzes, bei dem die gesamte Liste bei jedem Aufruf von getTop sortiert wird?
/** * Suche zwei Zahlen in einem Array, deren Summe einer vorgegebenen Zahl entspricht * <p> * Schreibe eine Funktion, die ein Array aus unordentlichen positiven Zahlen als erstes Argument annimmt * und eine positive Zahl als zweites Argument. Die Funktion soll true zurückgeben, wenn im Array * 2 Zahlen sind, deren Summe das zweite Argument ergibt. * <p> * Eingabe: ([10, 15, 3, 7], 17) * Ausgabe: true */
Wie man Abhängigkeiten (Dependency Injection) in einem Service richtig implementiert — welcher Ansatz ist vorzuziehen?
Entschlüsseln Sie die Abkürzung ACID und erklären Sie jede Eigenschaft.
Was ist der Systemaufruf fork in Betriebssystemen der Unix-Familie?