Witam wszystkich ostatnimi czasy miałem okazje pochodzić trochę po rozmowach kwalifikacyjnych i zebrać nie małą bazę co trzeba umieć:). Mimo, że w sumie możecie być moją konkurencją to i tak postanowiłem się podzielić tym co mam:). A więc następująco:
- STL ( szczególnie wiedza na temat listy i wektora rozumieć różnice pomiędzy nimi (choćby ustawienie elementów w pamięci komputera) potrafić pokazać ich działanie), znajomość innych kontenerów i algorytmów typu sort,fill itd.
- Const ( pokazać gdzie i jak można używać stałych np jak zachowują się z wskaźnikami, kiedy się je inizjalizuje itp.)
- Polimorfizm : Funkcje wirtualne a czysto wirtualne, Multidziedziczenie, problem diamentu ( tutaj np stworzenie prostej chierarchi klas jakieś zwięrzątka (zwierze->pies->jamnik) porobić jakieś wskaźniki typu bazowego i powywoływać jakieś funkcje.
- Konstruktor kopiujący i operator przypisania : to pytanie pojawia się praktycznie zawsze aby poprawnie zaimplementować konstruktor kopiujący i operator przypisania dla klasy posiadającej np wskaźnik. Jak działają domyślnie te dwie funkcje.
- Wsiaźniki : np. mamy wskaźnik int * i = NULL; i robimy operacje i--; a następnie cout<<i; co dostaniemy , różnice pomiędzy referencją
- funkcje statyczne jak działąją (w klasach , w funkcjach, globalnie)
- znajomość obszarów pamięci : stos,sterta,obszar pamięci statycznej co gdzie i kiedy
- szablony: mniej więcej wiedzieć o co chodzi i np zaimplementować jakąś prostą funkcję typu znajdz minimum z dwóch liczb
- Dziedziczenie : kolejność wykonywania poszczególnych metod,konstruktorów,destruktorów, kolejność wywoływania na liście inicjalizacyjnej konstruktora
- Wielowątkowość ( tu zależnie od stanowiska ale rzadko o to pytają) : jak działają mutexy, co to są deadlocki, zaimplementować jakieś 2 wątki, które będą korzystały z jakiegoś konteneru i należy je jakoś zsynchronizować.
- Zadania algorytmiczne : praktycznie na każdej rozmowie dają zadanie do rozwiązania zazwyczaj coś prostego typu pozamieniać kolejność elementów tablicy czy coś w tym stylu.
- C++ 11 : typ auto, wyrażenia lambda, wielowątkowość
- Wycieki pamięci : tutaj też bardzo kładzie się nacisk żeby rozumieć co i jak. Warto też znać jakieś inteligentne wskaźniki (np. unique i shared) zazwyczaj zadanie typu znajdź wycieki
- Linux : na praktycznie każdej rozmowie w IT pytają o znajomość tego systemu więc warto znać jakieś podstawowe komendy
P.S Miło by było jakby inni też wrzucili jakieś swoje doświadczenia z rozmów:)