Zápočtový test byl v podstatě stejný jako předchozí, akorát se mírně lišilo znění jednotlivých otázek, takže odpovědi se lišily velmi výrazně. Byly tam otázky typu:
práce se stringama nějaký append a replace, ale bylo to nad StringBuilderem (kde se výsledek operace nemusí přiřazovat a změna se provádí přímo v instanci, kde je volaná metoda, narozdíl od Stringu)
jak je velká S?, tj. nullable struct, odpovědí bylo "záleží na velikosti S"
co patří mezi hodnotové typy, na výběr byly nějaký pole, nějaký nullably, pak byte a object
pak nějaká šaškárna s interfacama a virtuálníma metodama
něco s randomama, kde byl schovaný trik:
int a, c; if (něco co vždycky vrátí true, ale je to run-time výraz) a = 1; c = a;
toto nejde zkompilovat, protože a nemusí být vždy definováno (podle kompilátoru)
další si nepamatuju
a poslední bylo za úkol naprogramovat metodu Add(K key, V value) od třídy Tree<K, V>, tak, aby to bylo správně napsané a thread-safe řešení pro přidání hodnoty s daným klíčem do binárního vyhledávacího stromu. To jsem trochu nečekal, nicméně klíčový body řešení spočívaj v:
protože se potřebuje porovnávat K, tak je nutné v hlavičce třídy napsat něco jako "where K : IComparable<K>", pak se u K "objeví" metoda .CompareTo(K), kterou jedinou lze použít na porovnávání dvou kličů
thread-safe se zařídí tak, že se ve třídě udělá nějaký objekt (je celkem jedno jaký) a celá metoda Add se obalí příkazem lock(objekt) { ... }. Nepoužívat lock(this).
házet dobrou výjimku při přidání stejný hodnoty do stromu (bylo v zadání, že každá hodnota tam smí být jen jednou), takže testovat při procházení a kdyžtak vyhodit třeba InvalidOperationException("duplicite value").
správně napsat vkládání do stromu, což narozdíl od mínění přednášejícího, prý není úplná samozřejmost
Bylo nás tam 25, na test bylo 45 minut, začalo se kolem 11:15. V 15:00 jsme si měli dojít pro výsledky. Co jsem to prohlížel (pardón za koukání do cizích testů 8) ), tak bylo 14x vyhazov, jedna jednička, pár dvojek a pár trojek. Já měl za 2. Takže bilance nic moc.