DevSkiller-LogoTalentBoost-LogoTalentScore Logo

Bildschirm C- und C++-Entwickler Skills

März 20, 2019
C und C++: Interviewfragen für Software-Ingenieure

C- und C++-Entwickler erhalten nicht den gleichen Buzz wie Entwickler anderer Sprachen. Sie sind nicht so allgegenwärtig wie JavaScript-Entwickler. Sie sind nicht so gut mit heißen Themen wie Data Science verbunden wie Python-Entwickler. Sie verwenden keine so aufstrebende Technologie wie Kotlin-Entwickler. Aber im Gegensatz zu den Technologien, die alle Schlagzeilen machen, sind C und C++ nach wie vor die Arbeitspferde vieler essentieller Systeme sowie von Bereichen wie Embedded Technology und Gaming. Folglich gibt es immer noch eine große Nachfrage nach C- und C++-Entwicklern. Es stellt sich also die Frage, wie Sie die Fähigkeiten von C- und C++-Entwicklern überprüfen können?

C und C++ gibt es schon seit langer Zeit, daher gibt es eine Menge über sie zu lernen. Es gibt verschiedene Versionen, Technologien und Ressourcen, die für diese Tech Stacks entwickelt wurden. Sie müssen spezifische C- und C++-Interview-Fragen verwenden, da die, die Sie für Sprachen wie Java verwenden, einfach nicht ausreichen. Es gibt Konzepte, die Sie außerhalb von C in C++ einfach nicht sehen werden. Darüber hinaus brauchen Sie den richtigen Tech-Screen, um zu sehen, ob jemand C- oder C++-Kenntnisse hat. Aber keine Sorge, in diesem Beitrag erfahren Sie alles, was Sie über das Screening und die Einstellung von C- und C++-Entwicklern wissen müssen.

In diesem Handbuch finden Sie:

Was sind C und C++?1. Was ist C und was ist C++?

Das erste, was Sie verstehen müssen, ist, dass C und C++ nicht dasselbe sind. Wie Sie sich vorstellen können, gibt es C schon ein bisschen länger als C++. Eingeführt 1972, wurde C bis zum Ende des Jahrzehnts zum De-facto-Standard. Die erste C++-Version erschien erst 1984. Aber auch hier dauerte es nur 10 Jahre, bis es sich durchsetzte. In den frühen 90er Jahren hatte C++ eine große Popularität erlangt.

1.1 Was ist der Unterschied zwischen C und C++?

Zum einen ist C eine prozedurale Sprache. C++ hingegen ist eine Sprache mit mehreren Paradigmen. Sie eignet sich hervorragend für die prozedurale und objektorientierte Programmierung. Darüber hinaus machen neue Funktionen sie zu einer praktischen Wahl für die funktionale Programmierung. In den meisten realen Fällen werden C++-Programme alle verfügbaren Programmierparadigmen bis zu einem gewissen Grad verwenden. In der Tat werden Sie oft einell drei Paradigmen miteinander vermischt.

Die Programmierparadigmen sind nicht der einzige Unterschied zwischen den beiden. C ist ziemlich nah an der Maschinenebene und wird manchmal als "portabler Assembler" bezeichnet. C++ hingegen ist näher an höheren Sprachen wie Java, C# und D (obwohl es noch einige der Low-Level-Funktionen von C beibehält).

1.2 Was ist bei C und C++ ähnlich?

Abgesehen von diesen Unterschieden gibt es natürlich auch einige Gemeinsamkeiten. Die von diesen beiden Sprachen verwendete Syntax wird oft als "Syntax der C-Familie" bezeichnet. Da C so beliebt war, finden Sie tatsächlich, dass die C-Grammatik und -Syntax eine Grundlage für eine Reihe von Programmiersprachen wie Java, C#, C++, D, Objective-C, JavaScript und viele mehr ist.

Wofür werden C und C++ verwendet?2. Wofür werden C und C++ verwendet?

2.1 Wofür wird C verwendet?

