Odpovědi na krátké otázky by obvykle měly být krátké a vejít se do věty nebo dvou. Pokud vám přijde, že správná odpověď je komplikovaná, pokuste se vystihnout podstatu věci – například rozdílů mezi new
a malloc
je mnoho, ale ten největší a nejdůležitější je, že new
zavolá konstruktor; věci jako že je to operátor, který se dá přetížit, nebo že je to konstrukt z C++, zatímco malloc
je z C, jsou vedlejší.
Odpovědi, které tu jsou uvedeny, nejsou jediné možné, ale vaše odpovědi by měly být podobné. Tyto otázky jsou obvykle hodnoceny jedním bodem.
Jaký je rozdíl mezi třídou (
class
) a strukturou (
struct
)?
řešení
Pouze ve výchozí viditelnosti členů, třída má private
a struktura má public
.
Jak se liší přístupová oprávnění
public
,
private
a
protected
?
řešení
public
- neomezený přístup, protected
- pouze pro třídu a její potomky, private
- pouze pro třídu.
Umožňuje C++ vícenásobnou dědičnost?
řešení
Ano.
Čím se liší enum a enum class?
řešení
Enum class vynucuje typovou bezpečnost při používání prvků enumerace.
Které typy jsou předávány hodnotou a které referencí?
řešení
Všechny se předávájí hodnotou.
V jakém pořadí jsou vyhodnoceny argumenty funkcí a metod?
řešení
Pořadí není určeno.
Co znamená RAII?
řešení
Resource acquisiton is initialization.
K čemu slouží RAII?
řešení
K automatickému uvolnění prostředků, např. paměti.
K čemu slouží klíčové slovo const?
řešení
Označuje konstatní, tj. neměnitelné typy (proměnné).
K čemu slouží konstruktory?
řešení
Předepisují funkci prováděnou při vzniku objektu.
Zavádějí invarianty objektu.
K čemu slouží destruktory?
řešení
Předepisují funkci prováděnou při zániku objektu.
Ukončují invarianty objektu.
Co znamená “resource leak”?
řešení
To, že některé prostředky nejsou nikdy uvolněny, např. paměť.
V jakém pořadí se volají destruktory datových prvků třídy?
řešení
V opačném pořadí, než byly deklarovány v těle třídy.
Jaký je rozdíl mezi procesem a vláknem?
řešení
Proces se skládá z vláken, procesy mezi sebou nesdílejí paměť (vlákna ano).
K čemu slouží klíčové slovo
mutable
u lambda funkce?
řešení
Určuje, že v těle lambda funkce můžeme měnit hodnotu proměnných zachycených kopií.
Můžeme šabloně dát i jiný argument, než typ?
řešení
Ano, například int
Jaký je rozdíl mezi
new
a
malloc
?
řešení
new
volá konstruktory.
new
respektuje typy, tj velikost a konstruktory
Jaký je rozdíl mezi
NULL
a
nullptr
?
řešení
NULL
je makro, nullptr
je součást jazyka. Nemůže dojít k implicitní konverzi nullptr
na int
.
Jaké jsou úrovně záruky výjimkové bezpečnosti (exception safety)?
řešení
Žádná, základní, silná, neházející.
Weak, Basic, Strong, No-throw.
Co se stane, pokud nesynchronizujeme vlákna při přístupu do paměti?
řešení
Nastane nedefinované chování v podobě tzv. race condition.
Zalomený řádek znamená alternativní odpověď.