Wat is een deadlock? Hoe verschilt het van een raceconditie? Hoe kun je een deadlock voorkomen, zelfs als het niet mogelijk is om de volgorde van het verkrijgen van locks van tevoren te bepalen?
Java
Als je een GC zou ontwerpen, welke benaderingen van garbage collection ken je naast het doorlopen van de bereikbaarheidsgrafiek?
Implementeer RecommenderService met de methoden getTop(User user, int limit) en addDocument(Document document), gebruikmakend van in-memory opslag
Hoeveel weegt een pointer? Wat is dat?
Waarvoor dient de stack en waarvoor dient de heap? Wat is het verschil?
Waarom viel de test uit met een NullPointerException en hoe los je dat op?
Wat is een heap?
Hoe worden objecten uit de heap verwijderd in Java? Vertel over de Garbage Collector.
Vergelijk de prestaties van de volgende codefragmenten die elementen kopiëren van een Integer-array naar een int-array en vice versa, inclusief het geval waarin nieuwe Integer-objecten worden gemaakt van int-waarden: ```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]); } } ``` Analyseer en leg uit wat de verschillen in prestaties en gedrag tussen deze benaderingen zijn.
Welk SOLID-principe wordt geschonden in de huidige implementatie, waar de service sterk gekoppeld is aan een specifieke opslagimplementatie (ArrayList)?
Welke methoden voor interprocescommunicatie (IPC) ken je op het niveau van de interfaces van het Unix-besturingssysteem?
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]); } }
Welke problemen kunnen zich voordoen in een productieomgeving bij multithread-toegang tot de service (meerdere gelijktijdige REST-verzoeken)?
Waarvoor is synchronized nodig? Wat zou je gebruiken om een thread-safe teller te implementeren in plaats van synchronized?
Hoe verschijnt een primitief in de stack en hoe in de heap?
Wat zijn de nadelen van de huidige aanpak waarbij de hele lijst wordt gesorteerd bij elke aanroep van getTop?
/** * Het zoeken van twee getallen in een array waarvan de som gelijk is aan een gegeven getal * <p> * Schrijf een functie die een array van niet-gesorteerde positieve getallen als eerste argument accepteert * en een positief getal als tweede argument. De functie moet true retourneren als in de array * er 2 getallen zijn waarvan de som gelijk is aan het tweede argument. * <p> * Input: ([10, 15, 3, 7], 17) * Output: true */
Hoe dependencies (Dependency Injection) correct te implementeren in een service — welke aanpak is het meest aanbevolen?
Ontcijfer de afkorting ACID en leg uit elke eigenschap.
Wat is de systeemoproep fork in Unix-achtige besturingssystemen?