Weil sie so nah an der Maschinenebene sind, werden C und C++ hauptsächlich für Anwendungen verwendet, bei denen die Verarbeitungsgeschwindigkeit und die manuelle Abstimmung wichtiger sind als die Entwicklungszeit. Dazu gehören Low-Level-Programmierung (BIOS), eingebettete Programmierung (Geräte), Systemprogrammierung (Betriebssysteme) und leistungsorientierte Programmierung (z. B. Spiele-Engines, GPU/wissenschaftliche Berechnungen, Kryptografie).

Der wirkliche Vorteil von C und C++ besteht darin, dass der Programmierer die Möglichkeit hat, zu sagen, was mit dem Programm auf der untersten Ebene, die der Maschinenebene am nächsten ist, geschieht. Auf der einen Seite verleiht dies C und C++ eine unglaubliche Leistung. Der Nachteil ist, dass es eine viel geringere Fehlertoleranz gibt, um den Code richtig hinzubekommen, da ihnen die Speicherverwaltungsfunktion von höheren Sprachen fehlt. In der Praxis bedeutet dies, dass es viel länger dauern kann, funktionierenden Code in C und C++ zu schreiben als in einer höheren Programmiersprache wie Java oder Python.

Da C so nah an der Maschinenebene liegt, ist es im Wesentlichen die Lingua franca der Programmierwelt. Die meisten anderen Programmiersprachen sind auf C aufgebaut und die meiste Software legt ihre Funktionen in C offen. Fast alle anderen Sprachen können C-Funktionen aufrufen.

Auf einer grundlegenden Ebene ist C ziemlich einfach zu erlernen. Seine Syntax und Grammatik sind ziemlich einfach, um die Grundlagen zu lernen, aber schwierig zu meistern. Im Gegensatz zu anderen Sprachen fehlen in C die Werkzeuge, die einem Entwickler die Arbeit abnehmen, die er normalerweise gerne vermeiden möchte.

2.2 Wofür wird C++ verwendet?

C++ wurde teilweise entwickelt, um einige der Low-Level-Probleme von C zu lösen und gleichzeitig den C-Programmierstil beizubehalten. Leider hat dies dazu geführt, dass die Lernkurve für C++ unglaublich steil ist und es eine viel expertenfreundlichere Sprache ist. Dies kann es noch schwieriger machen, eine fremde Code-Basis zu verwenden. Hilfreich ist, dass die neuen Versionen von C++ den sicheren und einfachen Einstieg in eine fremde Codebasis ermöglichen. Dennoch liegt es am Codierungsteam, die Verwendung der unsicheren Konstrukte zu vermeiden und die Regeln durchzusetzen.

Früher war C++ eine Erweiterung von C, aber das ist seit 1998 nicht mehr der Fall. Es ist jetzt eine sehr eigenständige Sprache. Der meiste C-Code lässt sich in C++ kompilieren, ohne ihn zu verändern, aber keine der beiden Sprachen ist eine strikte Untermenge der anderen. Dennoch wird die Kluft zwischen den beiden Sprachen immer größer, wenn neue Standards veröffentlicht werden.

2.3 Was ist der Unterschied zwischen C und C++?

C++ erlaubt es, die meisten C-Konstrukte und Codes als C++-Code zu kompilieren, und bietet gleichzeitig mehr Programmierwerkzeuge wie Templates, RAII (Resource Acquisition Is Initialization), Klassen, Lambda-Ausdrücke, eine größere und leistungsfähigere Standardbibliothek und ein stärkeres Typsystem.

Gleichzeitig hat C einige Werkzeuge, die C++ fehlen. Dazu gehören designierte Initialisierer und Arrays variabler Länge (VLAs). Eine allgemeine Faustregel lautet: Wenn eine C++-Umgebung vorhanden ist, dann können Sie hundertprozentig sicher sein, dass eine C-Umgebung vorhanden ist. Das Gegenteil ist nicht unbedingt der Fall.

Was sollte ein IT-Recruiter über C und C++ wissen?3. Was sollte ein IT-Recruiter über C und C++ wissen?

C hat sich schon lange nicht mehr geändert. Die letzten beiden Revisionen, C11 und C18, waren beide ziemlich unbedeutend und boten keine großen Änderungen. Auch die zukünftige C21 scheint nicht bahnbrechend zu sein.

