Czy kandydat na staż powinien rozumieć sfinae, generyczne szablony i podobne, zaawansowane terminy?

0

hejo,

niedługo będę chciał się sprawdzić czy nadaję się na staż w C++ i w związku z tym będę rozsyłać cv, ale nie jestem pewien czy już się nadaję. Ostatnio trochę zacząłem się więcej uczyć szablonów, ale ciężko mi to idzie, szczególnie mam problemy ze zrozumieniem sfinae i tag dispatching, bo na jakie źródło nie trafię, to zamiast jak chłop chłopowi na chłopski rozum wytłumaczyć czy dać łatwe przykłady i powoli zwiększać trudność, to od razu wall of text z dziesięcioma szablonami i masz sobie rozkminiaj.

Wkurza mnie to, bo to oznacza, że na pewno duuużo czasu będę musiał poświęcić żeby w końcu zrozumieć termin, a jak wspomniałem już niedługo chcę wysyłać cv.
a w ogóle sfinae to zaawansowana rzecz czy taki normal stuff, który każdy programista z czasem poznaje?

Więc mam takie pytanie: próbować już czy jednak dogłębnie zbadać temat i nie ryzykować ośmieszenia się niewiedzą? nie chcę wyjść na jakiegoś nieroba czy coś.
pozdro.

3

tak na poważnie czy jaja se z nas robisz? umieć to musisz UŻYWAĆ szablony

3

Tag dispatching to dość zaawansowany koncept i dość ciężko go pokazać na trywialnym przykładzie. Ale osobiście od stażysty bym tego nie wymagał.

Zrozumienia czym są szablony - tak. Znajomości sztuczek metaprogramowania - nie (ale już wykorzystanie kodu ich używającego tak, bo to często jest niewidzialne).

0

nie, pytam na poważnie, bo już sam zgłupiałem co ja powinienem umieć. Boję się sytuacji gdzie nie dostarczę jakiegoś taska bo zwyczajnie nie poradzę sobie z kodem i zostanę wywalony.

3

Zdecydowanie NIE.
Zdecydowanie nie wymagałbym pisania od własnych szablonów, gdzie jest CRTP lub SFINAE.
Wyjątkiem było by użycie CRTP: std::enable_shared_from_this

Takie wymagania doprowadziły by do pojawienia się w kodzie, kwiatków trudnych w utrzymaniu.

Standardowe pytanie dla stażysty/początkującego (to co mi przychodzi teraz do głowy):

  • co to jest polimorfizm, przykłady
  • co to jest vtable
  • kiedy używać new/delete (nigdy)
  • co to jest undefined behavior i czemu służy/szkodzi
  • algorytmy STL
  • kontenery

Jak prowadziłem rekrutacje ludzie wykładali się na powyższych pytaniach (jeden gość twierdził w CV, że ma 5 lat doświadczenia).

Z bardziej (średnio) zaawansowanych rzeczy, które dobrze by było jakby stażysta umiał (a często nie zna):

  • pisanie testów - gtest
  • git - wszystkie kursy programowania dla początkujących ignorują kontrolę wersji i często trzeba szkolić początkujących
0

ok, dzięki za odpowiedzi, trochę się uspokoiłem. Pytanie o ten przypadek w crtp na pewno by mnie zaskoczyło, ale zapiszę sobie. W każdym razie mam jakąś tam poszlakę i muszę poćwiczyć te wzorce i idiomy z szablonami, bo to największa moja słabość haha. Dzięki za pomoc.

3

FYI najgorsze co możesz zrobić podczas rekrutacji to wciskać kit, że coś umiesz bardzo dobrze, a potem wyłożyć się na prostym pytaniu.
Lepiej mówić, że znasz jakiś koncept, ale go nie opanowałeś nie masz z nim doświadczenia itp.
Wiedza: "wiem czego nie wiem, nie umiem", też jest bardzo cenna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1