In seiner 20-jährigen Karriere in Software Design, Engineering und Management hat Andriy Syrovenko ein breites und vielfältiges Spektrum an Fähigkeiten entwickelt. Zu seinen Interessen gehören Datenbank Management Systeme, Informations- und Netzwerksicherheit, Parallel Computing, Netzwerktechnologien, VoIP, Abrechnungssysteme, Virtualisierung und vieles mehr.
Als Team Lead und Senior C ++ Entwickler führt Andriy häufig Vorstellungsgespräche. Wir haben ihn gebeten, seinen Interviewprozess für C ++ Ingenieure zu beschreiben.
Wenn ich daran denke, wie ich vor zwölf Jahren Vorstellungsgespräche führte, kann ich nur zusammenzucken. Diese Gespräche waren voller Standardfragen für C ++ Entwickler, die ich immer wieder mit einem einzigen Zweck benutzte - um meine Überlegenheit gegenüber dem Kandidaten zu demonstrieren.
Heutzutage benutze ich keine Interviewroutine mehr. Die Fragen, die ich stelle, hängen stark von dem Projekt ab, für das ich einen C ++ Entwickler einstellen muss.
Die grundlegendste technische Aufgabe, die ich den C / C ++ Kandidaten gebe, ist in ihren eigenen Worten den Begriff Pointer zu beschreiben.
Egal, ob ich mit einem Senior C ++ Entwickler oder einem Junior Kandidaten spreche, möchte mit den Grundlagen beginnen. Ich habe Ingenieure mit über 10 Jahren Erfahrung getroffen, deren Anfängerkenntnisse rostig waren, einfach weil sie diese Kenntnisse nicht in ihren Projekten verwenden konnten. Wenn einer jahrelang mit high-level Bibliotheken arbeitet, ist es nicht verwunderlich, dass er oder sie low-level C-Programmierung vergessen hat, die ein guter C ++ Entwickler normalerweise kennt. Deshalb möchte ich besonders darauf achten, dass der Kandidat, den ich interviewe, versteht was C ist.
Die grundlegendste technische Aufgabe, die ich C / C ++ Kandidaten gebe, ist in ihren eigenen Worten den Begriff Pointer zu beschreiben. Dies ist eine sehr primitive Frage, erlaubt mir aber zu verstehen, wie ein Kandidat die Sprache sieht und wie gut er oder sie die Grundlagen der C ++ Entwicklung versteht. Es ist auch universell: Jeder C ++ Entwickler sollte, unabhängig von Erfahrung , auf diese Frage antworten können.
Was ich sehen möchte ist wie Kandidaten denken und wie sie Problemlösungen angehen.
Manchmal frage ich die Kandidaten den Unterschied zwischen Big-Endian und Little-Endian Architektur zu erklären. Wenn sie danach gefragt werden, beginnen Kandidaten normalerweise mit einer Beschreibung realer Beispiele und Schwierigkeiten, die sie bei ihrer eigenen Arbeit erlebt haben. Diese Informationen erlauben es mir zu beurteilen, wie vielseitig und umfassend ihre Erfahrung ist.
Ich liebe es auch Kandidaten Aufgaben mit logischen Problemen in Bezug auf die Programmierung zu geben. Zum Beispiel könnte ich ein generisches Problem darlegen, das normalerweise mit dem klassischen merge sort Algorithmus gelöst wird. Manche Menschen erkennen es sofort und erklären, wie es funktioniert.
Im Laufe der Zeit bin ich zu dem Schluss gekommen, dass ein Mehrzweckentwickler die Art von Kandidat ist, nach der ich definitiv nicht suche.
Allerdings, ist dieser Algorithmus - obwohl er für mein aktuelles Projekt relevant ist - nicht besonders weit verbreitet, sodass die meisten C ++ Entwickler nichts über den Algorithmus wissen und um etwas Zeit bitten darüber nachzudenken. Einige können es ziemlich schnell herausfinden, während andere falsche Lösungen vorschlagen. So oder so diskutieren wir am Ende die Antworten. Diese Phase kann zwischen fünf zum zwanzig Minuten dauern. Ich bin nicht unbedingt an der richtigen Antwort interessiert. Was ich sehen möchte, ist wie der Kandidat denkt und wie seine die Herangehensweise an Probleme ist.
Ich weiß, dass in den meisten Artikel zum Thema technisches Interview zu live Coding Sitzungen geraten wird. Ich betrachte diese Übung als Zeitverschwendung
Im Laufe der Zeit bin ich zu dem Schluss gekommen, dass Mehrzweckentwickler nicht die Art von Kandidaten sind, nach denen ich definitiv nicht suche. Diese Leute sind sehr rar, und wenn man doch einen findet, erkennt man bald, dass er zu eingebildet und faul für sein eigenes Wohl ist. Solche Person in einem Team zu haben ist höchst ineffektiv. Eine viel bessere Idee ist es, jemanden einzustellen, dessen Fähigkeiten nicht so vielfältig sind, aber der bereit ist, schnell zu lernen und seinen Job mit Sorgfalt anzugehen.
Sie möchten mehr über den Aufbau eines erweiterten Entwicklungsteams bei uns erfahren?
Mehr erfahrenWenn ich mich dazu entscheide, einen Kandidaten persönlich zu treffen, kann man davon ausgehen, dass ein Lebenslauf meine Aufmerksamkeit auf sich gezogen hat und er wahrscheinlich gut passt. Das Ziel des Interviews ist es diese Annahme zu beweisen oder zu widerlegen. Darauf läuft das Interview letztendlich hinaus
Eine anderer Kandidatentyp, die Sie vermeiden wollen, sind C ++ Entwickler, die sofort über jeden neuen Trend lesen und in ihrer Arbeit sofort umzusetzen wollen. Meiner Erfahrung nach fühlen sich solche Kandidaten so selbstgefällig darüber wie fortschrittlich sie sind dass sie vergessen, dass ein Unternehmen sich über Geld verdienen kümmert und nicht über fortschrittliche Technologieverwendung.
Ich weiß, dass in den meisten Artikeln zum Thema technisches Interview empfohlen wird live Coding Sitzungen zu organisieren. Ich betrachte das aber als Zeitverschwendung. Wie sollten einer dabei die Codequalität überprüfen? Dafür ist die Probezeit vorgesehen.
Zum Schluss möchte ich noch einmal zusammenfassen, was ich über Vorstellungsgespräch denke: Wenn ich mich dazu entscheide einen Kandidaten persönlich zu treffen, kann man davon ausgehen, dass sein Lebenslauf meine Aufmerksamkeit auf sich gezogen hat und er wahrscheinlich gut passt. Das Ziel des Interviews ist es diese Annahme zu beweisen oder zu widerlegen. Darauf läuft das Interview letztendlich hinaus.