C++ hingegen beginnt, Fortschritte zu machen, nachdem sich in den letzten zehn Jahren nicht viel getan hat. Seit C++ 11 wird nun alle drei Jahre eine Revision veröffentlicht, wobei C++ 20 pünktlich erwartet wird.

Fast alle verfügbaren Bibliotheken stellen eine C-API oder -Bindung zur Verfügung, auch wenn sie in einer anderen Sprache geschrieben sind. Für alle diese Bibliotheken kann C++ verwendet werden. Es gibt auch einige reine C++-Bibliotheken wie Boost, Qt und POCO.

3.1 Mit welchen Tools und Techniken sollte ein C- oder C++-Entwickler vertraut sein?

Das wohl Wichtigste für einen C-Entwickler ist das Verständnis für Zeigerarithmetik und was undefiniertes Verhalten ausmacht. Darüber hinaus sollte ein C-Entwickler mit der Verwendung von Debugging-Tools wie Address/Memory/UndefinedBehavior Sanitizer, Valgrind, Debuggern (z. B. GDB) und statischen Code-Analyse-Tools vertraut sein.

Ein C++-Entwickler sollte in der Lage sein, alle C-Tools sowie die Boost- und Qt-Bibliotheken gut genug zu verstehen, um sie nutzen zu können.

Darüber hinaus sagen kommerzielle und Open-Source-Projekte am meisten darüber aus, wozu ein Entwickler in der Lage ist.

Überprüfen Sie Ihre C- und C++-KenntnisseWie man die Fähigkeiten von C- und C++-Entwicklern in der Screening-Phase verifiziert

Technische Interviews sind teuer und zeitaufwändig für Sie und Ihre Kandidaten. Sie wollen nicht jeden Bewerber interviewen, der sich bewirbt. Stattdessen ist es wichtig, Ihre Bewerber zu prüfen, damit nur diejenigen, die es bis zum Vorstellungsgespräch schaffen, die für die Stelle erforderlichen technischen Fähigkeiten besitzen.

EMPFOHLENE LEKTÜRE: Vollständige Gehaltsdaten für C++-Entwickler

4. Screening eines C-Entwicklers oder eines C++-Entwicklers anhand seines Lebenslaufs

Der Lebenslauf ist der erste Ort, an dem Sie Anhaltspunkte darüber finden können, was Ihr Kandidat kann. Für einen nicht-technischen Recruiter kann dies oft ein schwieriger Einstieg sein, da die Informationen oft sehr technisch sind. Um Ihnen zu helfen, haben wir eine Liste von Dingen zusammengestellt, auf die Sie im Lebenslauf eines C- und C++-Entwicklers achten sollten.

C- und C++-Glossar4.1 C- und C++-Glossar für technische Recruiter

C-Bibliotheken Die C-Standardbibliothek

  • Die im C-Standarddokument beschriebene Bibliothek, die mit jedem Compiler ausgeliefert wird

Andere, weniger universell genutzte, aber dennoch beliebte Bibliotheken:

GTK

  • Eine Bibliothek zur Erstellung grafischer Benutzeroberflächen

Kairo

  • Eine 2d-Grafikbibliothek

ALSA

  • Eine Bibliothek zur Anbindung an die Advanced Linux Sound Architecture

BLAS

  • Grundlegende Unterprogramme der linearen Algebra. Diese Bibliothek wird für effiziente Vektor- und Matrixoperationen verwendet

GMP

  • GNU Multi Precision. Eine Bibliothek, die arithmetische Operationen auf Zahlen mit beliebiger Genauigkeit ermöglicht

cURL

  • Die Multiprotokoll-Dateiübertragungsbibliothek. Wird am häufigsten für die HTTP-Kommunikation verwendet

OpenSSL

  • Eine kommerzielle und weit verbreitete Bibliothek zur Unterstützung der Kryptographie
C++ Bibliotheken Die C++-Standardbibliothek

  • Die im C++-Standarddokument beschriebene Bibliothek, die mit jedem Compiler ausgeliefert wird

Boost

  • Eine der populärsten Bibliotheken für C++, ein Satz von mehreren Dutzend unverbundenen Bibliotheken, die in C++-Programmen frei verwendet werden können

