C++ Interview Fragen



  • @Nexus:
    Anhand dieses Beispieles kann man RAII erklaeren:

    Problem:
    ########
    
    Mutex m;
    
    class Foo {
    public:
    	void bar() {
    		mutex.lock(&m);
    
    			// do stuff
    			// <--- exception happens here
    
    		mutex.unlock(&m);
    	}
    };
    
    Solution RAII:
    ##############
    
    class Lock {
    private:
    	Mutex *mu;
    
    public:
    	explicit Lock(Mutex *m) {
    		mu = m;
    		mu->lock();
    	}
    
    	~Lock() {
    		mu->unlock();
    	}
    };
    
    class Foo {
    public:
    	void bar() {
    		Lock(&m);
    
    		// do stuff
    		// <--- exception happens here...no problem since the
                    // Lock destructor does the cleanup and calls the mu->unlock
    	}
    };
    


  • wernerschwarz schrieb:

    welche fragen wuerdet ihr bei einem c++ interview stellen, wenn ihr der interviewer seid?

    Vielleicht sowas:
    - Was kam in C++11 dazu?
    - Schreib eine Funktion, die einen C-String umdreht.
    - Warum wird für embedded systems immer nur C++ verwendet?



  • Concita_Wurst schrieb:

    Meine Fragen:
    I. Was ist der unterschied zwischen den zwei folgenden Ausdruecken, wobei Foo eine Klasse ist:

    1.) Foo f;
    2.) Foo f();

    II. Welche moeglichkeiten gibt es eine Memberfunktion zu inlinen?

    III. Was macht der Ausdruck friend?

    Und damit wüsstest du, ob du dir einen fähigen Programmierer in die Forma holst?

    Einfache Fragen beantworten auch Leute die nur mal eine Vorlesung darüber abgesessen haben.
    Schwierige Fragen zu Sprachdetails können gerade in C++ auch sehr gute Entwickler mal aus dem Konzept bringen aber Leute wie Sone beten dir dann irgendwelche Standardparagraphen runter und haben eigentlich null Ahnung von prof. Entwicklung.

    Bei Fragen dieser Art kann man eigentlich auch aufstehen und gehen, weil man es dann mit Idioten zu tun hat.



  • Das ist doch alles Pillepalle.

    Eine Frage reicht: "Beherrschen sie C++?"



  • ScottZhang schrieb:

    Eine Frage reicht: "Beherrschen sie C++?"

    Da holst Du Dir Politiker rein.



  • Argh, hatte gehofft die gerade dadurch auszusieben.



  • Ich stelle immer, aehnlich wie Volkard vorgeschlagen hat, eine einfache Programmieraufgabe. Z.B. etwas in der Art: "Wieviele Quadrate kann man auf einem Schachbrett bilden und schreiben Sie eine iterative und eine rekursive Loesung dazu auf."

    Da sieht man ob die Person ein Problem analysieren, in eine Formel packen und in Code umsetzen kann.

    Bei einzelnen Schritten gebe ich dann, je nach Nervositaet der Kandidaten, Hilfestellung.

    Hat bisher immer mit guten Ergebnissen funktioniert, denn die Spreu trennt sich schon bei einfachen Aufgaben vom Weizen. Beim Code kann man dann immer noch nach Dingen wie der Verwendung der Standard-Bibliothek fragen (nicht gerade bei oben genanntem Problem, aber z.B. beim String-Umdrehen).

    Wenn man allerdings einen Super-TMP-festen C++'er haben muss, der vom Start weg funktioniert, muss man natuerlich mehr und anders fragen.



  • @volkard: ok so?

    void reverse(string &s) {
    	int j = s.size() - 1;
    
    	for(int i = 0; i < s.size() / 2; i++) {
    		swap(s[i], s[j]);
    		j--;
    	}
    }
    


  • Concita_Wurst schrieb:

    @volkard: ok so?

    void reverse(string &s) {
    	int j = s.size() - 1;
    
    	for(int i = 0; i < s.size() / 2; i++) {
    		swap(s[i], s[j]);
    		j--;
    	}
    }
    

    Hatte einen C-String gemeint, Zeiger auf nullterminierte char-Kette.



  • @volkard: funktioniert doch gleich vom prinzip!?



  • Concita_Wurst schrieb:

    void reverse(string &s) {
    	int j = s.size() - 1;
    
    	for(int i = 0; i < s.size() / 2; i++) {
    		swap(s[i], s[j]);
    		j--;
    	}
    }
    

    int ist der falsche Typ.

    Das wäre für mich die richtige Lösung:

    std::reverse(s, s + std::strlen(s));
    

    Wenn ich jemanden suchen würde, der C++ kann, würde ich ihn zum Beispiel die wesentlichen Teile von std::function , shared_ptr oder so programmieren lassen.
    Das kann natürlich fast niemand. Ich würde also wahrscheinlich kein Personal finden.. 😕


  • Mod

    Das kann natürlich fast niemand.

    Das bisschen Type-Erasure in function ist so trivial, das kriegt hier im Forum doch jeder hin.



  • qwertiop schrieb:

    "Wieviele Quadrate kann man auf einem Schachbrett bilden und schreiben Sie eine iterative und eine rekursive Loesung dazu auf."

    Hab erstmal Minuten einen Schrecken gekriegt, weil ich dachte, Rechtecke sollten gezählt werden.


  • Mod

    Hab erstmal Minuten einen Schrecken gekriegt, weil ich dachte, Rechtecke sollten gezählt werden.

    Ist doch beides in O(1) Zeit lösbar? Also wozu rekursive Lösungen abfragen?



  • Ich mag die Frage "Chef hat gesagt Sie sollen dieses Array an diese Funktion übergeben. Wie machen Sie das?"

    Erwartung:
    1. Ok.
    2. Man kann keine Arrays übergeben.
    3. Man kann keine Arrays übergeben, aber es gibt da einen Workaround.

    Sinn ist, dass man erkennt, ob sich die Person auskennt und ob sie mitdenkt. Man braucht natürlich mehrere derartige Fragen.



  • volkard schrieb:

    - Warum wird für embedded systems immer nur C++ verwendet?

    Hä? Seit wann das?



  • wat schrieb:

    volkard schrieb:

    - Warum wird für embedded systems immer nur C++ verwendet?

    Hä? Seit wann das?

    wat schrieb:

    Sinn ist, dass man erkennt, ob sich die Person auskennt und ob sie mitdenkt.



  • Arcoth schrieb:

    Das kann natürlich fast niemand.

    Das bisschen Type-Erasure in function ist so trivial, das kriegt hier im Forum doch jeder hin.

    Ja, hier im Forum. Aber frag mal zehn zufällige C++-Entwickler aus der Wirtschaft was std::function ist. Wenn mindestens einer mal davon gehört hat, bin ich erstaunt.





  • Wenn man nur jemanden sucht, der Java mit Sternchen produzieren kann, reichen Kindergartenaufgaben und dämliche Quizfragen.

    Wenn man selbst nur mit Ach und Krach Java mit Sternchen kann, ist es egal was man im Interview fragt. Bei so jemandem würde Bjarne Stroustrup als Bewerber nicht unbedingt besser abschneiden als Hans Wurst, der mal ein PHP-Videotutorial gesehen hat.

    wernerschwarz schrieb:

    nettest video 🙂
    https://www.youtube.com/watch?v=WdwaPUWtT-Y

    void repeat_n(unsigned int n, std::function<void ()> const &f)
    {
        for (auto i = 0; i < n; ++i) {
            f();
        }
    }
    

    Der hat C++ so ungefähr verstanden. Aber er achtet nicht gut genug auf Details. Wenn er Warnungen aktiviert hätte, wüsste er, dass der Vergleich i < n nicht portabel ist. Denn i hat er signed gemacht und n unsigned . Es gibt Werte für n , bei denen ++i überlaufen wird, was undefiniertes Verhalten hat.
    Vor allem ist f viel zu teuer für so einen trivialen Algorithmus. Da hätte ein guter C++-Programmierer ein Template benutzt.
    Er könnte function vermutlich nicht korrekt implementieren. (EDIT: OK, bei 5:56 sagt er immerhin, dass er das nicht könnte.)


Anmelden zum Antworten