Welke .NET-sollicitatievragen kan ik verwachten?

Door Aaron Cao · Bijgewerkt op

Welke .NET-sollicitatievragen kan ik verwachten?
Verwacht vragen over de runtime (CLR, garbagecollection, waarde- versus referentietypen), de taal (async en await, LINQ, generics, records), frameworks (ASP.NET Core-middleware en dependency injection, EF Core) en scenario's zoals een geheugenlek in een langlopende service of een traag API-endpoint. Interviewers beoordelen je redeneervermogen.

Verwacht vragen over de runtime (CLR, garbagecollection, waarde- versus referentietypen), de taal (async en await, LINQ, generics, records), frameworks (ASP.NET Core-middleware en dependency injection, EF Core) en scenario's zoals een geheugenlek in een langlopende service of een traag API-endpoint. Interviewers beoordelen je redeneervermogen.

Welke runtime- en taalvragen openen een .NET-sollicitatiegesprek?

Interviewers beginnen waar het framework begint: de runtime. Verwacht dat je uitlegt wat de Common Language Runtime doet (assemblies laden, intermediate language just-in-time compileren, geheugen beheren) en vervolgens dieper ingaat op garbagecollection. De reeks vervolgvragen is voorspelbaar: waarom de collector generaties gebruikt, waardoor een object een latere generatie bereikt, waarvoor de large object heap dient en waarom IDisposable en using überhaupt bestaan als het geheugen wordt beheerd. Beantwoord die laatste vraag met onbeheerde resources, zoals bestandshandles en verbindingen, die de collector niet tijdig weet vrij te geven.

  • Waardetypen en referentietypen. Waar elk type zich bevindt, wat kopiëren voor elk type betekent en wat boxing kost.
  • async en await. Leg uit dat een taak waarop wordt gewacht de aanroepende thread vrijmaakt in plaats van deze te blokkeren, waarom async void voor eventhandlers is gereserveerd en welke deadlock men bedoelt bij waarschuwingen over .Result.
  • LINQ. Uitgestelde uitvoering is de valkuil: een IEnumerable-query wordt uitgevoerd wanneer deze wordt doorlopen, niet wanneer deze wordt geschreven, en een query bij een databaseprovider wordt alleen naar SQL vertaald voor expressies die de provider begrijpt.
  • Generics, interfaces en records. Constraints, waarom interfaces boven basisklassen de testbaarheid bevorderen en wat de waardegelijkheid van een record oplevert.

Beantwoord elke vraag met het mechanisme en één gevolg. Uitleggen dat een collection van generatie nul goedkoop is omdat de meeste objecten jong sterven, is het niveau dat interviewers zoeken; alleen de generaties benoemen zonder de reden is onvoldoende.

Hoe zien vragen over ASP.NET Core en EF Core eruit?

Je schrijft vol vertrouwen controllers, maar vreest dat de vragen gaan over het loodgieterswerk dat je zelden aanraakt. Die zorg is terecht, want daar bevinden zich de frameworkvragen. Daarom volgt hier dat loodgieterswerk in de volgorde waarin er doorgaans naar wordt gevraagd, inclusief de bijbehorende vervolgvraag.

  • De requestpipeline. Middleware wordt uitgevoerd in de volgorde waarin deze is geregistreerd, waarbij elk component bepaalt of het de volgende aanroept. Vervolgvraag: waar staat authenticatie ten opzichte van autorisatie en wat gebeurt er als je ze in omgekeerde volgorde registreert?
  • De lifetimes van dependency injection. Singleton blijft gedurende de hele applicatie bestaan, scoped gedurende één request en transient wordt telkens aangemaakt wanneer deze wordt opgehaald. De klassieke valkuil is het injecteren van een scoped service, zoals een databasecontext, in een singleton; wees bereid uit te leggen waarom dat een bug is.
  • Configuratie en options. Gelaagde bronnen, overschrijvingen per omgeving en het options-pattern voor getypeerde instellingen.
  • EF Core. Change tracking en wanneer je dit uitschakelt voor alleen-lezenquery's, het N+1-probleem en hoe eager loading of projectie dit voorkomt, migraties en het eerlijke omslagpunt waarop een handgeschreven query beter is dan LINQ.
  • Testen. Hoe interfaces en de DI-container een service testbaar maken en wat een in-memoryprovider wel en niet bewijst over een echte database.

De sterkste kandidaten leggen verbanden: een scoped context die binnen een singleton-backgroundservice wordt opgehaald, is geen triviale kennisvraag, maar een geheugen- en correctheidsbug die interviewers daadwerkelijk in productie hebben gebracht. Ze willen horen dat je expliciet een scope zou aanmaken.

Hoe verlopen de scenariovragen?