Qt

  • Das ideale GUI-Framework für C++

STL

  • Ein umstrittenes Akronym, das normalerweise C++ Standard Library bedeutet, aber auch als Standard-Vorlagenbibliothek, als ob die Nicht-Template-Teile nicht dazugehören würden

Andere, weniger universell genutzte, aber dennoch beliebte Bibliotheken:

Eigen

  • C++-Vorlagenbibliothek für lineare Algebra (Matrizen, Vektoren, numerische Löser und verwandte Algorithmen)

GSL

  • Richtlinien Unterstützung der Bibliotheksimplementierung, empfohlen von Bjarne Stroustrup, Herb Sutter und Co. in C++ Core Guidelines

Loki

  • Entwurfsmuster

Folly

  • Ein Satz von C++11-Komponenten, die die Standardbibliothek erweitern. Entworfen mit Blick auf Effizienz und Praktikabilität. Entwickelt von Facebook

Abseilen

  • Eine Sammlung von C++-Bibliotheken, die die Standardbibliothek erweitern. Erstellt von Google

POCO

  • Eine Reihe von Bibliotheken zur Unterstützung von HTTP, Netzwerken, Verschlüsselung und Zip-Dateien

WxWidgets

  • Eine Bibliothek, die die Erstellung von systemunabhängigen GUI-Anwendungen ermöglicht

OpenCV

  • Eine Bildverarbeitungsbibliothek, die für rechnerische Effizienz mit Schwerpunkt auf Echtzeitanwendungen entwickelt wurde

OpenMP

  • Weniger eine Bibliothek, als vielmehr eine Spezifikation für Compiler, wie C++ erweitert werden kann, um einfache und gut konzipierte Parallelität zu ermöglichen

IntelTBB

  • Eine Vorlagenbibliothek für Task-Parallelität. Entwickelt von Intel
Compiler Das Werkzeug, mit dem eine ausführbare Datei (eine Anwendung) aus dem C/C++-Quellcode erstellt wird, am beliebtesten:

  • GCC - GNU Compiler-Sammlung
  • MinGW GCC - Windows-Version des GCC
  • Clang - Compiler des LLVM-Projekts
  • MSVC (auch, etwas fälschlicherweise, MSVS oder Visual Studio genannt) - Microsofts Compiler
  • ICC - der Compiler von Intel
Debugger Ein Werkzeug zum Auffinden von Fehlern in laufenden Programmen

  • Valgrind
  • GDB
  • LLDB
  • WinDBG
Code-Instrumentierung Dies ist eine Erweiterung des Compilers, um eine Anwendungsversion zu erzeugen, die auf das Finden von Fehlern statt auf die Leistung ausgerichtet ist

  • Adresse/Speicher/UndefinedBehavior Sanitizer
Statische Analyse Eine Analyse des Quellcodes in Bezug auf Bugs. Es gibt kommerzielle Software, die einige Klassen von Fehlern auf diese Weise finden kann

  • CppCheck
  • Clang
  • Klocwork Statische Code-Analyse
  • PC-Lint
  • Coverity
  • PVS-Studio

4.2 Die häufigsten C- und C++-Technologienamen, die austauschbar verwendet werden

  • Die C++-Standardbibliothek und die STL werden manchmal austauschbar verwendet, aber nicht korrekt

4.3 Die verschiedenen Versionen von C und C++

Versionen von C

Versionen von C sind mit dem Jahr ihrer Veröffentlichung gekennzeichnet (z. B. C89 ist C von 1989). Es gibt keine Zwischenversionen (z. B. C06), aber einige können sich auf Vor-C89 beziehen

Die beliebtesten Revisionen sind:

  • C89
  • C95
  • C99
  • C11
  • C18
  • C21 (noch nicht veröffentlicht),
  • ANSI C

Versionen von C++

Die Versionen von C++ sind auf die gleiche Weise wie die Versionen von C mit dem Jahr ihrer Veröffentlichung beschriftet.

