C++ Interview Fragen



  • @Arcoth: ich hatte vergessen zu sagen, dass die zahlen im array nicht sortiert sein muessen 🙂


  • Mod

    Scheisse, ich bin in der Schule und kann nicht mitmachen :sad:

    Ich haette allerdings auch auf ein Bitset getippt (P.S.: nimm einfach vector<bool> )


  • Mod

    volkard schrieb:

    Für 1+2+3+...+N und 12+22+32+...+N2 hat arcoth ja schon die Summenformeln herbeigezaubert.
    Statt des Produkts reicht die Summe der Quadrate, die wird nicht so elend groß.

    Und das lässt sich dann auch schön erweitern zumindest bist zu 5 fehlenden Zahlen, indem man höhere Potenzen verwendet. Ab 6 Zahlen wird es evtl. etwas schierig, die entsprechenden Gleichungen zu lösen, vielleicht kann man noch etwas machen, weil man weiss, dass es ganze Zahlen sein müssen (bin mit diophantischen Gleichungssystemen nicht besonders gut vertraut).

    Ich überlege, ob man evtl. auch eine xor-Verknüpfung verwenden kann.
    123...N ist ja auch trivial zu ermitteln.

    Allerdings bin ich etwas unsicher, ob ein System der Form
    x + y = a
    x ^ y = b
    für gegebene a,b eindeutig und einfach zu ermitteln ist.



  • camper schrieb:

    Allerdings bin ich etwas unsicher, ob ein System der Form
    x + y = a
    x ^ y = b
    für gegebene a,b eindeutig und einfach zu ermitteln ist.

    Kam mit dieser Überlegung auch nicht weiter, bis Du sie hier nochmal angesprochen hast. Gegenbeispiel:

    x+y=15
    x^y=15

    Aha, kein Übertrag passiert, hier sind + und ^ leider gleich, alle 0<=x<=15 sind möglich.



  • @volkard: wie unterscheidet sich dein algo von der bitset loesung bezueglich performance?



  • wernerschwarz schrieb:

    @volkard: wie unterscheidet sich dein algo von der bitset loesung bezueglich performance?

    Mache mir nicht die Mühe, es zu messen. Geraten hat eine Multiplikation 6 Takte und dafür kannste locker im bitset fummeln, aber wenns bitset größer wird als der Cache, wirds Malnehmen wirder besser. Kannst dann aber bei uint32 doch nur bis 60000 oder so gehen, das würde eh passen. Oder auf uint64 sammeln, dann gehts vom Zahlenbereich schon ok. Mhhm, darf man die Eingabezahlen auch zweimal sehen, Array zweimal durchlaufen, Datei zweimal lesen, dann könnte man in beiden Läufen sich auf sqrt(N) Bits bescheiden.
    Also das Multiplizieren halte ich nicht für angebracht, hab's als Spaßantwort rausgehauen.



  • irgendwelche anderen fragen?



  • Wenns wirklich C++-spezifisch sein muss, dann vielleicht sowas

    - Was sind pure virtual functions?
    - Warum keine exceptions im Dtor werfen?
    - Was ist RAII?
    - Was für Probleme kann man sich mit virtual inheritance einhandeln?

    (Sorry wenn die Sachen schon hier im Thread vorkamen.)

    Ansonsten würd ich aber eher versuchen, allgemeinere Skills rauszufinden.

    - Was ist eine closure?
    - Erfahrung mit Versionsverwaltung?
    - Was hast du so in der letzten Zeit gelesen? Bücher? Blogs? Foren? /r/programming? etc
    - Was für andere Programmiersprachen kennst du? (Gucken, ob du aus Spaß auch mal was neues lernst.)
    - Erzähl mal was über funktionale und imperative Programmierung.
    - Und über statische und dynamische typisierung.
    - Schonmal TDD ausprobiert?
    - Erzähl was mal zu nem Design-Pattern deiner Wahl.
    - Wann smellt code für dich?
    - Kennst du den Joel-Test?
    - Zeig mal irgendein Projekt von dir.

    Und dann natürlich so soft-skill/Persönlichkeits-Zeug, was aber nicht spezifisch für Programmierer-Vorstellungsgespräche ist.

    Das ist jetzt aber mehr so spontan hingeschrieben. Für ein tatsächliches Gespräch würde ich mir wahrscheinlich mehr Gedanken machen. 😉

    Achja, und vielleicht einfach vor irgendeine codility-Aufgabe oder so setzen und dich dabei erklären lassen und zugucken. 🙂

    Hier scheints auch einiges nettes zu geben. Hab aber noch nicht alles gelesen: http://www.reddit.com/r/cscareerquestions/wiki/index



  • Dobi schrieb:

    ...

    👎
    gut, dass ihr alles nichts zu entscheiden habt



  • Wie angedeutet. Ich bin kein Interviewer, sondern hab nur spontan auf die Frage geantwortet. Um tatsächlich herausfinden zu können, ob ein Kandidat was drauf hat, müsste ich mich vermutlich mehr mit dem Thema auseinandersetzen.
    Gibt es irgendwas spezielles an meinem Post, was dir besonders schlecht gefallen hat, oder war in deinen Augen einfach alles Müll? 😉



  • qweasdyxc schrieb:

    Dobi schrieb:

    ...

    👎
    gut, dass ihr alles nichts zu entscheiden habt

    👍



  • Lol, dann sagt doch mal bitte, was daran doof ist und wie man es besser machen könnte. Nicht, dass tatsächlich irgendwann der unwahrscheinliche Fall eintritt, dass ich in die Situation komme und nur Unfug frage. 😉



  • Dobi schrieb:

    2 Seiten gelöscht, weils mir zu doof wurde.

    edit:

    Dobi schrieb:

    - Was für Probleme kann man sich mit virtual inheritance einhandeln?

    Alle. Was für Probleme kann man sich einhandeln, wenn man sich vor dem Essen nicht die Hände wäscht? Auch alle. Soll der Prüfling jetzt irrelevanten Unfug und Paranoia vorbeten?

    Dobi schrieb:

    - Was ist eine closure?

    Ja, was denn?

    Dobi schrieb:

    - Erfahrung mit Versionsverwaltung?

    Und wenn nicht, kriegt er's in einer Minute beigebracht, helau.

    Dobi schrieb:

    - Wann smellt code für dich?

    Wann smellen Ideologien für Dich, wann Menschen, wann Programmiererinnen, wann Autos? Supi, also rumraten, welche meiner Vorurteile sich mit Deinen Vorurteilen decken.



  • Ach, ich würd das sehr nett rüberbringen. 😉
    Oh, es gab noch zwei Seiten nach meinem Post? Schade, hab ich leider verpasst.
    Meinst du, weil die Fragen zu leicht/dämlich sind? Klar, wenn man Gurus wie dich sucht, ist der Kram von mir blöd, aber manchmal stellt man ja auch Berufsanfänger ein. Um richtig gute Leute beurteilen zu können bin ich selbst noch nicht gut genug. Also, ich fänds cool wenn du mir noch verrätst, was an meinem Post so schlecht ist, weil ichs wirklich einfach nur gerne wissen würde.



  • Dobi schrieb:

    Oh, es gab noch zwei Seiten nach meinem Post? Schade, hab ich leider verpasst.

    Nein, zwei Seiten, die ich getippt hatte, weil ich Dir konkret antworten wollte, aber Deine Fragen wurden ja immer schlimmer. Hab den Text gelöscht vorm abschicken.

    Dobi schrieb:

    Meinst du, weil die Fragen zu leicht/dämlich sind?

    irrelevant, computerbild.

    Dobi schrieb:

    aber manchmal stellt man ja auch Berufsanfänger ein.

    Davon ging ich aus. Im Zweifel lass ihn einfach was programmieren, um zu sehen, ob er programmieren (lernen) kann. 😋



  • Ah, cool. Danke fürs Erklären.

    Bei virtual inheritance will ich rausfinden, ob er weiß, was das ist. Vielleicht malt er nen Diamanten und erklärt was. Es geht doch nicht darum, irgendwelche Antworten genau zu treffen sondern rauszufinden, ob er überhaupt über sowas nachdenkt.

    Auch bei der closure gehts nicht darum, Wikipedia auswendig zu können. Ich hatte gedacht, dass er dann vielleicht kurz ein Beispiel aufschreibt, wo das passend ist. Vielleicht benutzt er ein lambda um partial function application zu zeigen, oder wie man damit schick was in eine Eventloop schieben kann oder so.
    Bei C++ wärs dann noch gut wenn erklären kann wie der mit per value und per ref aussieht usw.

    Klar kann man Versionsverwaltung lernen. Auch hier gehts mir mehr darum insgesamt rauszufinden, ob er sowas kann. Wenn er sowas nicht kennt, ist das ein kleiner Hinweis darauf, dass er sicht nicht so sehr damit beschäftigt, in seinem "Handwerk" besser zu werden.

    Gut, die code-smell-Frage gefällt mir jetzt auch nicht mehr so sehr. Aber auch hier will ich doch nicht, dass er das triffst, was ich genau denke. Ich will ihn doch nur zum erzählen bringen, um einen Gesamteindruck zu bekommen. Wenn er von sich aus schon erzählt, z.B. wenn er von irgendwelchen vergangenen Projekten erzählt, müssen die speziellen Fragen natürlich gar nicht sein. 🙂

    Ja, Programmieren-Lassen ist super. Das meinte ich ja mit codility-Aufgabe (https://codility.com).
    Aber ich kenn halt auch Leute, die in solchen kleinen Projekt-Euler-mäßigen Aufgaben brillieren würden, aber die Computer-Bild-Trivialitäten von oben trotzdem gar nicht kennen und nichtmal versuchen, selbst sowas grundlegendes dazuzulernen.

    OK, ich hab beim Schreiben der Liste nicht drüber nachgedacht, wie das wohl rüberkommt. Ich hoffe, dass es jetzt nicht mehr ganz so bescheuert wirkt.



  • Ich finde man sollte einen Bewerber auf eine C++ Stelle nicht behandeln wie einen der gerade Angefangen hat und sich das 3 Youtube Tutorial Video reinzieht.
    Das implizieren z.B. die Fragen von Dobi für mich. Ist das wirklich nötig im Programmierumfeld? Muss man im Gespräch herausfinden ob er grundlegende Sprachfeatures und Idiome kennt?



  • Dobi schrieb:

    Bei virtual inheritance will ich rausfinden, ob er weiß, was das ist.

    Du willst herausfinden, ob er fürs Unternehmen nutzbringend ist.
    Sagt er jetzt "Ähm, Mist, hab's vergessen", so bringt ihm das als Anfänger sinnigerweise keinen Punktabzug, weils ausgeschrieben wäre "Ähm, Mist, hab's vergessen, es war zwar in mehreren Büchern drin, aber ich war jahrelang so schlau, sie nicht zu verwenden". Hab viel mehr Angst vor Leuten, die umständlich proggern, selbst wenn sie den Standard auswendig konnen, als vor Nubes, die solide und feige vorgehen.

    Dobi schrieb:

    Vielleicht malt er nen Diamanten und erklärt was.

    Ah, er soll die Probleme der Mehrfachvererbung aufzeigen. Hauptproblem ist natürlich, daß es sie in vielen Sprachen nicht gibt. 😃 Aber das ist ein ProblemAndererLeute. http://de.wikipedia.org/wiki/Hintergründe_zu_Per_Anhalter_durch_die_Galaxis#Problem-anderer-Leute-Feld

    Ohja, und daß sie fehlerverstärkend wirkt, wenn man Vererbung eh schon schief einsetzt. http://www.c-plusplus.net/forum/325554
    Auch ein PAL.

    Seh ich ein

    class IrgendwasManager
    

    wo "Irgendwas" für einen Allgemeinplatz wie Ressorce, Property, Ability oder so steht, dann weiß ich schon, daß das Projekt umkippt. Ah, das zum "smells".
    Auch ein PAL. Wobei ich mich als Prüfling dabei auch ganz leicht tief in die Nesseln setzen kann, wenn der Prüfer auch so ein -Manager-Programmierer ist oder (nicht selten) gar nicht proggern kann.

    Dobi schrieb:

    Es geht doch nicht darum, irgendwelche Antworten genau zu treffen sondern rauszufinden, ob er überhaupt über sowas nachdenkt.

    Ganz schwierig, sich dabei nicht von Schönrednern verarschen zu lassen.

    Dobi schrieb:

    Auch bei der closure gehts nicht darum, Wikipedia auswendig zu können.

    Hihi. Dreiviertelstunde Zeit für "Finde 10 Wikipedia-Artikel über Programmierthemen, die gravierende sachliche Fehler enthalten."

    Dobi schrieb:

    Klar kann man Versionsverwaltung lernen. Auch hier gehts mir mehr darum insgesamt rauszufinden, ob er sowas kann. Wenn er sowas nicht kennt, ist das ein kleiner Hinweis darauf, dass er sicht nicht so sehr damit beschäftigt, in seinem "Handwerk" besser zu werden.

    Oder daß er noch nicht beruflich damit zu tun hatte. Privat sollte er eh keins benutzen. Würde er es tun, müßte ich eher Ansgt bekommen, daß er auch umständlich proggert. Wobei man dann ja nachfragen kann, warum er keins verwendet, und erfährt, daß sein Backupsystem viel praktischer ist.



  • ScottZhang schrieb:

    Ist das wirklich nötig im Programmierumfeld? Muss man im Gespräch herausfinden ob er grundlegende Sprachfeatures und Idiome kennt?

    Wann willst du es sonst herausfinden? Hoffentlich noch in der Probezeit?



  • @Volkard:

    "Ähm, Mist, hab's vergessen, es war zwar in mehreren Büchern drin, aber ich war jahrelang so schlau, sie nicht zu verwenden"
    wär in meinen Augen auch eine sehr gute Antwort gewesen. 🙂

    "Ganz schwierig, sich dabei nicht von Schönrednern verarschen zu lassen."
    Das ist sicherlich immer schwer. Deshalb würd ich ihn ja auch eine Mini-Aufgabe programmieren lassen und nicht nur erzählen lassen.

    "Privat sollte er eh keins benutzen."
    Ich benutz auch für meine kleineren Privatprojekte, also die nur wenige Wochen gehen, git. Find ich jetzt nicht super umständlich, sondern praktisch. Wenn der Kandidat mir erzählt, wie er mit seinem Backupsystem besser klar kommt und sich das gut anhört, ist das für mich auch OK.

    Das waren ja nur Fragen, über die ich mit jemandem, der von selbst nicht viel erzählt, versuchen würde, in ein nettes Gespräch zu kommen. Dass es so rüberkam, als ob ich einfach nur "die richtigen" Antworten hören will, war wohl mein Fehler. Ich hätte es direkt anders formulieren und meine Intention hinter den Punkten erklären sollen. Die ist ja nur, herauszufinden, ob der jenige Spaß an der Sache hat und sich aus Eigeninitiative diesbezüglich was beibringt und deshalb lernt.

    @ScottZhang: Wenn ich schnell merke, dass der Bewerber was drauf hat, würde ich natürlich nicht diese Noob-Fragen runterleihern. Das waren ja nur Gedanken, die mir da so kamen, keine fester Plan. Ich hatte mir halt vorgestellt, wie ich herausfinde, ob einer, der bei der algorithmischen Beispielprogrammieraufgabe gut ist, nicht vielleicht doch ein faules Ei ist. 😉


Anmelden zum Antworten