MS certificering: 70-483, deel 13

Ingediend door Dirk Hornstra op 26-jul-2018 22:26

De studie, ik zag dat mijn vorige post gedateerd was op 14 mei, we zijn nu een maand verder. In de tussentijd weinig aan gedaan, zoals je in deze post kon lezen wilde ik "even snel" de Polar API behandelen, maar dat viel behoorlijk tegen. Goed, een nieuwe post, want dat is een mooie "stok achter de deur" om in actie te komen. 

Laat ik dan ook de volgende stok-achter-de-deur klaar zetten, laat ik een examen inplannen. Mocht je deze ook willen doen, hier is de rechtstreekse link. Helaas zit Pearson niet meer in Meppel, dat was een mooi locatie. Ditmaal mag ik nogmaals naar Groningen, naar het Helperpark, Mediacentrale op de 7e verdieping. Daar heb ik al eerder examens gedaan. Vandaag is het 14 juni, examen is op 20 juli. Bij de aankoop kun je trouwens een 30-daagse online toegang tot MeasureUp voor het doorlopen van proefexamens erbij kopen. Hoppa, ook erbij. Let's do it! ( Tip, mocht je dit examen gaan volgen, koop die proefexamens er NIET bij. Hieronder lees je waarom niet ).

Hoewel ik verwacht niet te slagen (meestal ben ik optimistisch, maar in dit geval realistisch) in mijn agenda gepland dat ik elke werkdag (behalve als ik weg ben naar de Ziggo Dome of Concert at Sea) een uurtje aan de slag ga. Hieronder een tijdschema;

Maandag 18 juni 2018
De aftrap. Laat ik beginnen met een proefexamen van Measure-Up om te zien waar ik sta. Eerst een account aanmaken op marketplace.measureup.com. Vervolgens het gemailde serienummer registreren. Daarna doorklikken op de Measure-Up-tests, Microsoft en daarna naar de 483. Je kunt kiezen voor certification of practise, we gaan nu (nog) voor practise. Bij de test-opties de tijd ingesteld op 60 minuten en het "randomizeren" van de vragen. In het vervolgscherm aangegeven dat het juiste antwoord getoond moet worden als ik een fout antwoord invoer. Als ik naar het beginscherm ga, zie ik dat ik maar 5 vragen krijg. Hmmm, erg weinig. 

De eerste vraag gaat over een aantal enums, Unknown,  Member, Staff, Other en hoe deze met bepaalde waardes ingesteld kunnen worden via een case/switch-statement. Makkie.

Tweede vraag is over een lange functie die uitgevoerd wordt voor een aantal employees. Welke functie voldoet hier aan?
Ik zit hier te twijfelen tussen een Parallel.ForEach en een Task.Run. Gekozen voor de Parallel.... en die is goed.

Derde vraag is een enum van weekdagen, waarbij deze via een ToList en een Enum.Parse de weekdagen terug kan krijgen.
DataContract lijkt me voor een webservice, net als Serializable. Gekozen voor public enum DaysOfWeek : string. Staat ook een antwoord met [Flags], dat zegt me helemaal niets.
Bedoem, het blijkt die [Flags] te zijn. Juist om een aangepaste ToString te krijgen heb je die [Flags] nodig.

Vierde vraag gaat over .NET 4.5. Deserialiseer text-data met een MemoryStream. Makkie, ik gebruik zelf nog wel eens een StringBuilder en het schrijven of lezen van data via een MemoryStream.

De vijfde vraag gaat over een WCF-client. Je moet zelf een SLL ceritifcaat maken en installeren op de developmentcomputer. Hiervoor moet je acties in de juiste volgorde zetten.

Dat wordt gokken.
In mijn geval:
- generate a self-signed root authority certificate and private key file
- import the certificate in trusted certificate authorities
- configure the clientCredentialType setting in the configuration file

Fout;
Het moet dus zijn:
- generate a self-signed root authority certificate and private key file ( GOED! )
- generate a certificate signed by a root authority certificate ( die miste.. )
- import the certificate in trusted certificate authorities ( GOED! )
- configure the clientCertificate setting in the configuration file ( ai, verwisseld.. )

En dan zie je maar, ongeveer 18 minuten bezig voor een 5-tal vragen. Ik had 80% goed moeten hebben, maar heb door mijn 2 fouten slechts 60% goed. Gezakt...

Nog maar een keer dan. Wederom 5 vragen (schijnbaar kun je dat aantal niet aanpassen). Hey, dat zijn dezelfde 5 vragen. Het lijkt erop dat er maar 5 vragen beschikbaar zijn.
Dan kies ik wel voor certification. Ook dit zijn weer 5 vragen. Ik had al zo'n vermoeden, dezelfde, dus ik heb maar 5 vragen beschikbaar. Niet echt een goede training.

Dan nog maar even zoeken op MeasureUp.com. Er wordt daar ook een 70-483 training aangeboden, met een aantal opties. Ik kies voor de 30-dagen-online versie, dit kost 91 euro. Daarvoor moet je dan wel weer een nieuw account aanmaken. Allemaal gedaan, maar vervolgens kan ik het serienummer niet registreren "The key you are using doesn't belong to this partner.". Genoeg ergernissen voor vandaag, een mail naar support van MeasureUp gestuurd, hopelijk kan ik morgen wel echt aan de slag.

Dinsdag 19 juni 2018
Antwoord van MeasureUp ontvangen (al na 11 minuten), komt erop neer dat je een nieuw account moet registreren. Bij deze gedaan, daar je productkey registreren. Nu lukt het wel. 154 vragen, ik doe vanavond 20 vragen.