Die beliebtesten Revisionen sind:

  • C++84 - keine echte Revision, wird aber manchmal zur Definition des Vorstandards C++ verwendet
  • C++98
  • C++03
  • C++11
  • C++14
  • C++17
  • C++20 (noch nicht veröffentlicht)

Außerdem können Sie die Namen sehen, die die Versionen während ihrer Entwicklung erhalten haben.

  • C++0x (in Arbeit befindlicher Name für C++11, das vor 2010 ausgeliefert werden sollte)
  • C++1y (in Arbeit befindlicher Name für C++14)
  • C++1z (in Arbeit befindlicher Name für C++17)
  • C++2a (in Arbeit befindlicher Name für C++20?)

4.4 Wie nah die jeweiligen Versionen der C- und C++-Technologien beieinander liegen

  • C11/C18 - nahezu identisch
  • C++98/C++03 - fast das Gleiche
  • C++11/C++14 - kleinere Änderungen
  • C++14/C++17 - kleinere Änderungen (aber genug, um den Unterschied zwischen C++11/C++17 signifikant zu machen)

4.5 Welche Versionen sind völlig unterschiedlich?

  • C++03/C++11 - die größte Änderung in der Geschichte von C++
  • C++11/C++17 - schrittweise Änderung über Revisionen
  • C89/C99 - wesentliche Änderungen in Bezug auf Typsicherheit und Unterstützung von Legacy-Problemcode

4.6 Wie wichtig sind C- und C++-Zertifikate für die Beurteilung der Programmierkenntnisse eines Kandidaten?

Es gibt keine anerkannten C/C++-Zertifizierungen. Daher ist es am besten, sie in einem Lebenslauf zu ignorieren, da sie nichts über das Qualifikationsniveau des Bewerbers aussagen.

4.7 Andere Dinge, auf die man im Lebenslauf eines C- oder C++-Entwicklers achten sollte

Achten Sie darauf, ob der Kandidat:

  • Gibt die Version der Sprache an, die sie verwendet haben
  • Hat an einem typischen C++-Projekt gearbeitet
  • Hat an großen Projekten teilgenommen, die mit einzigartigen und strengen Anforderungen zu tun hatten

Zusätzlich können technische Interviews den Kandidaten anhand seiner öffentlich sichtbaren Historie bewerten, wenn folgende Punkte genannt werden

  • Sprechen auf Konferenzen
  • Teilnahme an Konferenzen
  • Schreiben von Artikeln für Fachzeitschriften
  • Einen technischen Blog schreiben
  • Beitrag zu OSS
  • Beitragen zu Antwortseiten (z.B. Stack Overflow)

C und C++ Telefoninterview-Fragen5. C- und C++-Interviewfragen für ein technisches Telefon-/Video-Interview

Es kann ziemlich schwierig sein, sich ausschließlich auf einen Lebenslauf zu verlassen. Schließlich ist es wichtig, den Kandidaten auf seine Behauptungen hin zu überprüfen, um zu sehen, ob er die Fähigkeiten tatsächlich besitzt oder nur angibt, sie zu haben. Ein Telefoninterview ersetzt zwar keinen richtigen Codierungstest, aber es kann Ihnen helfen zu verstehen, wie der Kandidat denkt und wie er Probleme löst.

5.1 Fragen zur Erfahrung des Bewerbers

Q1: (C/C++) Was waren die Einschränkungen für Ihre früheren Projekte?

Warum Sie Q1 fragen sollten: Der Kandidat sollte in der Lage sein, seine Erfahrungen mit der gegebenen Branche zu teilen. Zum Beispiel ist es in der Embedded-Programmierung schwierig, dynamischen Speicher zu verwenden, und bei Spielen ist es sehr wichtig, dass alle Berechnungen zum Zeitpunkt des Renderns eines Frames abgeschlossen sind.

Q2: (C/C++) Für welche Systeme haben Sie programmiert?

Warum Sie Q2 fragen sollten: In mancher Hinsicht ist die Programmierung für Embedded/Desktop und Linux/Windows/OSX sehr unterschiedlich.

Q3: (C/C++) Haben Sie sich bei der Kodierung an bestimmte Standards gehalten?

