Wpis z mikrobloga

Podrzućcie jakieś ciekawe, albo zaawansowane(albo nie podstawowe) pytania/zadania rekrutacyjne dla programisty C++.
Mogą być też z rzeczy powiązane np. linuks, narzędza, algorytmy.

Moje:
1. Zaimplementuj shared/unique pointer
2. Jakie znasz optymalizacje i flagi kompilatora. Czyli O2, O3, tco, sso, Wall, Wpathetic itd.
3. Opisz cały proces budowania - kompilacja, linkowanie itd.
4. Ogólnie o architekturze komputera i cache`u, dlaczego jest to ważne, hot loopy, false sharing.
5. Omów czym jest std::unordered_map i porównaj jego złożoność do std::map

Nie przygotowuje się do rozmowy, tylko chcę się czegoś ciekawego dowiedzieć, bo sprawia mi to dużo frajdy, a coraz rzadziej spotykam fascynujące tematy.
#cpp #programowanie
  • 22
@Malkof, @dupasmoka
Edit: Najprostsza implementacja sharedptr jest raczej trywialna. Jeśli w grę wchodzą jakieś optymalizacje, to owszem robi się trudniej, ale nie przesadzałbym z twierdzeniem że seniorzy się wypieprzają na czymś takim.

Btw, kolejne pytanie - czym się różni shared
ptr od zmiennej globalnej?
3. Opisz cały proces budowania - kompilacja, linkowanie itd.


@Malkof: przed kompilacja masz jeszcze parsowanie, tokenizacje, budowanie drzewa ast, desugaring, budowanie ir (intermediate representation), optimization passes i dopiero wtedy komplikacja
1. Czym się różni wątek od procesu?
2. Jak działa pamięć wirtualna?
3. Jak działa infrastruktura klucza publicznego?
4. Jakie znasz techniki służące poprawianiu jakości wytwarzanego kodu?
@dupasmoka:

jak znalezc bottlenecki i wycieki pamieci


I jak na to odpowiedź? Mi do głowy przychodzi tylko używanie sanitizerów i profilerów.

@west4321:

jakie znasz techniki służące poprawianiu jakości wytwarzanego kodu?


Testy różnego typu, code review, tdd?

@groman43:

czym się różni shared_ptr od zmiennej globalnej?


Długością życia zmiennej - jej miejscem w pamięci i dostępem do niej?

2. Masz osiem kulek, z czego jedna ma inną wagę niż wszystkie pozostałe.
@Malkof: Przyszło mi do głowy kilka pytań. Niektóre się nie nadają na rozmowę, ale na pewno są ciekawe.
Budowanie:
1. Extern i static, czyli czym różni się external/internal linkage
2. Anonymous namespace - jak działa, kiedy i po co się to stosuje
3. Jak zainkludować header biblioteki C i dlaczego samo #include nie wystarczy
4. Dlaczego definicje szablonów umieszcza się w plikach nagłówkowych i co by się stało gdyby definicję umieścić