Jestem nieco zaskoczony, dlaczego „możesz to usunąć?” jest uważane za interesujące pytanie. Każdy, kto napisał kod COM w C ++, wie, że pierwszą rzeczą, której uczysz się pierwszego dnia podstawowego programowania COM, jest prawidłowe użycie „usuń to”. Przypuszczam, że przydatne może być ustalenie, czy powiedzmy, że ktoś kłamie na temat pisania programów COM, ale jako ogólne pytanie C ++ o wiedzy ogólnej, jeśli ktoś nie może odpowiedzieć od razu, to nie będzie dobrze dla mojego zespołu.
W każdym razie, jeśli Twoim celem jest znalezienie pytania mierzącego umiejętności C ++, wybranie jednego pytania jest niewłaściwą drogą. Obróć to. Prawidłowe pytanie, które należy zadać, to:
Jak dobry jesteś programistą C ++ w skali od jednego do dziesięciu?
To nie jest pytanie, które pozwala uzyskać odpowiedź, której chcesz. Niezależnie od tego wszyscy mówią „osiem”. Pytanie, na które otrzymujesz odpowiedź, którą chcesz, to:
OK, więc jesteś ósemką. Z jakim obszarem problemowym uważasz, że siódemka miałaby trudności z pracą?
I bum , teraz je masz. Jeśli kandydat myśli, że „coś wspólnego z rekurencją” lub „kiedy użyć wirtualnego destruktora” jest czymś, z czym siódemka ma trudności, to wiesz, że on wie trochę o rekurencji lub niszczycielach itp. i że ich wiedza nie idzie znacznie dalej.
To powinno dać ci znacznie lepszą kalibrację niż wymyślenie kilku ciekawostek. Gdybyś zmusił mnie do wymyślenia dobrego pojedynczego pytania na temat faktu dotyczącego C ++, prawdopodobnie zadałbym coś takiego: „jak zaprojektowałbyś analizator semantyczny i generator kodu dla części kompilatora C ++, który zajmuje się metodami wirtualnymi wywoływany w destruktorze klasy podstawowej? ” Powinieneś zadawać pytania dotyczące prawdziwych rzeczy, nad którymi pracujesz i na których kandydat prawdopodobnie będzie pracował. To był problem, nad którym kiedyś musiałem pracować i myślę, że dałoby to całkiem dobry wgląd w to, jak dana osoba projektuje analizatory semantyczne i generatory kodu, a także ich znajomość C ++.