Warum Sie Q3 fragen sollten: Der Kandidat kann Ihnen sagen, ob er Erfahrung mit MISRA etc. hat.

5.2 Fragen zu den Kenntnissen und Meinungen des Kandidaten

Q1: (C++) Was sind die Hauptunterschiede zwischen C++ und C?

Warum Sie Q2 fragen sollten: Mit dieser Frage kann der Kandidat sein Verständnis für die Sprachen zeigen und auch, ob er C++ als eine kleine Ergänzung zur Sprache C oder als eine separate Sprache mit unterschiedlichen Verwendungsmustern betrachtet.

Q2: (C) Was ist Zeigerarithmetik?

Warum Sie Q2 fragen sollten: Dies gilt vor allem für C. Mit dieser Frage kann der Kandidat sein Verständnis für die grundlegende Art und Weise, wie C mit Speicher umgeht, zum Ausdruck bringen.

Q3: (C++)Was ist Zeigerarithmetik?

Warum Sie Q3 fragen sollten: Diese Frage gibt dem Kandidaten die Möglichkeit, sein Verständnis der grundlegenden Art und Weise auszudrücken, wie C mit Speicher umgeht. Vorsicht: Für C++ impliziert diese Frage die Verwendung unsicherer und veralteter Muster in Ihrer Codebasis.

Q4: (C++, Einstiegsstufe) Was ist der Unterschied zwischen einer Klasse und einem Objekt?

Warum Sie Q4 fragen sollten: Um festzustellen, ob der Kandidat die Grundlagen von C++ versteht.

Q5: (C++) Was ist ein Lambda-Ausdruck?

Warum Sie Q5 fragen sollten: Feststellen, ob der Kandidat die Fortschritte kennt, die C++ seit C++03 gemacht hat (Lambda-Ausdrücke wurden in C++11 eingeführt) und diese versteht.

Q6: (C/C++) Was sind Schleusen, welche Probleme lösen sie und was sind die potenziellen Probleme mit ihnen?

Warum Sie Q6 fragen sollten: Dies zeigt das Verständnis des Kandidaten für Sperren, Race Conditions, Deadlocks und Livelocks.

Q7: (C/C++, Experte) Was ist flüchtigund wie hängt das mit der Frage nach Sperren und Synchronisation zusammen?

Warum Sie Q7 fragen sollten: Der Kandidat sollte in der Lage sein zu erklären, dass flüchtig darf nur für den Zugriff auf die Hardware und nicht für die Synchronisation verwendet werden.

Q8: (C++) Wie würden Sie ein dynamisches Array erstellen?

Warum Sie Q8 fragen sollten: Dies wird zeigen, ob der Kandidat eine gute Herangehensweise verwendet, wie std::vectoroder die veraltete und unsichere neu.

Q9: (C++) Was ist RAII? Gibt es das auch in anderen Sprachen?

Warum Sie Q9 fragen sollten: Dies wird zeigen, ob der Kandidat dieses grundlegende C++ Idiom kennt und versteht, was es bedeutet. Bonuspunkte für die Beschreibung ähnlicher optionaler Funktionen in anderen Sprachen, wie mit() in Python oder mit in C#.

Q10: (C++) Kann man aus einem Destruktor werfen?

Warum Sie Q10 fragen sollten: Der Kandidat wird hier ins Detail gehen können. Die Quintessenz ist: Sie können, aber es ist eine schlechte Praxis, und es ist seit C++11 standardmäßig deaktiviert, da Destruktoren dann implizit Notrow.

Q11: (C++) Können Sie einen Konstruktor erben?

Warum Sie Q11 fragen sollten: Der Kandidat kann darüber Auskunft geben, dass dies seit C++11 möglich ist, dass sich die Funktionsweise in C++14 leicht geändert hat und welche Auswirkungen diese Änderung hat.

Q12: (C++) Können Sie einen virtuellen Konstruktor haben?

Warum Sie Q12 fragen sollten: Die kurze Antwort ist nein, aber der Kandidat kann sein schnelles Denken zeigen, indem er die Fabrik und die Prototypmuster erwähnt.

Q13: (C++) Was ist eine Schnittstelle?

