Závěrečný test

Struktura testu:

  • 2x příklad / 5b
  • 8x lehčí otázka / 2b
  • 3x těžší otázka / 3b
  • čas na vypracování: 60/90 minut

Otázky

Principy objektového programování

  • Jaký je rozdíl mezi třídou a objektem?
  • Jak je určena viditelnost členských proměnných a metod?
  • Jaký je rozdíl mezi členskými metodami (a proměnnými) třídy a objektu?
  • Jaký je rozdíl mezi klíčovými slovy protected a private?
  • Co je polymorfismus a jak je ho dosaženo?
  • Co je to bázová třída a čím se vyznačuje?
  • Uveďte příklad deklarace plně virtuální metody?
  • Co je to implicitní konstuktor?
  • Co je to kopírovací konstruktor?
  • Jaké jsou možnosti dědění? Uveďte příklady.
  • Co je to virtuální dědění a k čemu je dobré?
  • Které vlastnosti rodiče potomek nedědí?
  • Co je to přetížení? Uveďte příklad (několik řádek kódu, ze kterých bude zřejmé, o co jde).
  • Jaký je rozdíl mezi přepsáním (override) a přetížením (overload)?
  • Co je vazba typu kompozice? Uveďte příklad (několik řádek kódu, ze kterých bude zřejmé, o co jde).
  • Co je vazba typu asociace? Uveďte přiklad (několik řádek kódu, ze kterých bude zřejmé, o co jde).
  • Co reprezentuje klíčové slovo this?
  • Jaký je rozdíl mezi referencí a ukazatelem?
  • Jaký je rozdíl mezi mělkou a hlubokou kopií?

Programování v C++

  • Napište příklad načteni hodnoty typu int ze standarního vstupu pomocí proudového operátoru. Jak lze ošetřit správnost vstupu?
  • Jak se v C++ provádí přetížení operátoru? Uveďte příklad.
  • Jaké operátory nelze v C++ přetížit?
  • Jak a kdy se volá konstruktor a destruktor?
  • Jaký je rozdíl mezi objektem alokovaným v zásobníku a objektem dynamicky alokovaným na haldě?
  • Jaký je rozdíl mezi operátory delete a delete[]?
  • Jaká je návratová hodnota destruktoru?
  • Co je třeba zajistit při dynamické alokaci? Uveďte příklad.
  • Co je to výjimka a k čemu je dobrá? Uveďte příklad.
  • Kolik výjimek je možné v programu ošetřit?
  • Co je to generická funkce?
  • Jak lze vytvořit explicitní instanci generické funkce? K čemu je to dobré?
  • Jak jsou obvykle parametrizovány šablony tříd?
  • V čem spočívá problém vícenásobného dědění? Jak je možné tomuto problému zabránit?
  • Co je to zapouzdření a čemu je dobré?
  • Jak lze využít implicitní hodnoty argumentu funkce? Uveďte příklad.
  • Jaký je rozdíl mezi deklarací třídy pomocí class a struct.
  • Co je to konverzní konstruktor?
  • Jaký je rozdíl mezi statickou a dynamickou vazbou?
  • Jaký je význam klíčového slova auto? Lze ho použít vždy?
  • Co přesouvací (move) kontruktor?
  • Co je pravidlo tří (rule of three)?
  • Jaký je tvar definice lambda funkce v C++? Uveďte příklad a popište, co funkce dělá.

STL kontejnery

  • Co je to kontejner?
  • Jaký je rozdíl mezi sekvenčními a asociativními kontejnery? Uveďte příklad.
  • Jaké jsou klíčové vlastnosti kontejneru std::vector?
  • Jaké jsou klíčové vlastnosti kontejneru std::map?
  • Jakého datového typu může být klíč kontejneru std::map?
  • Co je třeba zajistit v případě, že klíčem v kontejneru std::map je strukturovaný datový typ (např. naše vlastní třída)?
  • Jaký je význam datového typu std::pair?
  • Co je to iterátor? Uveďte příklad.
  • Jaký je rozdíl mezi konstatním a nekonstantním iterátorem?
  • Co všechno je třeba zajistit pro vytvoření vlastního iterátoru?
  • Co je range-for cyklus? Uveďte příklad.
  • Uveďte příklad použití algoritmu sort (deklarujte vektor libovolného datového typu, vložte do něj data a vektor seřaďte).

Praktické programování (Qt a související)

  • Co je to event-driven programování?
  • Jaký je rozdíl mezi událostí a signálem?
  • Uveďtě příklady událostí v Qt a jejich využití.
  • Popište systém signálů a slotů, uveďte příklad propojení.
  • Jakým způsobem lze vytvořit v Qt okno a v něm vykreslit grafickou komponentu?
  • Jak lze měnit grafickou podobu jednotlivých Qt komponent?
  • Co se časovač (QTimer), k čemu je dobrý a jak se používá?
  • Co si představujete pod pojmem MVC?
  • Jaký je rozdíl mezi UDP a TCP transportní vrstvou?
  • Co je to REST rozhraní?
courses/b2b99ppc/test.txt · Last modified: 2023/05/16 11:01 by viteks