it-swarm-eu.dev

Jaká je nejlepší otázka pro rozhovor C ++?

Pokud byste mohli položit jednu otázku programátorovi C++ na měření jejich dovedností v C++, jaké by to bylo?

Otázka, kterou považuji za nejlepší, je: Můžete nazvat „smazat toto“; uvnitř členské funkce? (vložil jsem to jako odkaz, takže si to můžete nejprve promyslet, pak přejděte na The Best C++ Interview Question - Ever! a podívejte se na správná odpověď.)

Neptám se na to, protože očekávám, že většina lidí zná odpověď. Pokud by to udělali, nebyla by to užitečná otázka. Žádám, aby zjistili, zda dokáží najít správnou odpověď a jak to dokážou.

28
David Thielen

Chtěl bych se jich zeptat na důvod, proč nelze virtuální členskou funkci použít se šablonou v C++. Samozřejmě existuje jen málo lidí, kteří mohou na otázku skutečně odpovědět okamžitě. Pokud ale respondent správně rozumí základní mechanice C++ (jak šablona pracuje v C++, jak je implementována virtuální funkce, jak kompilátor a linker generuje spustitelný soubor ze zdrojového kódu atd.), Můžete získat odpověď s příslušným krok za krokem krok vedoucí otázky.

Přidáno: Funkce virtuálního člena šablony v této odpovědi znamená funkci šablony, která je funkcí virtuální člena některé třídy - nikoli normální funkce člena ve třídě šablony. Omlouváme se za matení :(

8
summerlight

Nejlepší pohovorovou otázkou v C++ by byl programovací problém, nikoli kvízová otázka.

57
Steven Evers

Chtěl bych se jich zeptat, co se jim líbí na C++ 0x. Z toho jsem je mohl „seskupit“ do různých stereotypů:

  • super stará škola, používá kompilátory C++ ke kompilaci C kódu
  • stará škola, vyděšená (nebo nevidí smysl) STL, se změnami nedržela krok
  • miluje lambdy, miluje STL, jak se zrychluje z referenčních hodnot, velkého fanouška RAII, hot to use shared_ptr, unique_ptr atd.
  • je hořký, protože veškerý posilovací kód napsaný v posledních několika letech bude třeba upravit tak, aby používal ekvivalenty C++ 0x
  • šílený metaprogramátor šablon, který způsobí, že moje hlava vybuchne a odpoví na relativně krátkou otázku

Je pravděpodobné, že některé z těchto kbelíků jsou pro vás perfektní a některé jsou „díky za vniknutí“. Jako otázka, která vám rychle poskytne spoustu informací, to je můj vítěz.

32
Kate Gregory

Jsem poněkud zmatený, proč „to můžete smazat?“ je považována za zajímavou otázku. Každý, kdo napsal kód COM v jazyce C++, ví, že první věcí, kterou se v den jeden ze základních programování COM naučíte, je to, jak správně použít „odstranit“. Předpokládám, že by mohlo být užitečné určit, zda, například, někdo leží na svém životopisu o tom, že má napsané programy COM, ale jako obecná znalost C++ otázky, pokud by někdo nemohl odpovědět okamžitě, pak se nehodí. pro můj tým.

Pokud je vaším cílem přijít s otázkou, která měří dovednosti C++, pak vybrat jednu otázku je špatný způsob. Otočte to. Správná otázka je položit:

Jak dobrý je programátor C++ na stupnici od jednoho do deseti?

To není otázka, která vám dá odpověď, kterou chcete. Každý říká "osm" bez ohledu na to. Otázka, kterou dostanete odpověď, kterou chcete, je:

Dobře, takže jsi osm. Co je problémovou oblastí, se kterou si myslíte, že by se sedmičkem bylo těžké pracovat?

A boom, teď je máš. Pokud si kandidát myslí, že „něco společného s rekurzí“ nebo „kdy použít virtuální destruktor“ je něco, s čím má sedm těžké, pak víte, že ví něco o rekurzi nebo destruktorech nebo cokoli , a že jejich znalosti nejdou dále.

To by vám mělo poskytnout mnohem lepší kalibraci, než přijít s nějakou triviální otázkou. Pokud byste mě přinutili přijít s dobrou jedinou otázkou o skutečnosti o C++, pravděpodobně bych se zeptal něco jako „jak byste navrhl sémantický analyzátor a generátor kódu pro část kompilátoru C++, která se zabývá virtuálními metodami? nazývá se destruktor základní třídy? “ Měli byste klást otázky, které mají co do činění se skutečnými věcmi, na kterých pracujete, a na kterých kandidát pravděpodobně bude pracovat. To je problém, na kterém jsem musel jednou pracovat, a myslím, že by to docela dobře prozkoumalo, jak člověk navrhuje sémantické analyzátory a generátory kódu, a také jejich znalosti C++.

28
Eric Lippert

Pro zábavu jsem měl s tímto malým dítětem navíjení programátory C++:

Proč to běží do nekonečné smyčky (a ano, je to zadáno správně)?

int x=0;
while (x<3) {
  x = x++;
}

Je úžasné, kolik jich bylo zakopnuto. Samozřejmě to už nemohu použít poté, co se objevilo na Stack Overflow . Mutter ... mutter ...

(Chcete-li získat správnou odpověď, přečtěte si přiznání a určitě si přečtěte komentáře)

Přidána bonusová otázka

K dispozici je historická klasika FizzBuzz (jak je uvedena v nyní slavném článek o kódování horor ). Vlastně jsem to nikdy v rozhovoru nepoužil, ale po tom, co jsem ho jednou obědval kolem vývojového týmu, byly obě poledne ... výsledky ... překvapivě přesné.

Vyznání

Byl jsem dohnán na standardní odpověď „x ++ vrací původní hodnotu“. Správná odpověď je však, že chování není definováno kvůli sekvenčním bodům. Nikdo se nezmínil o sekvenčních bodech ve všech časech, kdy jsem to používal, dokud jsem je sem neposlal.

Byl jsem vzdělaný a opravdu bych chtěl poděkovat všem, kteří si udělali čas na vyjádření.

14
Gary Rowe

První věc, kterou si položit, je jednoduchá otázka o ukazatelích. Byl jsem ohromen, když jsem viděl, kolik lidí, kteří tvrdí, že znají C++ nebo, ještě horší, C, to nedokážou odpovědět. Pak bych položil jednoduchou otázku o virtuálních funkcích. Tato kombinace vám velmi rychle řekne, zda osoba skutečně zná C++.

8
Dima

Povězte mi o konstruktoru kopií.

7
fredoverflow

To hodně závisí na tom, jaký druh C++ je napsán ve vaší společnosti. (Když jsem musel najímat programátory v C++, nikdy jsem se nezeptal na delete, protože jsem se jich zeptal na techniky, abych se vyhnul nutnosti psát delete dohromady.)

V ideálním případě chcete najmout lidi, kteří píšou kód nad úrovní toho, co váš tým v současné době píše, ale ne příliš vysoko nad ním, pokud ho nechcete kombinovat s vyškolením týmu, aby ho posunul na vyšší úroveň.

7
sbi

Nejlepší otázka pro skvělého vývojáře C++ je „Řekněte mi důvody, proč bychom měli NE používat C++?“

6
amadvance

Věřím, že bych se jich zeptal, co dalšího vědí, nebo s větší pravděpodobností jim položím otázku v něčem zcela jiném.

Příliš mnoho C++ kodérů o tom, kdo má malé zkušenosti s jinými jazyky. Úzký zážitek je obvykle omezující.

6
Orbling

Nemyslím si, že existuje nejlepší otázka C++. C++ je takový velký jazyk as C++ 0X se pěstuje, že můžete být silní v určité subdoméně jazyka a nic jiného o jiné části jazyka. „Jednorázová“ otázka uplatní pouze něčí znalost malé části jazyka a riskuje přehlédnutí znalosti jiných aspektů jazyka.

4
sashang
4
karlphillip

Moje oblíbená otázka je jednoduchá:

a) Začali jste s C a pak jste přešli na C++?

