Klasický formát. Ráno v 9 sraz na chodbě, každý dostal 5 otázek vybraných na místě zkoušejícími z okruhů. Ke každé otázce příslušný zkoušející většinou vypíchnul pár věcí, které by chtěl slyšet podrobněji, a pak také zmínil čas, kdy se vrátí a projde s námi odpovědi (měli rozvrh na studenty). První zkoušení začínalo v 9:45, pak se pokračovalo rovnoměrně ve 45min intervalech (30min příprava + 15min zkoušení) až do 13, kdy měly být kolektivně ohlášeny výsledky. Rozvrh ale byl spíše orientační - kdo byl připraven, mohl zamávat a byl vyzkoušen dříve. Po posledním zkoušení šlo odejít na oběd bez omezení.
Samotné zkoušení probíhalo hodně závisle na zkoušejícím. Někteří si nejprve přečetli papír, který jsem v průběhu přípravy popsal, a pak se doptávali; jiní dávali přednost tomu, abych povídal hned od začátku a papír používal spíše jako osnovu v případě výpadku. Výsledkem každého zkoušení byla známka 1-4, kterou si zkoušející zaznamenal do privátní tabulky. Tyto známky ovšem zřejmě byly pouze informativní, protože oficiálním výsledkem zkoušky byla právě jedna známka, která byla vytvořena na základě neznámého klíče (spekulace: zřejmě průměr zmíněných 5 známek). Kromě tabulky možná roli hrály i informace o studiu - každý student měl v deskách, do nichž komise zapisovala zadané otázky, vytisknutý výpis předmětů ze SISu, průměr, příznak zda už má obhájenou diplomku, a příznak zda má šanci získat vyznamenání. Lze spekulovat, že tyto informace mohly sloužit jako heuristiky při volbě otázek a rozbíjení případných remíz mezi známkami.
Zadání společné části (informatika):
Základy složitosti a vyčíslitelnosti (MJ)
popsat základní třídy složitosti a vztahy mezi nimi
z vět jsem si (kromě triviálních inkluzí) vzpomněl na Saviče, deterministickou časovou/prostorovou hierarchii a otevřenost shora v obou případech (u většiny jsem důkazy znal, nebyl ale prostor o nich povídat)
celkově velice příjemné zkoušení
Datové struktury (?)
líné a zbrklé binomiální haldy
jejich definice
k čemu se používají
operace a jejich worst case a amortizovaná složitost
ukázat příklad na nějaké malé posloupnosti operací
Zadání oborové části (softwarové systémy, zaměření systémové programování):
Systémové aspekty počítačů (Bulej)
synchronizace (obecné povídání, proč, kdy, jak)
naimplementovat v pseudokódu spin lock
naimplementovat v pseudokódu producer-consumer
řeč byla i o bariérách, condition variables a cache ping pongu
Paralelní a distribuované systémy (Zavoral)
RPC (popsat obecně)
uvést co možná nejvíce příkladů konkrétních technologií a porovnat je
vzpomněl jsem si na ORB, RMI, EJB, .NET remoting, web services a zmínil jsem i OpenMPI - to stačilo
Moderní koncepty programování (Hnětynka)
generika v objektově orientovaných jazycích
porovnat generiku v C# / C++ / Javě
byl jsem tázán, zda umím Scalu nebo Kotlin - když jsem řekl, že jsem to viděl, ale jen jsem si s tím hrál, nebylo to vnímáno jako špatná odpověď
povídání o kovarianci, kontravarianci (důležité bylo vzpomenout si na to, co je přesně co)
velká část zkoušení byla o generice v Javě (omezující podmínky, otazníček a jeho chování)
Celkově mám pocit, že jsem zkoušením prošel dost rychle. Končil jsem asi jako druhý nebo třetí v pořadí. Když jsem odcházel, bylo zkoušeno asi ještě 5 lidí - z tohoto počtu tam 1 stále byl grilován i o hodinu později, když jsem se vrátil z oběda na vyhlášení výsledků. Známky nám byly oznámeny a přímo zapsány do SISu předsedou komise.
Přeji hodně štěstím následujícím generacím!