투잡뛰는 개발 노동자

[Niet-ICT'er, Ontwikkelaar worden] 14. Veelgestelde technische interviewvragen voor beginnende ontwikkelaars samengevat

Aangemaakt: 2024-04-03

Aangemaakt: 2024-04-03 20:38

Niet-ICT'er, overleven als ontwikkelaar


#14. Veelgestelde vragen over technische sollicitatiegesprekken voor beginnende ontwikkelaars


[Geheugengebieden]

  • Codegebied: Het gebied waar de broncode van het programma wordt opgeslagen. De CPU haalt instructies (broncode, functies, besturingsstructuren) op uit het codegebied en verwerkt deze. Bijvoorbeeld: wanneer een programma geschreven in C wordt uitgevoerd, wordt de broncode van dit programma opgeslagen in het codegebied.
  • Gegevensgebied: Het gebied waar globale variabelen en statische variabelen worden opgeslagen. Het wordt toegewezen bij het starten van het programma en blijft bestaan totdat het programma wordt beëindigd. Bijvoorbeeld: wanneer een programma geschreven in C wordt uitgevoerd, worden de globale variabelen of statische variabelen die in dit programma zijn gedeclareerd opgeslagen in het gegevensgebied.
  • Stackgebied: Een tijdelijk geheugengebied dat door het programma wordt gebruikt. Lokale variabelen en parameters die verband houden met functieaanroepen worden hier opgeslagen. Het wordt toegewezen bij een functieaanroep en verdwijnt wanneer de functie wordt beëindigd. Bijvoorbeeld: wanneer een functie in C wordt aangeroepen, worden de lokale variabelen of parameters die in die functie worden gebruikt toegewezen aan het stackgebied.
  • Heapgebied: Het gebied waar de gebruiker dynamisch geheugenruimte kan toewijzen en vrijgeven. Bijvoorbeeld: wanneer geheugen dynamisch wordt toegewezen met behulp van de malloc()-functie in C, wordt het toegewezen geheugengebied opgeslagen in het heapgebied.

[Gegevensstructuren]

  • Stack: Een gegevensstructuur die werkt op basis van het LIFO (Last In, First Out)-principe. Bijvoorbeeld: de 'Terug'-knop in een computer is vergelijkbaar met een stack. De eerder bezochte pagina's worden opgeslagen in de stack en wanneer op de 'Terug'-knop wordt geklikt, wordt de meest recent opgeslagen pagina opgehaald en weergegeven.
  • Queue: Een gegevensstructuur die werkt op basis van het FIFO (First In, First Out)-principe. Bijvoorbeeld: het krijgen van een wachtrijnummer in een bank en wachten in de rij is vergelijkbaar met een queue. Degene die het eerst arriveert, wordt het eerst geholpen, en degene die het laatst arriveert, wordt het laatst geholpen.
  • Tree: Een gegevensstructuur die gegevens hiërarchisch weergeeft. Bijvoorbeeld: de DOM-boom (Document Object Model) van HTML is vergelijkbaar met een boom. De structuur van een HTML-pagina wordt weergegeven als een boom, te beginnen bij de root-node, de html-tag, en vervolgens worden de onderliggende nodes in volgorde weergegeven.
  • Heap: Een van de binaire boomstructuren, die wordt onderverdeeld in max-heap en min-heap. Bijvoorbeeld: in een prioriteitswachtrij bevindt de gegevens met de hoogste prioriteit zich in de root-node van de heap, en de gegevens met de op één na hoogste prioriteit bevinden zich in de onderliggende nodes. Dit is een voorbeeld van een max-heap.

[RDBMS en NoSQL]

  • RDBMS: Een database die gegevens structureel definieert en beheert met behulp van een strikte schema. Gegevens kunnen worden gedistribueerd opgeslagen en zijn gemakkelijk te wijzigen. Bijvoorbeeld: MySQL, Oracle en MS-SQL zijn voorbeelden van RDBMS.
  • NoSQL: Een database die gegevens opslaat en beheert met behulp van een flexibel schema. Geschikt voor het verwerken en opslaan van grote hoeveelheden gegevens en heeft ook een hoge schaalbaarheid. Bijvoorbeeld: MongoDB, Cassandra en HBase zijn voorbeelden van NoSQL.

[Procedureel en objectgeoriënteerd]

  • Procedurele programmering: Een programmeertechniek waarbij sequentiële verwerking centraal staat. Talen zoals C en Pascal zijn procedurele talen.
  • Objectgeoriënteerde programmering: Een methode waarbij gegevens en procedures logisch worden gebundeld in het concept van een object (Object). Java, C++ en Python zijn objectgeoriënteerde talen. Bijvoorbeeld: in een autosimulatieprogramma kan een auto worden weergegeven als een object, waarbij de eigenschappen van de auto (kleur, versnelling, etc.) worden weergegeven als gegevens en de functies die de auto uitvoert (rijden, stoppen, etc.) worden weergegeven als methoden.

[Overriding en Overloading]

  • Overriding: Het opnieuw definiëren en gebruiken van een methode die een ouderklasse bezit in een kindklasse. Wanneer een methode van een ouderklasse wordt aangeroepen vanuit een kindklasse, wordt de in de kindklasse opnieuw gedefinieerde methode uitgevoerd in plaats van de methode van de ouderklasse. Bijvoorbeeld: de toString()-methode in Java is een voorbeeld van Overriding.
  • Overloading: Het definiëren van meerdere methoden met dezelfde naam, maar met verschillende parametertypen en -aantallen, om te reageren op verschillende typen aanroepen. Verschillende methoden met dezelfde naam maar verschillende parameters worden uitgevoerd. Bijvoorbeeld: de print()-methode in Java is een voorbeeld van Overloading.

[Paginavervangingsalgoritme]

  • FIFO: Vervangt de pagina die het langst in het fysieke geheugen aanwezig is. Het 'sluiten' van een taak in de taakbalk van een computer is vergelijkbaar met het FIFO-algoritme. De eerste gestarte applicatie wordt als laatste weergegeven en gesloten, net als de FIFO.
  • LRU: Vervangt de pagina die het langst niet is gebruikt. Een 'app-sluiter' die oude apps die niet vaak worden gebruikt sluit, is vergelijkbaar met het LRU-algoritme.
  • LFU: Vervangt de pagina met het kleinste aantal referentieaanroepen. Bijvoorbeeld: de functie 'tabblad sluiten' die het minst gebruikte tabblad sluit van de nieuw geopende tabbladen in een browser, is vergelijkbaar met het LFU-algoritme.
  • MFU: Vervangt de pagina met het grootste aantal referentieaanroepen. Het MFU-algoritme wordt niet vaak gebruikt.

[Proces en Thread]

  • Proces: Een uitvoeringseenheid die door het besturingssysteem wordt toegewezen en een programma vertegenwoordigt. Wanneer meerdere processen tegelijkertijd worden uitgevoerd, krijgt elk proces een onafhankelijk geheugengebied en CPU toegewezen.
  • Thread: Een uitvoeringseenheid binnen een proces die de middelen die aan het proces zijn toegewezen deelt en wordt uitgevoerd. Bijvoorbeeld: elk tabblad in een webbrowser werkt als een thread, niet als een proces.

[OSI 7-lagenmodel]

  • Application layer: De laag die de gebruiker verbindt met het netwerk. Protocollen zoals HTTP, FTP en SMTP behoren tot deze laag.
  • Presentation layer: De laag die de manier waarop gegevens worden weergegeven definieert. Protocollen zoals JPEG, MPEG en SSL behoren tot deze laag.
  • Session layer: De laag die sessies beheert tussen twee communicerende systemen.
  • Transport layer: De laag die verantwoordelijk is voor het verzenden van gegevens. Protocollen zoals TCP en UDP behoren tot deze laag.
  • Network layer: De laag die de route bepaalt voor het verzenden van gegevens. Protocollen zoals IP en ICMP behoren tot deze laag.
  • DataLink layer: De laag die gegevens verzendt op basis van het fysieke adres (MAC-adres). Protocollen zoals Ethernet en Token Ring behoren tot deze laag.
  • Physical layer: De laag die verantwoordelijk is voor de fysieke verbinding en communicatie via het transmissiemedium.

[TCP en UDP]

  • TCP: Een connection-oriented service die gegevens op een betrouwbare manier verzendt. Met behulp van 3-way handshaking en 4-way handshaking wordt een verbinding tot stand gebracht of verbroken. Bijvoorbeeld: bij het inloggen op een website of het verzenden van bestanden wordt TCP gebruikt.
  • UDP: Een connectionless service die geen signaalprocedure nodig heeft voor het verzenden van gegevens. De betrouwbaarheid van de gegevens is laag, maar de verwerkingssnelheid is hoog. Bijvoorbeeld: bij het streamen van video's of online gamen, waar snelle verzending belangrijk is, wordt UDP gebruikt.

Reacties0