In sollicitatierondes voor seniorfuncties krijg je een symptoom voorgelegd en wordt je aanpak geobserveerd. Een representatief voorbeeld: een backend-engineer die bij een logistiek bedrijf solliciteert naar een seniorfunctie hoort dat het geheugengebruik van een ASP.NET Core-API dagenlang stijgt totdat de container opnieuw wordt gestart. Een sterk antwoord begint niet met gissen. Je vraagt wat er is gewijzigd, controleert op objecten die door statische caches of langlopende eventabonnementen worden vastgehouden, zoekt naar scoped services die door singletons worden vastgehouden, onderzoekt de groei van de large object heap en maakt een geheugensnapshot voordat je een oplossing voorstelt. De interviewer beoordeelt de volgorde van je onderzoek.

Andere terugkerende scenario's: een endpoint dat alleen onder belasting traag is, waarbij het antwoord van synchrone databaseaanroepen naar async, uitputting van de connectionpool en caching gaat; een racecondition in een gedeelde collectie en wat concurrent collections en vergrendelingsopties kosten; een request dat drie downstreamservices moet aanroepen en hoe je omgaat met time-outs, nieuwe pogingen en gedeeltelijke uitval; en een migratie die zonder downtime een kolom moet toevoegen. Benoem in elk geval de beperking, kies een mechanisme en spreek de afweging hardop uit.

Dit wordt veel eenvoudiger wanneer je de scenario's hardop met vervolgvragen hebt geoefend. Daarvoor is de modus proefsollicitatiegesprek ontwikkeld; de andere verzamelingen per taal en functie vind je onder sollicitatievragen per functie en onderwerp.

Kan een AI-sollicitatieassistent helpen met .NET-vragen?

Tijdens gespreksrondes wel, binnen de aangegeven grenzen. De native desktopapp van SubcueAI voor macOS en Windows neemt het systeemaudio en je microfoon op en toont korte antwoordsuggesties in een lokale overlay. Wanneer de interviewer dus vraagt waarom een scoped context binnen een singleton een bug is, staat het mechanisme op je scherm terwijl je het in je eigen woorden uitlegt. De browserextensie ondersteunt gesprekken in browsertabbladen via Chrome en Edge door uitsluitend het geluid van het vergadertabblad op te nemen. Er neemt geen bot deel aan het gesprek en er wordt niets in de vergaderpagina geïnjecteerd; de installatie staat op de pagina handleiding.

De beperkingen: een toets met toezicht, een schermopname, een door het bedrijf beheerde laptop of een live programmeeroefening waarbij je onder toezicht C# typt, vallen buiten het toepassingsgebied. De assistent is juist het zwakst wanneer je tijdens het sollicitatiegesprek code moet schrijven. Hij is het sterkst bij de bovenstaande vragen over de runtime, frameworks en afwegingen. Voer eerst je cv in, zodat de suggesties aansluiten op de systemen die je daadwerkelijk hebt gebouwd; dat profiel staat in de cv-builder.

FAQ

Waarom heeft de garbagecollector van .NET generaties?

De meeste objecten sterven jong. Door de nieuwste generatie vaak en goedkoop te verzamelen, wordt daarom het meeste geheugen vrijgemaakt zonder de volledige heap te scannen. Objecten die overleven, worden gepromoveerd en minder vaak verzameld, waardoor pauzes bij gebruikelijke allocatiepatronen kort blijven.

Wat is in ASP.NET Core het verschil tussen singleton, scoped en transient?

Singleton wordt eenmaal voor de applicatie aangemaakt, scoped eenmaal per request en transient telkens wanneer deze wordt opgehaald. Als je een scoped service in een singleton injecteert, wordt deze gedurende de hele levensduur van de applicatie vastgehouden. Dat is een veelvoorkomende bug bij databasecontexten.

Wat doet await precies?

Het registreert de rest van de methode als continuation en geeft de besturing terug aan de aanroeper, zodat de thread vrij is terwijl het werk waarop wordt gewacht wordt voltooid. Blokkeren op een taak met .Result of .Wait kan daarentegen een deadlock veroorzaken in contexten die die thread weer nodig hebben.

Wat is het N+1-probleem in EF Core?

Je laadt een lijst met parentobjecten en voert vervolgens per parentobject een afzonderlijke query voor de childobjecten uit. Met eager loading via Include, of door alleen de benodigde velden te projecteren, maak je er één of twee query's van.

Kan SubcueAI helpen tijdens een .NET-programmeertoets met toezicht?

Nee. Toetsen met toezicht en opgenomen beoordelingen vallen buiten het toepassingsgebied, en live programmeren onder toezicht is je eigen werk. SubcueAI is bedoeld voor gespreksrondes; met de modus voor proefsollicitatiegesprekken kun je daarvoor oefenen.

Gerelateerde vragen

← Meer over Sollicitatievragen per functie & onderwerp