Ich habe kürzlich eine Rekrutierungsseite für ein Softwareunternehmen gesehen, auf der eine der Anforderungen "Ausgezeichnete Kenntnisse in C ++" lautete.
Nun, ich weiß, dass dies irgendwie als Expertenwissen über C ++ impliziert, aber wo genau passt Expertenwissen hin. Ist es das Wissen und die Erfahrung von (sagen wir) acht Jahren Programmieren in der Sprache, die die Vor- und Nachteile einer bestimmten Domäne haben und kennen. Oder handelt es sich um eine auffrischende, oberflächliche Herangehensweise an eine oder mehrere Domänen und gleichzeitig um ein detaillierteres Verständnis der gesamten Sprache?
Sie können beispielsweise nicht gleichzeitig Experte für das Schreiben von Systemtreibern und Game-Engines sein. Wo passt dieses exzellente oder Expertenwissen hin?
quelle
Antworten:
Wenn sie "Ausgezeichnetes Wissen" sagen, sollten Sie in der Lage sein, alle Funktionen der Sprache korrekt zu identifizieren und zu verwenden - einschließlich derjenigen aus dem neuesten C ++ 11-Standard, die derzeit allgemein unterstützt werden (was leider bedeutet, dass Visual Studio hier der kleinste gemeinsame Nenner ist ). Eine Person mit hervorragenden C ++ - Kenntnissen kann ihre eigenen Typmerkmale oder Ausdrucksvorlagen erstellen. Sie können ihre eigenen Container, Algorithmen und Allokatoren erstellen. Sie wissen, wann Vererbung und wann Vorlagen zu verwenden sind und wann keine von beiden zu verwenden sind. Sie wissen, wie man RAII verwendet, um alle bereinigungsbedürftigen Zustände zu verwalten.
Außerdem können sie mit der Interaktion mit Müll im C-Stil fertig werden, da dies leider immer noch Teil der Sprache ist.
quelle
member()
eine Initialisierungsliste bewirkt. : PIch glaube nicht, dass es eine allgemein akzeptierte Definition dessen gibt, was "exzellentes" Wissen über C ++ ausmacht.
Es ist in der Regel schwierig, eine klare Antwort darauf zu finden, was "gute", "ausgezeichnete", "hervorragende" (usw.) Kenntnisse in einer Sprache, einem Framework, einer Plattform oder was Sie haben. In vielen Fällen ist es besonders schwierig, eine klare Grenze zwischen wirklich nützlichem Wissen und dem Wissen um viele Kleinigkeiten zu ziehen.
Dies gilt insbesondere für etwas wie C ++, das es schon seit Jahrzehnten gibt, das auf viele verschiedene Arten angewendet und in dieser Zeit in vielen verschiedenen Stilen geschrieben wurde. Es gibt eine beinahe beängstigende Menge, die jemand über die Sprache lernen könnte , die fast nichts damit zu tun hat, sie zur guten Lösung von Problemen zu verwenden. Das Kennen aller Regeln wie Überlastungsauflösung oder teilweise Anordnung von Funktionsvorlagen ist wahrscheinlich nur dann hilfreich, wenn Sie versuchen, jemanden für die Arbeit an einem Compiler (oder etwas sehr Ähnlichem) einzustellen. Ich habe C ++ verwendet, seit es zum ersten Mal einigermaßen verfügbar war, und habe noch keine teilweise Reihenfolge von Funktionsvorlagen in echtem Code verwendet (oder sogar wollen).
Obwohl ich technisch nicht auf die gestellte Frage reagiere, beeile ich mich, jedem, der solche Anforderungen in Stellenanzeigen enthält, zu raten, ein gewisses Gleichgewicht im Auge zu behalten. Ich denke, dass übermäßige Betonung oft auf Programmiersprachen gelegt wird, auf Kosten von Dingen wie Problemlösungsfähigkeit und allgemeinen Algorithmen. Wenn man eine Programmiersprache gut kennt, kann man Lösungen gut ausdrücken , aber normalerweise hilft sie (bestenfalls) beim Entwerfen der Lösung selbst nur minimal. Eine großartige Lösung, die schlecht ausgedrückt wird, schlägt praktisch immer eine mittelmäßige Lösung, egal wie gut sie ausgedrückt wird.
quelle
Ich würde erwarten, dass diese Person mit dem C ++ - Standard, den neu hinzugefügten Konzepten, Konstrukten und Schlüsselwörtern auf dem neuesten Stand ist. Zum Beispiel sollte er zumindest wissen, was eine Wertreferenz ist und warum sie nützlich sein kann.
quelle
Wie gut ist ein ausgezeichneter Fußballspieler? Es hängt davon ab, auf welcher Ebene Sie sich befinden, international, in der Kinderliga usw.
Gute Kenntnisse in C ++ bedeuten wahrscheinlich, dass Sie alle Schlüsselwörter kennen und wissen sollten, wann sie zusammen mit der STL verwendet werden.
Manchmal enthält es auch Designmuster und Boost, manchmal jedoch keine der oben genannten und erfordert, dass Sie die Codierungsprüfung bestehen und den Interviewer beeindrucken.
Ehrlich gesagt gibt es einfach keine tatsächliche Definition. Haben Sie das Gefühl, Sie können eine komplexe Multithread-Anwendung mit mehreren Threads unter Verwendung von C ++ und einigen Peripheriebibliotheken (STL, MFC, Boost usw.) schreiben? Wenn die Antwort ja lautet, haben Sie wahrscheinlich eine Chance auf Expertenpositionen.
Wenn die Antwort Nein lautet, verschwenden Sie möglicherweise Ihre Zeit.
quelle
Ein ausgezeichneter C ++ - Programmierer weiß, wann er die unzähligen 'Funktionen' der Sprache nutzen muss und wann nicht.
quelle
Verweilen Sie nicht bei der Semantik von "exzellent", bewerben Sie sich einfach für den Job, wenn er interessant erscheint und Sie sich dazu bereit fühlen. Lassen Sie den Arbeitgeber entscheiden, ob Sie "ausgezeichnet" genug sind oder nicht.
Ein "ausgezeichneter Programmierer" kennt die rohe Leistungsfähigkeit des Tools und beurteilt anhand dessen mehrere Faktoren, die die Implementierung des unmittelbaren Problems bestimmen. Diese Faktoren sind: Einfachheit der Implementierung, Erweiterbarkeit / Wiederverwendbarkeit, Effizienz.
quelle