Warum Sie Q13 fragen sollten: Dies ist eine Art Trickfrage, da C++ keine Schnittstellen hat. Es hat jedoch abstrakte Klassen, und der Kandidat soll über sie sprechen.

Q14: (C++, Experte) Können Sie eine Implementierung einer rein virtuellen Funktion haben?

Warum Sie Q14 fragen sollten: Die Antwort ist ja, aber die Verwendbarkeit ist eingeschränkt.

Q15: (C++, Experte) Können Sie eine virtuelle Vorlagenfunktion haben und warum?

Warum Sie Q15 fragen sollten: Der Kandidat kann sein Verständnis für die Unterscheidung zwischen Kompilier- und Laufzeit sowie für Implementierungsdetails wie vtables.

Q16: (C++, Experte) Wie würden Sie implementieren std::is_same?

Warum Sie fragen sollten Q16: Der Kandidat wird in der Lage sein, seine Kenntnisse der Metaprogrammierung durch die Implementierung dieses trivialen Beispiels zu zeigen.

Q17: (C/C++) Was ist Ihre Lieblingsänderung (oder eine Reihe von Änderungen) in Cnn/C++nn?

Warum Sie Q17 fragen sollten: Um zu zeigen, ob der Kandidat mit den Änderungen in der/den Sprache(n) Schritt hält und ob er sich der leicht unterschiedlichen Programmiersprache in verschiedenen Versionen der Sprache bewusst ist.

Q18: (C++) Was sind die Unterschiede zwischen C++98 und C++11

Warum Sie fragen sollten Q18: C++11 war eine große Veränderung in der C++-Sprache, ihren Paradigmen und Mustern. Der Kandidat wird in der Lage sein, sein Wissen über diese große Veränderung darzulegen.

Q19: (C/C++) Wie würden Sie einen Speicherfehler entdecken und beheben?

Warum Sie Q19 fragen sollten: Den Denkprozess, das Wissen und die Werkzeuge, die dabei hilfreich sind, darzustellen.

Q20: (C/C++) Haben Sie Erfahrung mit benutzerdefinierten Zuweisern?

Warum Sie Q20 fragen sollten: Der/die Kandidat/in kann seine/ihre Erfahrungen mit benutzerdefinierten Zuweisern weitergeben.

Q21: (C/C++) Sie haben Framework/Bibliothek X in Ihrem Lebenslauf, beschreiben Sie Ihre Erfahrungen damit. War es eine gute Wahl? Gibt es eine Alternative, die Sie bevorzugt hatten oder jetzt bevorzugen würden?

Warum Sie Q21 fragen sollten: Dies ist eine offene Frage, die den Personalverantwortlichen wissen lässt, ob der Kandidat einen breiten Überblick über die Bereiche hat, die Alternativen kennt und die Kompromisse versteht, die bei der Wahl der einen oder anderen Lösung eingegangen werden.

Q22: (C/C++) Welches ist Ihr bevorzugtes Build-System und warum? Wie schneidet es im Vergleich zur Konkurrenz ab?

Warum Sie Q22 fragen sollten: Dies wird das Wissen des Kandidaten über Build-Systeme zeigen.

5.3 Verhaltensbezogene Fragen Sie sollten fragen, um zu verstehen, wie sich der Kandidat in der Vergangenheit verhalten hat

Q1: Was ist Ihre größte Erfolgsgeschichte in der Programmgestaltung? Warum ist das passiert? Wie können Sie sie wiederholen?

Warum Sie Q1 fragen sollten: Diese Frage gibt dem Kandidaten die Möglichkeit, eine Erfolgsgeschichte zu präsentieren und zeigt dem Personalverantwortlichen, ob der Kandidat mehr daran interessiert ist, das Problem zu lösen oder das Lob zu bekommen.

Q2: Was war Ihr größter Programmierfehler? Warum ist er passiert? Wie können Sie vermeiden, ihn in Zukunft zu wiederholen?

Warum Sie Q2 fragen sollten: Diese Frage gibt dem Kandidaten die Möglichkeit, eine möglicherweise beunruhigende Geschichte zu erzählen, und zeigt dem Personalverantwortlichen, ob der Kandidat offen damit umgeht. Sie wird außerdem zeigen, ob er mehr daran interessiert ist, das Problem zu lösen oder die Schuld abzuwälzen.

