Napsal jsem blog post zde: https://hudecekpetr.cz/cs/magisterske-s ... a-matfyzu/
Samotné otázky, které jsem měl, byly:
Datové struktury: Splay stromy. (bez upřesnění)
Definoval jsem je, ukázal jsem, jak fungují operace insert, find a delete a rotace zig, zig-zig a zig-zag. Nastínil jsem, že důkaz jde přes potenciálovou metodu, a za potenciál bereme logaritmus velikosti podstromu v uzlech, ale důkaz samotný jsem neznal a i ideu bych měl problémy dát dohromady. Řekl jsem, že splay strom je užitečný pro situaci, kdy se vyhledává malá podmnožina prvků. Řekl jsem časovou složitost, amortizovanou a nejhorší, ale nedokazoval ji. Zkoušející se ptal na definici amortizované složitosti.
Složitost a vyčíslitelnost: Algoritmicky nerozhodnutelné problémy. (bez upřesnění)
Definoval jsem rozhodnutelný a rozpoznatelný problém/jazyk/množinu, kódování Turingových strojů. Řekl jsem bez důkazu Postovu větu a Riceovu větu a prohlásil, že diagonalizační jazyk, univerzální jazyk a jazyk halting problému jsou nerozhodnutelné a tyto jazyky definoval. Provedl jsem úplný důkaz nerozhodnutelnosti diagonalizačního jazyka. Zkoušející se ptal na nerozhodnutelné problémy nesouvisející s Turingovými stroji (neznal jsem) a na příklad rozpoznatelného jazyka, který není rozhodnutelný (řekl jsem halting problém).
Databáze: Rekurze v SQL. (bez upřesnění)
Řekl jsem, že SQL rekurzi časem dostalo i do standardu, že bez ní nelze řešit některé úlohy jako je tranzitivní uzávěr, a dal jsem příklady dotazů, kde se rekurze hodí. Ukázal jsem, jak lze syntakticky rekurzi provést na dvou příkladech zapsaných v SQL pomocí Common Table Expressions, a jak bude vyhodnocena. Zkoušející se ptal, co se stane, když bude rekurze nekonečná (databázový systém ji po konfigurovatelném počtu iterací zastaví), a v čem je Datalog silnější než SQL rekurze (nevěděl jsem; odpověď je, že v Datalogu je možné rekurzí naplňovat více tabulek současně).
Analýza a architektury software: Servisně orientované architektury. (zkoušející upřesnil, že chce praktickou a principielní definici, že chce vlastnosti SOA systémů a jejich výhody, a technologie užitečné pro SOA).
Řekl jsem k tomu hodně věcí. Zkoušející měl otázky, které jsem měl problémy odpovědět.
Rozšířené programování: Generické programování. (zkoušející upřesnil, že chce vědět, co to je a k čemu to je, a výhody a nevýhody přístupů k generice v různých, alespoň dvou, programovacích jazycích)
Dal jsem nějakou jakž takž definici, řekl jsem, k čemu je výhodné a jak se většinou používá (kolekce, kontejnery). Popsal jsem rozdíly mezi C++ (compile-time šablony), Javou (type erasure) a C# (runtime konstrukce typů) a nějaké výhody a nevýhody každého. Zkoušející se ptal na zásadní rozdíly mezi C++ a ostatními dvěma jazyky a na to, jak funguje kovariance a kontravariance.