b) Pokud ano, jaké prvních pár věcí jste se naučili dělat jinak?

Tato odpověď mi obvykle dává informace o tom, jak programátor přistupuje k C++ a jeho pochopení OOP a C++ obecně).

neexistuje žádná „správná“ nebo „špatná“ odpověď, ale obvykle je to skvělý způsob, jak zjistit, odkud kandidát pochází.

3
mohaps

Jak implementujete virtuální funkce v C++, vysvětlete scénář skutečného světa.

1
user616

V tuto chvíli bych řekl: „Jak byste postupoval při implementaci konstruktéra tahu pro kontejner?“

Mým důvodem je to, že protože konstruktéři pohybu jsou rysem příštího standardu, a nikoliv současného, ​​bude odpověď kandidáta naznačovat, zda dotyčný vývojář aktivně sleduje znalosti o svém jazyce nebo se jen drží triků, které znají.

1
Kaz Dragon

Myslím, že bych se zeptal na jejich názor na design, řekněme, std::string. Také bych se jich zeptal, jestli použili jiné designy (např. MFC/ATL CString, wxString, atd.) A za předpokladu, že ano, požádejte je o porovnání a srovnání návrhů.

Řetězce jsou dostatečně rozšířené, že téměř kdokoli se skutečnými zkušenostmi s používáním C++ měl použít alespoň jeden nebo dva z výše uvedených. Téměř všechny designy obsahují některé kompromisy mezi teoretickou čistotou a praktickým používáním. Některé mohou fungovat opravdu dobře, ale pouze pokud jsou použity přesně tak, jak byly zamýšleny, zatímco jiné si vyměňují větší univerzálnost pro nějakou možnou nemotornost. Stručně řečeno, téměř kdokoli, kdo má skutečné zkušenosti měl by být schopen vyjádřit nějaké smysluplné názory na své návrhy a tyto názory by vám měly říci slušnou částku o tom, jak si myslí, jak oni návrhový kód, stupeň, v jakém si cení pragmatismu versus teoretické čistoty atd.

1
Jerry Coffin

Vlastně bych osobě představil kousek kódu z jiného programovacího jazyka, který byl objektově orientovaný a pokud možno ne na seznamu jazyků, které znají. Kód by měl představovat jednoduchý úkol provedený v tomto jazyce.

Smyslem by nebylo zjistit jejich znalost C++, ale zjistit, jak dobře rozumějí programování. Když pochopíte základní pojmy programování, můžete vyřešit problémy.

1
Paul