Vraag 1 gaat over een lambda-expressie voor een delegate. Die is goed. Vraag 2 gaat over een delegate voor een ExceptionHandler en een functie die je daar zelf voor moet maken. Zelfde paarameters aanhouden, ook goed. Vraag 3 gaat over een mouse-move event "dat alleen binnen jouw class gebruikt mag worden". Dan denk je, wat is er dan anders aan de aanroep? Toch maar op de standaard object, eventargs gehouden. En dat is dus fout. Ik had hier de public event EventHandler<MouseEventArgs>MouseMove moeten gebruiken. De crux was dat het niet een event definieerde maar een delegate, dus omschrijving van hoe het aangeroepen moet worden. Vraag 4 is het dat je moet subscriben op een Processed-event. Met een lambda expressie. Anders had ik wel += gedaan ;) Dat is wel het antwoord trouwens, want het andere is = en -=. Vraag 5 is het unsubscriben. Makkie: -=. Vraag 6 is een delegate voor het combineren van 2 strings. Dat moet sowieso met een return, omdat het een anonymous type moet zijn, moet je de parameters dus niet met het type string definiëren. Dacht ik. Dat moet dus wel. Bij lambda expressies had dit gekund, maar bij anonymous methods moet je dus het type wel defniëren. Weer wat geleerd. Vraag 7 gaat over een eigen EventArgs class voor het loggen van fouten. Gevraagd wordt om de juiste delegate te specificeren. Ik zit te twijfelen, toch maar gekozen voor public delegate void ErrorEventHandler(ErrorEventArgs a). Fout. Het moet toch public delegate void ErrorEventHandler(object sender, ErrorEventArgs a) zijn. Eigenlijk had ik dit wel kunnen weten. Vraag 8 gaat over try-catch-finally. Omdat ik weet dat finally goed is, begin ik even te twijfelen omdat er geen catch statement in staat. Maar die kun je dus skippen als je er toch niets mee doet. Vraag 9 gaat over het catchen van excepties en het alsnog laten "crashen". Gekozen voor de normale throw;, dat is juist. Vraag 10 is over het afvangen van excepties. Je moet eerst de specifieke afvangen, daarna de algemene. Vraag 11 gaat over een eigen class, waarin je Excepties wilt afvangen. Dan moet je gewoon overerven van de standaard System.Exception. Vraag 12, je maakt een eigen exception-class. Ook de andere excepties moeten afgevangen worden. Je moet hem dus laten erven van Exception en in de InnerException kun je dan de base.. aanroepen. Vraag 13 gaat over een file-read-exception en netjes het bestand sluiten. Ik zit even te twijfelen, omdat je binnen de exception de nieuwe exceptie "throwt", maar omdat je een finally statement hebt ga ik er vanuit dat dit dan toch altijd uitgevoerd wordt. Het is inderdaad juist. Vraag 14 gaat over een LogError bij een leesactie uitvoeren en de exceptie weer "throwen". Die leek op de vorige vragen en heb ik dus goed. Vraag 15 is een "schuif-de-elementen-vraag". Lijkt makkelijk, maar ik verkijk me op een soort "fall-through". Dat moet een goto-case worden in plaats van commentaar. Vraag 16 gaat over het formatteren van een tekst voor een productbeschrijving. Even goed lezen, geen probleem. Vraag 17 gaat over het aanroepen van een functie met een customerobject (wat uit een array gehaald wordt). Ook hier weer goed lezen, geen probleem. Vraag 18 is een moeilijkere vraag. Gaat over threads en workers. Logischerwijze zou ik verwachten dat het een while(ShouldContinue()).. is met daar binnen een WaitForNextItem(). En ja, die is inderdaad goed. Vraag 19 gaat over het opstellen van een mailinglist, data kan missen, je moet hiervoor een LINQ query opstellen. Het lijkt me dat je de normale namen geeft en niet een l.nogwat en bij de check of iets leeg is kan dat met ??. Klopt inderdaad. Door naar de laatste vraag, vraag 20. Dit gaat over een functie die berekeningen doet, maar faalt op het moment dat de integer-parameters te hoog zijn. Check toevoegen op int.MaxValue en dan een ArgumentException throwen. En, nee! Fout. Je moet een "checked-statement" om de berekeningen heen zetten. En natuurlijk is dat logisch. Want je wordt op het verkeerde been gezet door "te hoge waarden van de parameters", maar dat zijn natuurlijk wel netjes int-waardes. Het gaat om de berekeningen. 

Helaas, hoewel ik net als de gemiddelde persoon een score van 75% heb, is dat te weinig (minimum is 80%). Wel een thumbs-up voor de stijging, gisteren 60% en vandaag 75%, dat moet ik vast houden!

Woensdag 20 juni 2018
Na een uur sporten bij FitConcept, douchen en nog 20 minuten Iran-Spanje kijken om 22.20 uur nog een test doen. Wederom 20 stuks. 
Vraag 1. We beginnen met een regex voor een e-mailadres. Een aantal vragen waar je ja of nee op antwoord. Ik zit even met wat het top-level domain is. Ik dacht dat dit de .nl, .de is (dat is ook zo), maar door een vraag begin ik te twijfelen en denk ik dat het deel ervoor bedoeld wordt. Fout dus.
Vraag 2. Een vraag uit de eerste toets. Goed. Vraag 3 is het bouwen van een linq query. Goed. Vraag 4. Gaat over reflection en het gebruiken van een DLL. Ik zit te twijfelen tussen Load en LoadFrom, maar kies voor Load. Fout, had toch LoadFrom moeten zijn. Vraag 5. Een class Plant en een class Tree, waarbij de functie Draw van Tree de functie van de Plant moet uitvoeren. Dat is met de welbekende base.Draw(). Vraag 6. Gaat over een Employee class en externe code die daarvan erft. Je moet zorgen dat je variabelen altijd geïnitialiseerd zijn. Ik kies voor de protected Employee, hoewel private Employee ook wel goed lijkt. Shit. Protected was wel goed, maar je moest je code zo kort mogelijk houden. Dus :this(string.Empty, string.Empty). Fout. Vraag 7. Is een vraag uit toets 1, goed. Vraag 8. Gaat over een instance die een null waarde heeft. Gezien de specs (melding tijdens ontwikkeling, niet tijdens productie) neem ik aan dat het met een Debug.Assert kan. Is inderdaad juist. Vraag 9. Een old-fashion SQLCommand-vraag. Maar wel met een addertje onder het gras. Want FOR XML AUTO wordt erin gezet, dus je verwacht bijna een ExecuteXmlReader. Volgens mij een instinker, dus kies voor ExecuteReader. Aargh.. toch niet. Toch die ExecuteXmlReader.
Vraag 10 gaat over een config en het opvragen van data. Logisch gezien zou het een custom class zijn die van Switch erft en dan de Value eigenschap controleren. Als dat het niet is, zou ik kiezen voor TraceSwitch. Nope, juiste keuze. Vraag 11 is old-school sqlconnection. Met ExecuteNonQuery krijg je het aantal rijen terug. Vraag 12 is de mapping-exceptionvraag uit de eerste toets. Goed. Vraag 13 is het commando voor een makecert.exe. Ik zit te twijfelen of in de CN= nu wel of niet de extensie van het bestand meegenomen moet worden. 
Ik doe toch zonder. Nee, zonder extensie is goed, maar met moet CN=Test in plaats van CN=TestCA zijn. Vraag 14 is een parallelle actie vraag, Task Parallel Library, met het afvangen van excepties. Het lijkt me dat dit een AggregateException moet zijn, je hebt iets met Exceptie.InnerExceptions en een Exceptie.Flatten(). InnerExceptions. Dit laatste zegt me niets, dus ik kies voor het "normale" antwoord.  Fout, had toch voor .Flatten() moeten kiezen. Uitleg is duidelijk. De exceptie kan ook weer aggregatedexceptions bevatten, door te "flattenen"  hou je goede excepties over. Vraag 15. Gaat over encrypting je data (creditcard) en hoe je dat moet doen op de pc. Ik kies voor ProtectedMemory en Scope.SameProcess, je hebt ook nog een .SameLogon. Fout. Had ProtectedData.Protect en DataProtectionScope.CurrentUser moeten zijn. Vraag 16. Een webservice kan slechte 3 simultane connecties open houden. Hmm.. de Mutex klinkt me bekend in de oren. Nee, het had de Semaphore moeten zijn. Vraag 17 gaat over protected, public, private. Met bepaalde voorwaarden moet je het blokje op de juiste plaats zetten. Dat gaat nog niet goed, moet ik nog beter doorlezen. Vraag 18. Gaat over een eigen telefoonnummer-class. Opslaan 10 cijfers, notatie op US manier.
Ik was vergeten hier de GetFormat-functie nog aan toe te voegen. Fout. Vraag 19. Gaat over de Enum DaysOfWeek, zat in de vorige toets. Goed. Vraag 20. Database queries en background threads. Je wilt dat de thread pauzeert, zodat andere threads kunnen starten. Ik vermoed dat de Sleep niet goed is, de Yield zou volgens mij ook nog wat doen, dus ik kies voor de SpinWait(1). En... fout. Ik had toch de Yield moeten gebruiken. Helaas, teveel fout. Score van 45%, gemiddelde is 60% en ik had 80% moeten hebben.

