10 C++ Testfragen



  • Wie wärs mit:
    Welche Fragen würden Sie jemand stellen, um festzustellen wie gut er C++ kann?



  • _-) schrieb:

    Wie wärs mit:
    Welche Fragen würden Sie jemand stellen, um festzustellen wie gut er C++ kann?

    Oder: Welche Frage würden sie jemanden stellen, um von ihm die Fragestellungen zu erhalten, mit denen man feststellen kann, wie gut jemand C++ kann?

    Zum Thema Fragestellungen war hier vor kurzen schon mindestens ein weiterer Thread. Man sollte vielleicht erst einmal klären was der OT unter C++ versteht, ich würde den Ansi C++ Standard wählen, somit auch zumindestens allgemeinere Fragen zur C++ Standardbibliothek mit aufnehmen...

    Grundsätzlich würde ich eher ein paar Fragen mehr formulieren, um wirklich die wichtigsten Bereiche von C++ in z.B. 3 Schwierigkeitsgraden abzufragen. Die Herb Sutter Bücher können ggf. hier auch weiterhelfen.

    cu André



  • Zum Beispiel ein paar "Was bewirkt folgender Code" - Fragen.
    Und dann ein paar gemeine (bekannte) Probleme da reinbauen.



  • 0. Welche Namensmuster sind laut C++ Standard für den Compiler reserviert? Jeweils mit Angabe des zugehörigen Scope.
    2. Welche Speichern werden beim Compilieren benutzt "reserviert"
    3. warum kann einem const char * nichts zugewiesen werden. 😕
    4.
    5.
    6.
    7.
    8.
    9.

    Na vielleicht sind die Fragen auch blöd XD bin selber anfänger und könnte Frage 1 nichtmals lösen müsste ich googeln.... aber zB. problem 3 da stößt man als neuling ja doch eher 3 mal drauf als nur 1mal...

    dann kommt immer meine lieblingsfehlermeldung mit der ich Gottseidank inzwischen umgehen kann 🤡



  • Kann man eine konstante Referenz auf ein temporäres Objekt in einer Klassenhierarchie auf den abstrakten Basisklassentyp slicen, wenn dieser durch Vererbung von einem Klassentemplate abstrakt gemacht wurde und man das Bridge-Pattern für die Implementierung gewählt hat?



  • Virokams schrieb:

    ...
    2. Welche Speichern werden beim Compilieren benutzt "reserviert"
    ...

    Sorry, aber die Frage verstehe ich nicht (rein semantisch)... 😕

    Gruß,

    Simon2.



  • Gib dem Probanden doch lieber Codestücke.

    Z.B.

    1. Warum sollte das nicht funktionieren?

    int& int_ref() {
       int x;
       return x;
    }
    

    2. Sehen Sie hier ein mögliches Problem bezüglich der effizienten Verwendung des Arbeitsspeichers?

    char* ltrim(const char* s) {
       while(isspace(*s))
          ++s;
       char* new_string = new char[strlen(s)];
       while(*s != '\0'){
          *new_string = *s;
          ++s;
          ++new_string;
       }
       return new_string;
    }
    

    (Ich weiß, das ist C. Aber man sollte als C++-Programmierer wenigstens wissen warum so etwas nicht sinnvoll ist.)

    Sind nur beliebige Beispiele und sicherlich auch nicht perfekt - von Tippfehlern mal ganz abgesehen. Sie sollten aber zeigen was ich meine. Anhand von so etwas kann man doch eher sehen, ob jemand mit der Sprache umgehen kann, oder?



  • Simon2 schrieb:

    Virokams schrieb:

    ...
    2. Welche Speichern werden beim Compilieren benutzt "reserviert"
    ...

    Sorry, aber die Frage verstehe ich nicht (rein semantisch)... 😕

    ja. du hast vielleicht 2 speichern und wenn du compilieren willst. da muss der compilierer ja einen speichern benutzen "reservieren" damit er er den anderen speichern compilieren kann! wie soll man den sonst speichern benutzen "reservieren". verstehst du?



  • erklärbär schrieb:

    Simon2 schrieb:

    Virokams schrieb:

    ...
    2. Welche Speichern werden beim Compilieren benutzt "reserviert"
    ...

    Sorry, aber die Frage verstehe ich nicht (rein semantisch)... 😕

    ja. du hast vielleicht 2 speichern und wenn du compilieren willst. da muss der compilierer ja einen speichern benutzen "reservieren" damit er er den anderen speichern compilieren kann! wie soll man den sonst speichern benutzen "reservieren". verstehst du?

    Kein Wort!



  • erklärbär schrieb:

    ja. du hast vielleicht 2 speichern und wenn du compilieren willst. da muss der compilierer ja einen speichern benutzen "reservieren" damit er er den anderen speichern compilieren kann! wie soll man den sonst speichern benutzen "reservieren". verstehst du?

    Könntest du das bitte noch in Deutsch oder von mir aus Englisch übersetzen? 😉

    Irgendwie erinnert mich das an die automatischen Übersetzungen Koreanischer Betriebsanleitungen.



  • asc schrieb:

    erklärbär schrieb:

    ja. du hast vielleicht 2 speichern und wenn du compilieren willst. da muss der compilierer ja einen speichern benutzen "reservieren" damit er er den anderen speichern compilieren kann! wie soll man den sonst speichern benutzen "reservieren". verstehst du?

    Könntest du das bitte noch in Deutsch oder von mir aus Englisch übersetzen? 😉

    Irgendwie erinnert mich das an die automatischen Übersetzungen Koreanischer Betriebsanleitungen.

    Ich glaube er hat Speichern mit Ball, Ball mit Elephant und Elepahnt mit Texas verwechselt.. 🙄



  • 😃
    Nee, nee, das ist zweifelsohne dieses Sprachmonstrum, welches einem die Microsoft-Dokumentationen auf deutsch näher bringen soll. Hier ist die komplette version, der link fehlte:

    ja. du hast vielleicht 2 speichern und wenn du compilieren willst. da muss der compilierer ja einen speichern benutzen "reservieren" damit er er den anderen speichern compilieren kann! wie soll man den sonst speichern benutzen "reservieren". verstehst du?*

    *Diese Text wurde übersetzt maschinellerweise. Sehen Sie ein von die Originalversion an: http://www.100jia.net/texte/anddaojia/c_wenzi.htm



  • 0.wieso fange ich bei 0 an zuzählen statt bei 1?
    1.kann ich c++ auch auf einen mac problem los benutzen?
    2.steht int für international? :p
    3.kam c++ vor c?
    4.welche person hat c++ geschaffen?^^
    5.kannst du mir sagen wie groß ein array maximal ist?^^
    6.gehören true und false in c++ zur variablen klasse int, double oder bool?
    7.was ist hier dran falsh "double = 1,0;" ?
    8. heißt es "if" und "else" oder "if" und "or"
    9."int main()" oder "int main(int nNumberofArgs, char* pszArgs[])" ?^^



  • Vielleicht ne frage zu verschiedenen befehlen:
    zum Beispiel was bewirkt der Befehl return 0;
    oder
    wo liegt der fehler:

    int *test;
    test = 10;
    

    jedoch wenn man auch nur sehr leichte erfahrungen in c++ hat kann man soetwas beantworten.



  • Naja, wenn man ernsthaft die Kenntnisse mit 10 Fragen prüfen will, sollte meiner Ansicht nach mindestens ein Drittel über die rein syntaktische Anwendung der C++-Sprachmittel hinausgehen.

    • Worin bestehen die Vorteile von std::list gegenüber std::vector ? Zähle drei wesentliche auf.
    • Was versteht man unter dem Strategy Pattern?
    • Weshalb wird dynamic_cast oftmals als Hinweis auf einen Designfehler erachtet?
    • ...

    Sind jetzt auch nicht gerade die schwierigsten Fragen, aber etwas mehr Erfahrung benötigt man für die schon. Und beispielsweise könnte man noch Dinge über Template-Metaprogrammierung fragen, das wird dann schon ein bisschen schwieriger. 😉



  • Nexus schrieb:

    • Worin bestehen die Vorteile von std::list gegenüber std::vector ? Zähle drei wesentliche auf.
    • Was versteht man unter dem Strategy Pattern?
    • Weshalb wird dynamic_cast oftmals als Hinweis auf einen Designfehler erachtet?
    • ...

    Hat jetzt nicht wirklich was mit C++ zu tun sondern mit SW-Entwicklung allgemein.



  • nonstop schrieb:

    Hat jetzt nicht wirklich was mit C++ zu tun sondern mit SW-Entwicklung allgemein.

    Das sehe ich aber anders. dynamic_cast gehört ebenso zur Sprache wie die Standardbibliothek. Von jemandem, der nur die reinen Sprachmittel und deren Syntax beherrscht, würde ich nicht sagen, er "könne gut C++".



  • List vs. Vector hat nichts mit Standardbibliothek zu tun sondern mit Datenstrukturen allgemein. dynamic_cast macht man in anderen Sprachen mit instanceof usw. Oder was stellst du dir bei denen für ne Antwort vor die nur für C++ zutrifft?
    Pattern dürfte wohl klar sein, das es allgemein ist.



  • nonstop schrieb:

    List vs. Vector hat nichts mit Standardbibliothek zu tun sondern mit Datenstrukturen allgemein.

    Trotzdem arbeitet die STL mit eher C++-spezifischen Konzepten wie Iteratoren, Zeiger und Templates. Und meiner Ansicht nach tragen die STL-Container auch zum Verständnis der Sprache C++ bei - zumindest würde ich von niemanden sagen, er kenne sich mit C++ aus, wenn er noch nichts von der STL (oder allgemein Standardbibliothek) gehört hat.

    nonstop schrieb:

    dynamic_cast macht man in anderen Sprachen mit instanceof usw.

    Hm, instanceof kenne ich jetzt nicht, aber ich glaube nicht, dass das genau identisch mit dynamic_cast ist. Oder warum meinst du?

    nonstop schrieb:

    Oder was stellst du dir bei denen für ne Antwort vor die nur für C++ zutrifft?

    Wieso darf die Antwort nur auf C++ zutreffen? Es geht ja darum, wie gut man C++ beherrscht. Sehr viele Dinge, die man in C++ lernt, kann man dann auch in anderen Sprachen besser anwenden. Das fängt schon bei grundlegendsten Dingen wie If-Abfragen und Schleifen an und zieht sich über sehr viele Sprachkonzepte hinweg.

    nonstop schrieb:

    Pattern dürfte wohl klar sein, das es allgemein ist.

    Da stimme ich dir schon eher zu. Aber ich finde, man erhält so auch Auskunft darüber, wie gut man eine Programmiersprache wie C++ in der Praxis anwenden kann. C++ geht gegenüber anderen modernen Sprachen wie C# oder Java ein wenig seinen eigenen Weg, was Objektorientierung betrifft. Das dürfte bereits einen Unterschied bezüglich Entwurfsmuster bewirken. Zudem kommen dann auch noch andere Differenzen wie Zeiger dazu, was wiederum einen Teil beiträgt.

    Die ursprüngliche Fragestellung lässt einem sowieso sehr viel Spielraum - man kann die Kenntnis der Sprache C++ nicht ausschliesslich an den Sprachmitteln messen, die in anderen Programmiersprachen nicht vorkommen.

    Tut mir übrigens leid, dass ich dir deinen Post so zerstückelt habe, aber ich wollte halt spezifisch antworten. 😉



  • Nexus schrieb:

    nonstop schrieb:

    Oder was stellst du dir bei denen für ne Antwort vor die nur für C++ zutrifft?

    Wieso darf die Antwort nur auf C++ zutreffen? Es geht ja darum, wie gut man C++ beherrscht. Sehr viele Dinge, die man in C++ lernt, kann man dann auch in anderen Sprachen besser anwenden. Das fängt schon bei grundlegendsten Dingen wie If-Abfragen und Schleifen an und zieht sich über sehr viele Sprachkonzepte hinweg.

    Sag ich doch. Hat jetzt nicht wirklich was mit C++ zu tun sondern mit SW-Entwicklung allgemein.


Anmelden zum Antworten