Q3: (für Bewerber auf höherem Niveau) Würden Sie gerne einen Junior-Entwickler als Mentor betreuen? Warum? Wie würden Sie dabei vorgehen? Haben Sie Erfahrung mit dem Mentoring anderer Personen?

Warum Sie Q3 fragen sollten: Auf diese Weise kann der Personalverantwortliche das Interesse des Kandidaten und die für den Wissensaustausch erforderlichen Soft Skills einschätzen.

Technisches Screening der C- und C++-Entwicklerfähigkeiten mithilfe eines Online-Codierungstests6. Technisches Screening der C- oder C++-Entwicklerfähigkeiten mithilfe eines Online-Codierungstests

Die Sache, über die Sie sich bei C- und C++-Entwicklern absolut im Klaren sein müssen, ist, dass sie unbedingt über makellose Codierfähigkeiten verfügen müssen. C lässt keinen Spielraum für Fehler zu und C++ lässt nicht viel mehr zu. Sicherlich kann eine Überprüfung des Lebenslaufs und ein Telefongespräch Ihnen helfen, einige Ihrer Kandidaten auszusortieren. Das letzte, was Sie tun möchten, ist, einen Kandidaten zu einem technischen Interview einzuladen, nur um dann festzustellen, dass er nie die Programmierkenntnisse hatte, die Sie brauchen.

6.1 Welchen C- oder C++-Online-Programmiertest sollten Sie wählen?

Bei der Suche nach dem richtigen C oder C++ Online-Programmiertest sollten Sie sicherstellen, dass sie die folgenden Kriterien erfüllen.

  • Sie spiegeln die tatsächliche Arbeit wider, die geleistet wird
  • Sie nehmen nicht allzu viel Zeit der Kandidaten in Anspruch, maximal ein bis zwei Stunden
  • Sie können automatisch gesendet und überallhin mitgenommen werden
  • Sie prüfen nicht nur, ob die Lösung funktioniert, sondern auch die Qualität des Codes und wie gut er in Randfällen funktioniert
  • Sie sind so nah an der natürlichen Programmierumgebung wie möglich und ermöglichen dem Kandidaten den Zugriff auf die Ressourcen, die er normalerweise bei der Arbeit nutzen würde
  • Sie lassen den Kandidaten alle Bibliotheken, Frameworks und andere Tools verwenden, die er normalerweise verwenden würde
  • Sie sind auf einem angemessenen Niveau, das den Fähigkeiten des Bewerbers entspricht

7. DevSkiller gebrauchsfertige Online-Tests zur Bewertung der Codierung von C- und C++-Entwicklern

DevSkiller-Codierungstests verwenden unser RealLifeTestingTM Methodik, um die tatsächliche Programmierumgebung widerzuspiegeln, in der Ihr Kandidat arbeitet. Anstatt obskure Algorithmen zu verwenden, verlangen die DevSkiller-Tests von den Kandidaten, Anwendungen oder Funktionen zu erstellen. Sie werden komplett automatisch benotet und können von jedem Ort der Welt aus absolviert werden. Gleichzeitig hat der Kandidat Zugang zu allen Ressourcen, die er normalerweise verwenden würde, einschließlich Bibliotheken, Frameworks, StackOverflow und sogar Google.

Unternehmen nutzen DevSkiller, um Kandidaten mit ihrer eigenen Codebasis von überall auf der Welt zu testen. Um es einfach zu machen, bietet DevSkiller auch eine Reihe von vorgefertigten C- und C++-Codierungstests wie die hier:

Beitrag teilen

Es ist mehr als nur ein Newsletter

Erhalten Sie nützliche Einblicke direkt in Ihren Posteingang und erfahren Sie mehr über die Einstellung von Technikern.

Kodierfähigkeiten nahtlos verifizieren & entwickeln.

Sehen Sie DevSkiller-Produkte in Aktion.

Sicherheitszertifizierungen & Konformität. Wir sorgen dafür, dass Ihre Daten sicher und geschützt sind.