Donderdag 21 juni 2018
Mijn parttime-middag. Eerst bij de Intratuin planten kopen, planten, 's avonds nog Argentinië-Kroatië gezien. Het is inmiddels 22.10 uur, ik ga natuurlijk toch weer voor die 20 vragen. Let's go. Vraag 1. Gaat over een customer-array en doorgeven aan andere functie. Al eerder gehad, goed. Vraag 2. Gaat over unmanaged resources. Oei. Mijn gok is dat het een Object resource is, je een Dispose(true) aanroept, daarna een resource.Dispose() en in de laatste regel een GC.SuppressFinalize(this); Niet goed dus. Het had een SafeHandle moeten zijn en voor je Dispose() doet nog een check of de resource niet null is. Is op zich ook wel logisch, want op een null object kun je geen methoden/functies aanroepen. Dom, dom, dom. Vraag 3. Eerder gehad, gaat over de eigen ErrorEventArgs. Goed. Vraag 4. Gaat over een ProcessData functie en afvangen excepties. Ook eerder gehad. Goed. Vraag 5. Eerder gehad, gaat over de public/private/internal/protected. Had ik vorige keer al moeite mee... public, internal, internal, public, private. Nope. Had internal, private, private, public, protected moeten zijn. Aandachtspuntje. Vraag 6. Gaat over een applicatie met 2 assembly's, waarbij de ene met .NET framework 2 gecompiled is en de andere met 4.0. Ik vermoed dat je dit met de assemblyBinding moet aangeven, ik ga voor de name waarin niet de extensie (.dll) opgenomen is. Fout. Het is de "simpele" syntax, supportedRuntime version="v4.0".
Vraag 7. functie voor het maken van een komma-gescheiden string met 5 karakters. Let wel "most efficiently". Niet helemaal de vraag goed gelezen, ik wist dat de StringBuilder de beste was. Fout. Vraag 8. Checkoutproces, met een naam, vraag eerder gehad. Goed. Vraag 9. Vraag over Point2d en Point3d. Het gaat over hoe je die kunt declareren en naar elkaars type om kunt zetten. Volgens mij is de Point3d p = (Point3d) new Point2d(1,2) en Point3d p = new Point2d(11,22) as Point3d geldig. Bijna. Ook de Point2d p = (Point2d) new Point3d(1,2,3) schijnt te mogen. Ah ja, stond er eigenlijk ook al :( Vraag 10. Een class Person met List die je moet sorteren op naam en leeftijd. Ja, doen we de OrderBy(..).OrderBy(..) of de OrderBy(..).ThenBy(...). Volgens mij bestond die laatste wel degelijk, die kies ik ook. Is goed. Vraag 11. Vraag over LogSqlError en LogError, al eerder gehad. Goed. Vraag 12. Gaat over custom attributes en een lijstje met ja of nee antwoorden. Hier weet ik weinig van, dat wordt gokken. Of author als een positional parameter gebruikt kan worden. Is private, ik gok van No. Zelfde vraag voor Modified, omdat die public is kies ik voor Yes. Of Author as Named parameter gebruikt kan worden. Ik denk het wel (je geeft deze mee in de parameter voor de functie). Zelfde vraag voor modified, die wordt in de code bepaald, dus ik zeg No. Documentation attribute can be applied to a method. No, want Usage staat op Class of Struct. Fout.
Author kan wél als positional parameter gebruikt worden, modified dus niet. Author kan niet als named parameter gebruikt worden. Modified wel. Alleen het laatste item had ik dus goed. Positional parameter is of het via de constructor meegegeven wordt, de named parameter is dat je het ding met een .naam aan kunt roepen. Vraag 13. Interface voor orders. Even goed de get/set bekijken. Goed. Vraag 14. Eerder gehad, over XML AUTO. Vraag 15. Je hebt een class, die wil je serializen naar XML, maar je kunt de members niet aanpassen. Welke te gebruiken? Zit te dubben tussen de DataContractSerializer en de XmlSerializer, kies toch voor de laatste. Fout. Had toch de DataContractSerializer moeten zijn. Omdat er een private field in zit is mijn keuze fout (anders had het dus wel gekund). Vraag 16. Een class, waarbij Dispose altijd aangeroepen moet worden. Goed doorlezen, goed beantwoord. Vraag 17. Functie CalcArea, kies 3 manieren voor juiste aanroep met named parameters. Hierdoor kun je parameters omdraaien. Vraag 18. Een eigen class met eigenschap OnListPriceChanging, vraag hoe te declareren. Moet los kunnen compilen, als deze in een extern bestand staat, moet het aanroepen worden. Volgens mij is dit de virtual void. Fout. Het is de partial void OnListPriceChanging(double value). Ik gebruik de partial alleen voor de class om die over meerdere bestanden te plaatsen, maar dat kan dus ook hiermee. Vraag 19. Je get-statement geeft een rapport terug. Bij een hoge serverload gaan meerdere processen dit zware proces starten. De lock(_locker) en de Monitor.Enter(_locker) lijkt me de juiste opties. Inderdaad correct. Vraag 20. Gaat over een TraceSwitch. De value staat op 1. Wat was dat ook alweer? Ik vermoed alleen Error en ja: goed! Ditmaal een score van 55%, 9 fout van de 20.

Vrijdag 22 juni 2018
Ook deze vrijdag gaan we voor 20 vragen. Wel met wat afleiding, want op q-dance.nl is de livestream van Defqon 1 te volgen, op mijn andere scherm heb ik de WK-wedstrijd Servië-Zwitserland ervoor. Vraag 1. Een eerder gestelde vraag, linq-query sorteren op naam "enthen" op leeftijd. Goed. Vraag 2. Wederom een zelfde vraag. De public/private/internal vraag. Ik moet m nog steeds doorlezen. Ditmaal protected, public, internal, internal, public, private. Wederom fout. internal, private, private, public, protected. Vraag 3. Eerder gehad, class serializen naar XML, DataContactSerializer. Vraag 4, daysofweek enumbs. Eerder gehad. Goed. Vraag 5, employee met external use. Eerder gehad. Goed. Vraag 6. Processed event met handler, eerder gehad. Goed. Vraag 7. Local computer, beveiligde data, eerder gehad. Goed. Vraag 8. Nieuwe vraag. Signaal geven als iets klaar is. ManualResetEventSlim, moet de ManualResetEvent zijn. Vraag 9. Drie resouces die in 1 assembly gemerged moeten worden. Ik gok op Regasm. Fout, het moet Al.exe zijn. Assembly Linker tool. Regasm is bedoeld om assembly als COM-object te registerern. Vraag 10. Eerder gestelde vraag over uitlezen data. "het was de stringbuilder". Vraag 11. Vraagje over public en private key. Private key, company A. En... fout. Het moet de public key van company B zijn. Vraag 12. Eerder gestelde vraag over Point2d en Poin3d. Vorige keer fout, nu weer :( Vraag 13. Eerder gestelde vraag, over een eigen Disposable class. Goed. Vraag 14. Een eigen struct, vraag hoe de interne variabelen op te bouwen. Ik dacht de mooie getter-setter te gebruiken, maar dit is een struct, daar moet je dat niet doen. Vraag 15. Vraag over switch Membertype, eerder gehad. Goed. Vraag 16. Een functie voor het berekenen van een string. Netjes met de float.Parse, goed. Vraag 17. Rowschanged vraag, eerder gehad. Goed. Vraag 18. 4 ja/nee vragen over disposing. disposing false, call vanuit finalizer, yes volgens mij. false, dan kun je unmanaged objecten benaderen. no volgens mij. disposing true, dan kun je unmanaged objecten disposen, yes denk ik. deze methode gebruiken voor centrale plaats opruimen unmanaged objecten. ik gok op yes. Dat waren goede gokken. Vraag 19. Vraag eerder gehad over AggregatedExceptions. Goed. Vraag 20. Vraag over eigen signed SSL. Vorige keer was dat ook een gokje (en toen fout). Self signed, met private key file. Importeren in trusted root. Daarna clientCertificate-instellingen. Tweede stap (ertussen) moest generate signed by a root authority certificate zijn. Vandaag een score van 65%. Had 80% moeten zijn. We zijn er nog niet.

Dinsdag 26 juni 2018
Gisteravond naar Nickelback in de Ziggo Dome geweest, dus gisteravond overgeslagen. Deze avond 20 vragen en expliciet aangeven dat de vragen niet eerder gesteld zijn. 

Vraag 1. Een vraag over data-uitwisseling met DMV waarbij de data veilig en niet aangepast overgezonden moet worden. Welke methode? Ai, hoe zit het ook weer met de hash en welke key te gebruiken? Volgens mij was het encrypten met de eigen public key, hash de encrypted data en stuur die door. Ai, fout. Je moet een hash maken. Encrypt de data met de eigen private key. Wist ik eigenlijk ook wel, jammer... Vraag 2. Het aantal bepalen van een lijstje voor elke unieke datum. Dat is niet al te moeilijk, de group by. Vraag 3. Volgens mij declaratie van de class met T, functies met een public static. Ik wilde de this toevoegen, maar pakte de applicatie niet. Nu wordt het fout gerekend, maar ik had het dus goed. Vraag 4. Je eigen log-class voor externe classes. Het lijkt me met de interface en bij de andere zit ik te twijfelen. Of met dynamic message of met var message. Eerste keuze was dynamic, maar kies toch voor var. Fout. dynamic was goed, interface was ook fout, moet class met 3 verschillende LogMessage aanroepen. Vraag 5. WorkItem class, zo simpel mogelijk. Met get en internal set, goed. Vraag 6. Class met multitheading technieken, hoe de teller te onderhouden. Volgens mij een lock(..). Geen idee wat de Interlocked.Add doet. Fout, die was het dus. Mijn lock kan niet, omdat het een value type is en niet een reference type. Vraag 7. Productcatalogus, vraag syntax 3 functies. Ik heb voor de public .. functies gekozen, dat moet dus niet. Alle members van een interface zijn impliciet al public... Vraag 8. Je hebt een class met 2 interfaces. Ik had 2x public en de oplossing met niets public, die 2x public was fout, moet 1 met 1x public zijn. In geval van dezelfde aanroep mag er 1 public zijn, maar moet de ander dat niet zijn. Vraag 9. Intensie met datastreams. Ik kies voor de ThreadPool.QueueUserWorkItem. Vraag 10. Hoe passwords te encrypten? Hmm... RSACryptoServiceProvider? Fout. SHA1Managed. Mijn keuze werkt met public/private key, dat is inderdaad onjuist. Vraag 11. Vraag over sturen data via netwerk. Dat moet een Flush zijn. Vraag 12. Select statement wordt niet uitgevoerd. ToList-actie uitvoeren. Vraag 13. Lange actie met lijst met employees. Lijkt me de Parallel.ForEach.. Vraag 14. Transactiescope. Exceptie Deposit rollback, bij fout logger, gewoon doorgaan. Lijkt me de hoofd een new transactionscope en voor de log-actie 1 met suppress. Vraag 15. Je eigen IDisposable inrichten. Bij Dispose aanroep van Dispose(true), bij destructor een dispose(false) met suppressfinalize en bij disposing ownedChild en this.pub vrijgeven. Fout. Bij Dispose dispose(true), maar ook SuppressFinalize. Bij destructor alleen een dispose(false) en bij dispose het vrijgeven net in de andere volgorde. Vraag 16. Code om data vanuit een webservice naar een object om te zetten. DataContractJsonSerializer lijkt de meest nette oplossing. Dat is goed. Vraag 17. Het lijkt mij dat de 3 genoemde functies een performanceprobleem hebben. Goed. Vraag 18. Een crash debuggen in een 3rd party COM object. Gokje, load DLL exports, want ik weet dat COM-objecten via DLL's uitgevoerd worden. Goed. Vraag 19. Een enum-vraagje. Alleen de initialisatie van Unknown is niet goed. Op 0 gezet, maar moet -1 zijn.  Komt omdat de categorie "unknown/onbekend" niet meegeteld wordt. Tsja... Vraag 20. Een shared assembly. Ik kies voor Gacutil. Voor iedereen te gebruiken en niet COM exposed. 

Score van 55, gemiddeld 59 en dus nog te weinig. 
Ik had er 11 goed, maar eigenlijk 12. Dus 12/20 = 60. Nog te weinig, maar net iets beter...

Woensdag 27 juni 2018
Ik zou deze avond nog aan de slag, maar eerst naar de fitness, daarna koffer pakken voor Concert at Sea.. het is er niet van gekomen.

Zondag 1 juli 2018
Ik ben weer thuis, het is nog redelijk warm in mijn computerkamer, maar ik ga nu die gemiste woensdagavond nog ff inhalen. Go! Vraag 1. Een class publisher met een naam-property en een class book die een lijst bevat. Linq-Query waarbij je ook de publisher-naam moet teruggeven. Goed. Vraag 2. Je maakt een Compare-by-class. Ik word hier in de war gebracht door de eerste call, CompareBy(3, descending = true). Je zou verwachten dat de constructor 2 parameters heeft, 2e optioneel. Maar die declaratie zit er niet bij. Ik kies dus "maar" voor CompareByAttribute(int order), waarbij ik this.order = order doe. public bool descending met een get/set en een private int order, omdat die altijd in de constructor zit. En het is nog goed ook. Vraag 3. Hierna heb je een Attribute-class die je moet toepassen. De Documentation("Jay Adams") moet wel goed zijn, ik gok op een named parameter Author="Jay Adams". Mocht dat niet goed zijn, dan zal het toch Documentation("Jay Adams", Modified="12...") zijn. En yep, fout, die andere was inderdaad de juiste setting. Vraag 4. Een eigen product class waarin je zaken goed moet afschermen. Ai, internal en dergelijke. Laat ik van de standaard uitgaan, je variabelen private, je method calls wel public. Yep, helemaal goed. Vraag 5. Vraag over de Taks Parallel Library en het loggen met een niet thread-safe library. Ik kies voor de private ThreadLocal<CompanyLogger> logger en logger = new ThreadLocal<CompanyLogger>()=>new CompanyLogger(). Gokje, het is vast niet goed. Inderdaad, fout. Die laatste was wel goed (nice!) maar die private ThreadLocal had een private static  ThreadLocal<CompanyLogger> logger moeten zijn. Vraag 6. Met je eigen IDisposable-object binnen een class, die moet je de GC een object kunnen laten claimen. Ik kies voor dat de class ook een IDisposable wordt en de Dispose functie implementeert. Nope, niet goed. In dit geval moet het zijn this.dependentObject = new WeakReference(dependency) en private WeakReference dependentObject. Vraag 7. Eigen DataMember en DataContract. Extern object wat ook geserialiseerd moet worden. Ik kies ervoor om een methode OnSerializing toe te voegen. Fout. Het had het toevoegen van een class die een IDataContractSurrogate implementeert en geef deze class door aan de DataContractJsonSerializer constructor. Vraag 8. Rijndael-decryptor die niet werkt. Makkelijk, de IV mist. Vraag 9. PerformanceCounter, hoe te verhogen. Geen idee eigenlijk, .NextSample() klinkt goed. Fout. Moet .Increment() zijn. Vraag 10. Collection. Ik gok op de list, omdat elementen moeten blijven bestaan en je moet kunnen sorteren. Correct. Vraag 11. Lijst met vendors, kies de juiste iterate functie. .Length lijkt me juist en GetUpperBound(0) ook. Fout... Het is toch de Count() functie. Vraag 12. Een eigen Employee-class, je moet de IComparable implementeren. De ==,. de != operator en daarna... het zou de Equals(..) kunnen zijn, ik gok op de CompareTo(..). Flink fout. Het had de GetHashCode(), Equals() en CompareTo() moeten zijn. Vraag 13. Een applicatie met TCP requests over poort 500, je ontvangt een enkele string. Logisch gezien zou je een listener moeten starten, daarna AcceptTcpCLient en vervolgens met een StreamReader op de NetworkStream zetten. Is juist. Vraag 14. Hmm.. een array initialiseren, maar daarvoor staat "unsafe". Ik gok dat het binnen een unchecked{...} moet zitten. Dan zal de aanroepende functie ook wel "unsafe" zijn toch? Fout. Dat unsafe klopt, het instellen moet echter met een fixed(...){...}. Unchecked is alleen van toepassing om je compiler geen overflow-checking te laten doen. Vraag 15. MemoryStream uitlezen, makje. Vraag 16. Een class in jouw applicatie moet zichtbaar worden als COM-coponent. Ik gok op het toevoegen van een assembly: Guid als attribuut in AssemblyInfo.cs, tlbexp MyAssembly.dll uit te voeren en het attribuut [assembly: ComVisible(true)] in AssemblyInfo.cs toe te voegen. Nope. eerste 2 waren goed, je moet juist [assembly:ComVisible(false)] toevoegen omdat alleen jouw stukje code com-visible moet zijn.. ik had het kunnen weten. Vraag 17. Je hebt een Weapons en Sword-class (die erft van Weapon), je moet de juiste public/internal instellen. Ik ga voor de abstract class, virtual functie (kan zelf implementeren), abstract functie (moet je implenteren), en vervolgens beide override in de Sword-class. Bam, allemaal goed. Vraag 18. Lijst met Products, schrijf een linq-query. Goed. Vraag 19. Een PrincipalPermission-attribuut. Volgens mij zou dit de AppDomain.CurrentDomain.SetPrincipalPolicy(...) moeten zijn. Yep, right. Vraag 20. Vraag over een enumeration. Volgens mij is dit mijn favoriete "yield"-code. Yes, goed. Wederom gezakt, 55 van de gewenste 80 punten. 

Maandag 2 juli 2018
Bezig voor een klant, bezig in de tuin, dus wel nog een proefexamen gedaan, maar ik kan pas om 22.55 uur beginnen, dus maar 10 vragen dit keer. Vraag 1. Een employee class met een birthdate-veld in de DB. Je moet de leeftijd berekenen, veld wordt niet in DB opgeslagen en moet read-only zijn. Volgens mij de get / private set. Goed. Vraag 2. Je hebt een library waar je Task Parallel Library gebruikt. Ik hou het op de tasks[i] = new Task(() => RunJob(jobs[i],i)); tasks[i].Start(); Fout. Het is de eerste tasks[i] = new Task((idx) => RunJob(jobs[(int)idx, (int)idx], i); tasks[i].Start(); Vraag 3. Je maakt een Windows 8 desktop app. Globalization wil je gebruiken. Volgorde: set the targetplatformversion in .csproj, add reference naar windows.globalization.winmd, reload the project. Fout. Begin met een unload van het project. Daarna setting in .csproj. Reload the project. Add ref to Windows.winmd. Vraag 4. Class waarbij je properties wel en niet mag zetten. private variabelen, public methoden en alleen een get bij de id-property. Juist. Vraag 5. sqlCommand met parameters. Goed. Vraag 6. BinaryWriter om strings te schrijven en lezen. Hier moet je de ReadString methode gebruiken. Had ik fout, klinkt inderdaad logisch. Vraag 7. Serializeren van data, ziet eruit als JSON, dus de JavaScriptSerializer. Vraag 8. Stukje QueueUserWorkItem, Summary-functie moet uitgevoerd worden als alles klaar is. Dat moet wel een .WaitAll zijn. Vraag 9. CanAdd functie die een Vehicle of Person mag gebruiken. Dat moet wel de is Vehicle || is Person zijn. Vraag 10. Je moet JSON "consumen". Gokje, typeof(Vendor) bij aanmaken DataContractJsonSerializer en een (Vendor)js.ReadObject(..) om te casten naar het juiste type. Is inderdaad juist. Een score van 70. Nog niet de benodigde 80, maar beter dan de afgelopen tijd.

Dinsdag 3 juli 2018
Gisteren tot 1.15 uur doorgewerkt, dus een uurtje eerder naar huis. Nog even buiten in een bibliotheekboek lezen, tukje doen, eten, uurtje lopen, planten water geven, brood klaar maken en vervolgens gaan we nog eens 20 vragen beantwoorden. Vraag 1. Een class "Classroom" met eigenschap RoomNumber, wat als XML geserialiseerd moet worden. Omdat de property RoomNumber het attribuut number wordt, lijkt me dat je dit door moet geven. Het lijkt mij dan ook dat die XmlAttributeOverrides als parameter in de XmlSerializer meegegeven moet worden. Helemaal goed! Vraag 2. Een async task waarbij je moet wachten tot alle verwerkt zijn. In plaats van de string data = reader.ReadToEnd(); lijkt me await reader.ReadToEndAsync() een juiste vervanger. Correct. Vraag 3. Vraag over een collectie, moet unieke waardes bevatten en bij opvragen niet verwijderen. Dat moet de Dictionary zijn. Vraag 4. Iets wat je in 2.0 gecompiled hebt, moet nu als 4.0 draaien. Ik meende uit een eerdere vraag dat je niets met bindingRedirect moet doen, dus dan ga ik voor de supportedRuntime van 1.1 en 2.0. Ai, dat is onjuist, wel bijna goed. Moet de supportedRuntime 2.0.50727 en 4.0 zijn. Mijn fout... lezen! 2.0 staat er immers niet op. Vraag 5. Ingewikkelde vraag. Je moet een Comparison<CustomClass> methode tijdens runtime genereren en compilen. Dit is een gok. Ik kies de DynamicMethod. Fout. Moet een CodeCompileUnit zijn. Vraag 6. Een WPF class. Ik kies voor: <T> where T : INotifyPropertyChanged : System.Windows.Window. Fout. <T> : System.WIndows.Window where T : INotifyPropertyChanged, new(). Vraag 7. Je vult een stringbuilder met random waardes. Hoe zorg je dat deze binnen de max blijft? Zit tussen de doc.Capacity <= doc.MaxCapacity en doc.Length <= doc.MaxCapacity. Ik kies voor de Capacity <= doc.MaxCapacity. Fout. Geen van beide, moet de doc.Length + dict[index].Length <= doc.MaxCapacity zijn. Hoewel de uitleg logisch klinkt, klopt het volgens mij niet. Pas na die check wordt met een random de index in dict bepaald. Dus je kunt nu wel een item van lengte 4 hebben, maar de nieuwe kan lengte 40 hebben. Volgens mij heeft deze vraag geen goed antwoord, dus geef mezelf een extra punt. Vraag 8. PerformanceCounter die moet meten hoelang het proces al draait. Ik kies voor de collection, daarna aanmaken countercreationdata object en die daaraan toe te voegen. Correct. Vraag 9. List<string> customers waarbij je voor elk item een Process-functie moet uitvoeren. foreach-string, juist. Vraag 10. Een collection waarbij het opvragen niets verwijdert en bij het verwijderen de boel weer netjes aansluit. De ArrayList lijkt me dan de juiste. Fout! LinkedList. Mijn foute aanname was dat als je wat weghaalt er "een gat bleef", maar dat is dus niet zo. Vraag 11. Een applicatie verwijst naar versie 1.0.0.0 van een assembly. Je hebt versie 3.0.0.0 en moet de applicatie daarnaar verwijzen. Dit moet volgens mij de bindingRedirect zijn. Juist. Vraag 12. Een dictionary die je moet initialiseren. Je moet die dan wel als een new Dictionary declareren. Vraag 13. Je applicatie moet naar een custom event log AppCenter schrijven. De korte versie lijkt de juiste, EventLog eventLog = new EventLog("AppCenter"); eventLog.WriteEntry("Invalid"); Fout. dat was inderdaad te makkelijk. Je moet een EventLog.CreateEventSource("MySource") toevoegen. Vraag 14. Je maakt een eigen assembly die in de GAC moet komen. Dat lijkt me de Regasm.exe. Fout... ik had toch even getwijfeld over de "Strong Name Tool", dat is het juiste antwoord. Mijn regasm zorgt voor registratie van een com-object.... Vraag 15. Linq naar XML om een Reservation-tag naar een XElement te verwerken. Logisch gezien zou een new XElement met daarna een new XElement gevolgd door de 2 XAttributes juist zijn. Nee, toch niet. Wederom overheen gekeken (verraderlijk...), mijn keuze maakt namelijk een rootnode zonder naam aan... Vraag 16. Een applicatie die een audit log van transacties maakt. Er mag maar 1 single thread bij. Dat moet wel een monitor.enter, list.add in de try, en de finally een Monitor.Exit. Vraag 17. Een WPF applicatie die zware encrypted bestanden ontsleutelt en in een tekstveld zet. Dat moet wel een StreamReder met await aanroep zijn. Vraag 18. Multi-threaded applicatie, alleen breakpoint raken als de thread de naam Thread1 heeft. Breakpoint Filter of Breakpoint Condition lijkt mij de meest voor de hand liggende oplossing. Vraag 19. Je maakt een generieke class Builder die type Vehicle of geërfde objecten van Vehicle mag verwerken. Moet wel <T> where T : Vehicle (geërfde zijn ook Vehicles). Vraag 20. Applicatie verwerkt betalingen. Daarvoor wil je de balans checken, single thread natuurlijk. De class moet public zijn lijkt me, het object wat voor het locken gebruikt wordt, moet volgens mij niet "this" zijn, maar dat object. Om dat object af te schermen, moet het private zijn. Correct. Ik heb een score van 60. Bij vraag 7 geef ik mezelf een extra punt. Dus geen 12, maar 13 van de 20 goed, een score van 65.

Donderdag 5 juli 2018
Gisteren naar het concert van Guns n' Roses in het Goffertpark in Nijmegen geweest, toen dus geen oefenexamen gedaan. Vandaag, na de fitness en het douchen om 22.05 uur los.  Vraag 1, een eigen Logger-class die text in geheugen moet wegschrijven en "readable as a string". In eerste instantie had ik gedacht aan een MemoryStream, maar met die toevoeging lijkt de StringBuilder ook een valide oplossing. Ik vermoed een strikvraag, kies voor de MemoryStream, maar had dus toch voor de StringBuilder moeten kiezen. Vraag 2. Paper, rock, scissor spel. Volgens mij moet je de enum expliciet naar int omzetten en begint de eerste al op positie nul, dus zou categories[(int)ci]++; juist moeten zijn. Klopt. Vraag 3. Debugger, op de 5e keer. Gokje, ik kies voor Condition property op count() ==5. Fout. Moet de Hit Count property zijn. Mijn keuze is bedoeld voor normale variabelen. Vraag 4. Een shared key, welke encryptie-methode? Volgens mij SHA1Managed? Fout, RijndaelManaged. Vraag 5. async methode, await stream.WriteAaync(...). Vraag 6. Code herschrijven voor parallel gebruik. Ik kies voor de Task.Run(... met daarbinnen ContinueWith. Goed. Vraag 7. Xml van films. Indien datum niet ingesteld is, dan vullen met 2013. Hoe te doen met linq? Twee oplossingen lijken redelijk, alleen zit de andere alleen met de waarde te werken, dus ik kies de ander. Correct. Vraag 8. Je maakt een class product, waar anderen van mogen erven, maar niet mogen aanmaken. Intern wel. ik maak de class public, de constructor protected internal. Juist. Vraag 9. Je gebruikt unmanaged code. Hoe de garbage collector te instrueren? Als je ermee werkt doe ik maar een SuppressFinalize, op het moment dat de boel weg kan een GC.ReRegisterforFinalize(buffer)? Fout. Beide antwoorden zijn fout. Het is een AddMemoryPressure op het moment van gebruik, een RemoveMemoryPressure bij opruimen. Vraag 10. Een CreditLimitValidator. Ik kies voor de : IEnumerable voor de declaratie en public IEnumerator GetEnumerator(). Juist. Vraag 11. Eigen payment-class die geserialiseerd moet worden. Ik kies voor het datacontract met de datamembers. Fout, mijn 2e keus, namelijk serializable attribuut en nonserialized. Was een instinker, omdat de BinaryFormatter gebruikt wordt en die snapt niets van DataContract/Member. Vraag 12. Functie om substring te verwijderen. Moet de indexof zijn. Vraag 13. Vraag over Spy++ voor debuggen. Ik ken m niet. Als je 64 bit CPU hebt, moet je ook de 64 versie gebruiken. Ik kies nee. Als je Spy++ gebruikt, moet je Visual Studio open houden. Gekozen voor nee, kan dat ding niet zelf debuggen dan? Je kunt elke thread bekijken, ik kies voor ja. Je kunt er de Windows Message mee zien, kies ik ook voor ja. Klopt allemaal, goed gegokt :) Vraag 14. De Name van een class moet in het watch-window komen. Ook hier een gokje. Ik kies de [DebuggerDisplay("Customer.Name")]. Fout, je voegt het toe aan de class, je moet dus de class-naam niet meenemen. En tevens aangeven dat het een property is. Dus met [DebuggerDisplay("{Name}")]. Vraag 15. Een lijst met integers wegschrijven naar een bestand. Een Foreach WriteLine doet het m. Vraag 16. Een eigen class om data te encrypten. Weinig blocking, dus BlockingCollection valt dan af (toch?), de normale Queue lijkt me niet veilig, dus een ConcurrentQueue. Fout. TOch een static BlockingCOllection. ConcurrentQueue voldeed niet aan het voorgestelde gebruik. Vraag 17. Class AgeType voor minor, tobacco en alcohol. Goed de if / else doorlezen. Vraag 18. Een class claim die geserialiseerd moet worden naar een MemoryStream. Aangezien we een DataContactSerialiser gebruiken, zou ik ook voor DataContact en DataMembers kiezen. Vraag 19. Windows Service met Task Parallel Library. Volgens mij moet deze met de parameter TaskContinuationOptions.OnlyOnRanToCompletion(). Vraag 20. Je moet iets serialiseren wat een verschillend type kan zijn. Wat is het type van de parameter?. Var valt af. In mijn code voor powershell-parameters (string, boolean, getal) gebruik ik dynamic. Dat kies ik hier ook. Want ExpandoObject ken ik niet, anders zou DynamicObject ook nog logisch klinken. Dit is juist. Mijn score is 65

Vrijdag 6 juli 2018
Nog 2 weken en dan doe ik examen. Moet nog wel wat gebeuren, want zoals je ziet heb ik tot nu toe nog steeds niet voldoende punten gescoord. Vanavond dus ook weer 20 vragen beantwoorden. Om 22.38 van start, eerst wat artikelen op wergea.com geplaatst, daarnaast de wedstrijd België - Brazilië half gevolgd, tuin gesproeid en nog wat in het boek van Midas Dekkers gelezen. Ik zou 20 vragen doen, maar het blijkt dat er nog maar 6 niet eerder gestelde vragen zijn. Dan ga ik die doen. Vraag 1. Je eigen class customer mag overgeërfd worden. Eigen overervingen mogen niet buiten zichtbaar zijn. Lijkt me een public abstract class. Correct. Vraag 2. Eigen Manager class met List van Employees. Die je met een ID aan kunt roepen. dus var b=new Manager(); var emp = b[2]; Omdat je ook dingen wilt toevoegen leek me de this[int employeeID] al goed, en extra omdat deze een set heeft. Correct. Vraag 3. Zoeken in een 3-dimensionale array. 2 juiste voorbeelden. Volgens mij die met de goto EndSearch, omdat de andere maar 1x breakt en daardoor binnen de 2 andere breaks blijft "hangen". Fout. Tweede was wel goed, eerste niet. Omdat die binnen een true-block zit. Kak. Vraag 4. Je eigen class Customer met een Name property die goed afgeschermd moet worden. Easy-peasy, de normale flow (interne variabele _name, getter-en-setter Name. Vraag 5. Een eigen class die intensief werk moet gaan doen. Moet iets met Parallel zijn, geen idee waarom ik een asordered of withdegreesofparallelism(4) zou gebruiken. Dat was een goede keus, gewoon de standaard pakken. Vraag 6. Een class Customer met een creditlimiet van 5.000, een premiercustomer met een limiet van 100.000. Volgens mij zou het in de base-class een virtual void moeten zijn, en in de PremierCustomer moet volgens mij dan een new void ... worden. Fout. Niet een new void, maar een override void. Die new zorgt dat je de boel expliciet naar een PremierCustomer om moet zetten. Omdat ik minder vragen heb, is de verhouding wat anders. Een score van 66,67%.

Zondag 8 juli 2018
Ik heb nu alle vragen gehad, vanavond wederom 20 stuks, maar dat zijn dus vragen die ik al gehad heb. Laat ik de vragen die ik desondanks toch fout heb hier bespreken. Vraag 1. Vraag over Withdraw, Deposit en Loggen. De keuze die ik in gedachten had was toch de juiste. Een transactionscope en voor het Loggen een transactie van type Suppress. Vraag 11. Het locken van data. Ik had de public gekozen, maar het moet een private object zijn, zodat andere processen deze niet kunnen locken. Vraag 12, andere processen ook processortijd geven. Moet een Thread.Yield zijn. Vraag 14. Je eigen employee-class. Ik had gekozen voor de private-constructor, het moet de protected-variant zijn. Vraag 16, vraag over Dispose(bool disposing). Als die param false is, dan is deze aangeroepen uit de finalizer: ja. Als param false is, dan kun je veilig unmanaged objecten benaderen: nee. Als param true is, dan kun je unmanaged objecten disposen: ja, deze methode moet je gebruiken om alle unmanaged objecten vrij te geven: nee -> jawel. Vraag 18. Eigen Dispose. Moet dispose(true) en GC.SupporessFinalize(this). ~Subscriber() moet this.dispose(false) zijn. Een score van 70, nog niet voldoende, maar nog steeds een opgaande lijn.

Maandag 9 juli 2018
Na het onkruid wieden, boek van de bieb lezen, tijd voor Max is het nu tijd om niet voor practise, maar voor certification te kiezen. Net als in het echt. 40 vragen, 2 uur de tijd. We zullen zien...  Ditmaal heb ik een score van 90, ruim voldoende. Toch bij een aantal vragen nog getwijfeld. De 4 fouten die ik had waren: TcpListener (moest Start). Windows 8 app, eerst unloaden, en als laatste reference naar Windows.winmd. Een eigen unmanaged class, je moet eerst Dispose(true) en vervolgens GC.SuppressFinalize (ik had ze omgedraaid). En de laatste, het aanmaken van een DLL die als COM dll gebruikt moet kunnen worden, ik had de tlbexp nog moeten toevoegen.

Woensdag 11 juli 2018
Gisteren een certificaat-vrije-dag. Voetbalwedstrijd België-Frankrijk gezien (eigenlijk zonde van de tijd). Vandaag, woensdag, wel aan de bak. Eerst nog een vlucht met de drone (en m kwijtraken in een stuk grasland..), bij iemand langs gaan die per ongeluk het postvak in het leeg gegooid, planten water geven, bibliotheekboek lezen. Dus 22.25 uur nog aan de slag... Zoals duidelijk mocht zijn was vanavond een snelle flow door de vragen. En dat merk je, want ik heb te weinig goed, een score van 70. Wat heb ik fout? 12 stuks. Morgen beter doen...

Donderdag 12 juli 2018
Nog een klein weekje de tijd... Vandaag de PDF van CertLeader doorgenomen. Bevat "dumps", dus ook vragen waarbij codevoorbeelden missen, je drag-en-drop-vragen hebt die er niet in staan. Dus een groot deel, daar heb ik eigenlijk niets aan. Maar goed, 103 pagina's, misschien steek ik er toch nog wat van op. Bepaalde items komen terug. Zoals de first in, first out collectie, dat is de Queue. Het benaderen van data in een Access 2013 database, wat schijnbaar het snelst gaat met een DbDataReader. De vraag over een langdurend proces komt ook regelmatig terug (SuppressFinalize). Wie weet kom ik tijdens het examen wat tegen, waarvan ik denk, dat heb ik een keer gelezen. 

Woensdag 18 juli 2018
Door met de vragen. Vanavond 10 fout.

Donderdag 19 juli 2018
Vanavond alle 154 vragen doornemen. Vraag 3 fout. Gaat over eventhandler binnen de eigen class bij een mousemove. Moet public event EventHandler<MouseEventArgs> MouseMove; zijn. Vraag 19 fout. Linq selectie. Niet goed gelezen, je moet dat ding Naam = ... en niet l.Naam = .... Dom-dom-dom! Vraag 20 fout. Nu is duidelijk waar je de checked voor gebruikt. Hiermee laat je de CLR een OverflowException genereren indien calculaties verkeerd gaan, oftewel "bounds breken". Deze validatie is zwaar, daarom wordt dit niet als standaard gebruikt.

Vraag 32 fout. Een externe niet-thread-safe logger. Declaratie juist met private static Threadlocal<CompanyLogger> logger; maar de initialisatie fout. Dit moet logger = new ThreadLocal<CompanyLogger(()=>new CompanyLogger()); zijn.

Vraag 36 fout. Je hebt een class waarbij je telt hoevaak deze aangemaakt is. Deze werkt met meerdere threads. Je zou dus moeten locken. Ik twijfelde over de interlocked, heb die niet gekozen, maar dat was wel het juiste antwoord. Uitleg is wel duidelijk. Als het een reference type geweest zou zijn, dan had je wel met lock(...) kunnen werken. Omdat het nu een integer is, een value-type, kan dat niet.

Vraag 40 fout. Lock zetten, gebruik ik een public object. Moet een private object zijn, je wilt dat ding exclusief zelf gebruiken. Dom-dom-dom.

Na 40 vragen 6 fouten, dat levert een score van 85 op. Hiermee zou ik geslaagd zijn. Als het morgen ook zo gaat, zul je mij niet horen klagen :)

We gaan nu dus door, nog 114 vragen te gaan.

Vraag 47 fout. Een IDisposable die doorgegeven wordt. Wilde al met WeakReference werken, alleen kan ik de checkboxen niet meer aanklikken? :$

Vraag 50 fout. Een bekende vraag over de telefoonnummer-formatter. Ben ik 1 vergeten, namelijk de GetFormat-functie. Die moet er ook bij.

Vraag 51 fout. Had al gezegd dat ik de StringBuilder moest gebruiken, deed nu weer de string.Concat. Jammer.
Vraag 52 fout. Vergelijkbare vraag, wederom geen StringBuilder gekozen terwijl dit wel het juiste antwoord is.

Vraag 53 fout. We blijven nu fouten opstapelen. In dit geval de controle op de lengte van een StringBuilder, dat moet de MaxCapacity zijn.

Vraag 56 fout. Weer niet goed gelezen. Je definieert een interface. Daar moet je geen public voor de items zetten.

Vraag 62. Omdat ik terug gegaan ben naar de vorige vraag, kan ik de items niet meer aanklikken. Ik had de juiste keuze gemaakt...

Vraag 66 fout. Het statement : where T : INotifyPropertyChanged, new() moet achteraan, ik had deze nog voor het overerf-deel.

Vraag 70 fout. De vraag over Point2d en Point3d en het omzetten/declareren als types. Juiste antwoorden zijn de Point3d .. = new Point2d(...) en de andere
met expliciete Point2d x = (Point2d)... en Point3d x = (Point3d) ...

Vraag 76 fout. Een eigen CompareByAttribute. De private variabele order heeft geen get/set nodig, want dit doe je in de constructor.

Vraag 84 fout. Komt waarschijnlijk omdat het laat is. Natuurlijk moet de getter/setter public zijn...

Vraag 85 fout. Protected internal bij de constructor was goed, maar ik moest ook nog de class zelf aangeven, die is (natuurlijk) public.

Vraag 86 fout. Implementatie van 2 interfaces. Bij de ene expliciet welke interface je implementeert, bij de andere impliciet.

Vraag 88 fout. Gaat goed met de internal en private, alleen met ik de property Account wel public maken, die had ik iets teveel afgeschermd.

Vraaga 102 GOED. Encryptie met een shared key. Gekozen voor Ryndeal.

Vraag 108 fout. Maken van certificaat. CN=test moet het zijn.

Vraag 116 fout. Een Windows 8 applicatie met globalisatie. Unload het project, zet targetplatform in .csproj, reload het project en voeg dan een
referentie toe naar Windows.winmd.

Vraag 119 fout. Bij het wegschrijven naar het Eventlog, moet je wel een Source opgeven.

Vraag 129 fout. XML waarbij releasedatum leeg met 2013 gevuld moet worden. Je moet goed kijken wat geselecteerd wordt, de node en niet het attribuut...

Vraag 136 fout. Vraag met 2 functies en een logfunctie. Hier moet (natuurlijk) de suppress transactie gebruikt worden.

Vraag 139 fout. Het is twaalf uur geweest, anders had ik wel gezien dat het SQL-statement een FOR XML AUTO was. Dan moet natuurlijk ExecuteXmlReader gebruikt worden...

Vraag 142 fout. Stuk code om een XML op te bouwen.

Vraag 149 fout. BinaryReader om strings te lezen, kan gewoon met een >ReadString()-functie...


We zijn bij het einde. Bijna kwart over 12, een score van 82.47 procent, meer dan de minimale 80%. Hopelijk gaat het bij het echte examen ook zo goed!

Vrijdag 20  juli 2018
De dag van de waarheid. In de auto naar Groningen, nog steeds tropisch weer, in het lokaal waar het examen gehouden wordt is het gelukkig koel. Twee uren de tijd, ongeveer een uur en een kwartier erover gedaan. Op het kladbriefje erbij turven wat ik volgens mij goed en fout heb. Bij de proefexamens is het minimumaantal 800, in het echt is dat 700. Na afronding krijg ik de melding dat ik geslaagd ben, ik heb 757 punten behaald. Op alle onderdelen gelijkwaardige scores. In de wolken hiermee! Kort samengevat is het dus een kwestie van veel oefenen, goed lezen en bij het examen "rustig aan" doen. Op naar de volgende examens!