Ich programmiere seit einigen Jahren in C # und XML. Ich habe nur die Grundlagen dieser Sprachen verwendet und habe im Web Informationen wie Arrays und Textmanipulationen überlebt. Aber wenn ich ein Interview bekomme, fragen die Interviewer nur fortgeschrittene Fragen - ich fand die Antworten später in den Advanced-Abschnitten in den Büchern zu diesem Thema.
Warum stellen die Interviewer solche Fragen? Der Job sieht fast genauso aus wie das, was ich vorher gemacht habe, also muss man fortgeschrittenes Wissen haben, wie zum Beispiel welcher Klassen-Delegat oder XPath-Befehle.
Fragen sind:
Es gibt zwei Gründe, warum ich sie frage.
Normalerweise wird eine Frage von der einen oder der anderen sein, aber nicht von beiden. Beide sind jedoch sehr wertvoll beim Screening eines perspektivischen Mitarbeiters.
Auch könnte die Frage für die Position nicht wirklich "fortgeschritten" sein. Es ist davon auszugehen, dass Senior-Level und / oder Architekten Fragen beantworten können, die ein Junior bis Mid-Level nicht beantworten kann.
Vielleicht, weil sie versuchen, Programmierer zu finden, die mehr wissen als das Grundlegende. Wenn sie versuchen, zwischen einem Kandidatenfeld zu unterscheiden, ist es nicht hilfreich, Fragen zu stellen, auf die jeder die Antwort weiß - wie wählen Sie unter diesen Kandidaten aus? Wenn Sie nur 1 oder 2 aus einem Pool von Kandidaten einstellen, müssen Sie einige schwierigere Fragen finden, die nur 1 oder 2 aus dem Pool beantworten können.
In manchen Fällen möchte ich die Antwort falsch machen.
Einer der Gründe, warum ich gerne eine Frage stelle, von der ich denke, dass der Bewerber sich irren wird, ist zu sehen, wie sie sich an die Situation anpassen. Wie sie damit umgehen, etwas falsch zu machen und mit jemandem umzugehen, der ihnen sagt, wie sie antworten sollen usw. Wenn sie sehr defensiv oder unhöflich sind, wenn Sie ihnen sagen, dass sie falsch sind, dann ist dies ein guter Hinweis darauf, wie sie in einem Team arbeiten Ideen werden herausgefordert.
Wenn sie die Lösung oder Empfehlung nehmen und erkennen, dass sie daraus lernen oder sie sogar hinzufügen können, ist das normalerweise ein Zeichen von jemandem, mit dem man leicht arbeiten und "außerhalb ihrer Box" arbeiten kann. Wenn sie nur Ausreden machen und herumtanzen und versuchen zu sagen, warum sie Recht haben oder Recht haben sollten (in Fällen, in denen das eindeutig nicht der Fall ist), dann sagen sie mir, wenn das gleiche Problem in der Zukunft auftritt, wird dieser Bewerber Kopfschmerzen verursachen / p>
Nicht so besorgt um die Antwort, mehr daran interessiert, wie sie auf die Frage / Lösung reagieren.
Ein anderer Grund wäre, ihr Niveau bei der Einstellung zu messen. Sie könnten für eine Reihe von Positionen mieten, aber nicht sicher, wo dieser Bewerber passt. Harte Fragen, die Problemlösung und Detailgenauigkeit zeigen, können es manchmal einfacher machen, ihre Fähigkeiten zu kategorisieren.
Ich stelle erweiterte Fragen aus ein paar Gründen:
Einige meiner Fragen sind die fortgeschrittene Verwendung von Dingen, die jeder wissen sollte (keine Quizfrage) - Ich möchte Sie durch die Antwort vernünftig sehen lassen, indem Sie das Wissen verwenden, das Sie haben, aber in einer Weise, die nicht üblich ist.
Ich möchte sehen, was passiert, wenn du etwas nicht weißt - gibst du auf?
Ich möchte Leute einstellen, die das, was sie tun, ernst nehmen. Leute, die sich wirklich für die Technologien interessieren, die sie benutzen, neigen dazu, das fortgeschrittene Zeug zu kennen.
Ich möchte sehen, ob es Lücken gibt, in denen man einfach nicht weiß, dass ein ganzes Gebiet des Wissens überhaupt existiert. Zum Beispiel, in Ihrem XPath-Beispiel - ich könnte damit einverstanden sein: "Ich glaube, dass XPath verwendet werden könnte, um dies zu lösen, aber ich weiß es nicht gut genug, um es hier heraus zu schreiben" - dann würde ich ihnen zeigen ein wenig XPath und sehen, ob sie es anwenden könnten. Wenn Sie nicht einmal wissen, dass XPath existiert, wird Google Ihnen nicht helfen.
Wahrscheinlich bekommen sie nur ein Maß dafür, wo du bist. Sie sind wahrscheinlich selbst an diesem Problem hängengeblieben und wollten vielleicht sehen, ob Ihnen eine Antwort an den Füßen einfällt.
Ich habe die gleichen Arten von Fragen erlebt, und bedenke, wenn ich Programme verwende, die übermäßige Ressourcen verwenden, wirft mich diese Art von Dingen normalerweise ab. Ihr Verlust.
Weil Kompetenz als Programmierer sowohl Tiefe als auch Breite des Wissens beinhaltet.
Der Interviewer versucht, Ihr Wissen zu erweitern, und er entzieht sich, indem er eine Frage aus dem letzten Kapitel dieses Buches "entlehnt".
Wirklich, das ist schlampige Arbeit seinerseits, die sich auf eine Frage stützt, um Ihr Fachwissen zu messen. Sie haben vielleicht geringe Programmierkenntnisse, sind aber erst kürzlich auf das Schlagwort gestoßen und können das Interview hauen.
Ich habe mich einmal verbrannt, als ich einen Kandidaten interviewt habe, der ein hohes Maß an C-Expertise besitzt. Es stellte sich heraus, dass er "C for Dummies" las und BS durch den Interviewprozess führte. Ich gebe zu, dass ich mich nicht auf seine Programmierfähigkeiten konzentrierte, sondern nach anderen Aspekten suchte, die er auch BS erreichte. Stellt sich heraus, sein gesamter Lebenslauf war eine Packung Lügen.
Heute stelle ich sicher, dass der Kandidat über Kenntnisse in den Bereichen Variabler Geltungsbereich, Persistenz, Zeigerarithmetik, Basisalgorithmen, Strukturierte Programmierung, Objektorientierte Programmierung, Polymorphismus, Multitasking und Interprozesskommunikation verfügt. Ich werde ihn über seine Debugging-Fähigkeiten befragen und Details wie Rennbedingungen, Heisenbugs und Sicherheitsschwachstellen einbeziehen.
Abhängig vom Job werde ich nach Erfahrungen in der Zielsprache fragen - wie zB key = & gt; -Wert-Maps (Arrays) in PHP, Swing-Programmierung in Java, Event-Handling in C #, Tabellen vs CSS in html-you Mach das Bild.
Wenn der Kandidat den ersten Teil des Interviews besteht (ich weiß es normalerweise innerhalb von 5 Minuten), werde ich ihm dann einen Ordner geben und ihn in den Kaffee-Raum (schöne Couch und Tisch) schicken, um dort 20 Minuten vorzubereiten eine Code-Überprüfung für ein ausgewähltes Modul.
Dann sende ich die Truppen ein - die Angestellten werden angewiesen, das Kaffeehaus normal zu benutzen, sich vorzustellen und eine Minute lang Konversation zu führen.
Was ich suche, ist die Fähigkeit, sich auf eine Aufgabe zu konzentrieren (eklatante ADHS), die Fähigkeit, unter Druck zu arbeiten, und die zwischenmenschliche Dynamik.
Wenn der Kandidat zurückkehrt, habe ich ihn als Hauptmoderator und beginne unseren normalen Code-Review-Prozess. Das erste, was ich suche, ist, wenn er die Seite mit dem Titel "Code Review Process" liest. Ich suche nicht nach ihm, um den Bericht zu vervollständigen - ungefähr 10 Minuten sind genug. In der Tat, je weniger Hauptlinien verarbeitet werden, desto besser - im Rahmen des Zumutbaren.
Ich bin seit langer Zeit nicht mehr von einem neuen Mitarbeiter verbrannt worden.
Ihr Nutzername sagt Ihnen, dass Sie gerne codieren (duh), aber Ihre Frage deutet darauf hin, dass Sie es nicht tun. Wenn Sie Codierung wirklich mögen, dann sollten Sie es lieben, darüber zu lernen. Diese Fragen, die Sie aufgelistet haben, sind nicht so weit fortgeschritten.
Selbst wenn diese Fragen vorgebracht wurden, versucht der Interviewer abzuschätzen, wie viel Wissen Sie in dem Bereich haben, in dem Sie sagen, dass Sie Wissen haben. Sie versuchen auch abzuschätzen, wie gut Sie in Ihre Gruppe passen würden.
P.S. Nicht zu gemein, aber wenn Sie mit XML programmieren und nicht wissen, was XPath ist, dann sind Sie ein wenig weit zurück.
1.Welche Version von XSL verwendet .NET 3.5?
Weil sie wichtige Dinge nicht von unwichtigen unterscheiden können. Schlechtes Zeichen.
2.Was XPath-Befehl, um den Wert in Element X zu erhalten?
Weil sie sehen wollen, ob Sie XPath kennen. Dies kann entweder sein, weil sie es ausgiebig nutzen und Sie es brauchen, um ihre Arbeit zu erledigen, oder weil sie denken XPath-Wissen == Fähigkeit.
3.Was sind Klassendelegaten in C #
?(Ich habe noch nie den Begriff "Klassendelegierter" gehört und eine Google-Suche zeigt keine Definition, also nehme ich an, du meinst nur "delegieren"). Delegierte können kaum als ein fortgeschrittenes Thema angesehen werden.
4. Erlaubt C # die Vererbung mehrerer Schnittstellen?
Wenn sie wirklich nach der "Schnittstellenimplementierung" gefragt haben, ist das ein Teil des grundlegendsten Konzepts, also ist es eine gültige Frage (obwohl zu einfach, um wirklich etwas zu bedeuten). Wenn sie wirklich nach "Interface-Vererbung" gefragt haben, ist es mehr Trivialität, aber ich würde immer noch akzeptabel sagen. Bonuspunkt für sie, wenn sie gefragt haben, was "Schnittstellenvererbung" wirklich bedeutet.
5.Wie greifen Sie in C # auf GAC zu?
Das ist die Art von Dingen, die jedes Team EINE Person haben muss, die es weiß. Ich würde sagen, es ist auch ein Hinweis auf Seniorität (worüber ich übrigens nicht viel weiß), da niemand über diese Dinge liest, der einzige Weg, das herauszufinden, ist, gezwungen zu sein, ein Problem der realen Welt zu lösen.
>Ich will Sie nicht beleidigen, aber vielleicht ist Ihr Verständnis der Arbeit nicht tief genug und erfordert in der Tat Kenntnisse über fortgeschrittene Techniken Außerdem können Sie viele Dinge mit grundlegenden Methoden tun, aber fortgeschrittene Methoden könnten den besseren Weg zur Implementierung von Komplexität, Implementierungszeit oder Wartbarkeit bieten.
Es gibt viele mögliche Gründe. Sie dürfen:
Ich habe gehört, dass diese wirklich nicht mehr benutzt werden, oder zumindest nicht annähernd so viel wie früher, aber das könnte Sie interessieren. Ich habe vor ein paar Tagen ein ziemlich cooles Kurzbuch gelesen, das sich mit den manchmal gestellten Fragen nach dem "Microsoft-Stil" -Logikinterview beschäftigen muss. Ich bin ein paar Kapitel in und es gibt eine nette kleine Geschichte der Tech-Bereich der Interview-Stil und hat eine Tonne von logischen Problemen, komplett mit Antworten in den Rücken.
Es heißt "Wie würdest du Mount Fuji bewegen" und es ist amazon für ziemlich billig.
Ich habe gerade eine Interviewrunde abgeschlossen, in der ich drei oder vier "einfache" C # -Code-Fragmente verwende, die der Interviewte durchsehen und versuchen wird zu erklären, was das erwartete Ergebnis sein wird. In jedem Fall ist das Codebeispiel nicht mehr als zehn Zeilen klar formatierten Codes, der grundlegende C # -Fertigkeiten (Vererbung, Generika, anonyme Delegierte) verwendet; auch in jedem Fall wird es ein "Gotcha" geben - aber wie andere gesagt haben, ich gebe diese nicht als Gehässigkeit an, sie sind da, weil ich sehen möchte, wie der Kandidat reagiert, wenn er mit etwas konfrontiert wird, was nicht stimmt funktionieren wie erwartet.
Wir hatten kürzlich einen Kandidaten, der den ersten Teil seines Interviews durchlaufen hatte; beeindruckender Lebenslauf, war anscheinend der Hauptentwickler eines Teams von 10 und hatte Code in C # seit 1.0 entwickelt; hatte aber anscheinend keine Ahnung was "Console.WriteLine ()" tat (noch konnte er eine Vermutung riskieren), noch konnte er mit dem winzigen anonymen Delegiertenbeispiel fertig werden.
Eine andere Kandidatin war selbstkritisch und wusste nicht, wie sie sich selbst als Entwicklerin bewerten sollte - sie hatte weniger Erfahrung als die ehemalige Kandidatin, aber sie durchlief die Code-Beispiele, fiel auf ein paar der "Gotchas" aber die richtigen Fragen gestellt, um die richtigen Schlüsse zu ziehen und wirklich aus der Erfahrung zu lernen. Unnötig zu sagen, sie wurde angestellt.
Wenn Sie Domain-spezifisches Wissen (wie XML) beanspruchen, sollten Sie erwarten, dass Sie spezifische (und manchmal harte) Fragen zu dieser Domain gestellt bekommen; Wenn ich einen leitenden ASP.NET-Entwickler interviewe und sie keine Ahnung von HttpModules oder HttpHandlers haben (wie einige der kürzlich Befragten), dann fangen die Alarmglocken an zu läuten.
Ich stelle erweiterte Fragen, um zu sehen, wie die Leute das Problem lösen. Ich stelle gerne Fragen, die ich aus diesem Grund nicht kenne.
Ich möchte jemanden, der ein kritischer Denker ist und nicht nur ein Akademiker, der mir Lehrbücher vortragen kann.
Sie wollen jemanden mit praktischen Erfahrungen finden, der über das hinausgeht, was in Anfängerkursen vermittelt wird. Wenn mein Unternehmen Bewerber befragt, stellen wir oft fest, dass die meisten Bewerber nicht lösen können, was wir als sehr einfache Programmierprobleme betrachten, nur weil sie die API nicht kennen oder nicht verstehen, wann sie verschiedene grundlegende Datenstrukturen verwenden müssen. p>
Wenn Sie einen Interviewer beeindrucken wollen, arbeiten Sie an eigenen Programmierprojekten außerhalb des Unterrichts. Lernen Sie einen guten Teil der Sprach-API und lernen Sie die Bibliotheken von Drittanbietern kennen, die Ihre Arbeit erheblich vereinfachen können.
Ein weiterer Grund ist, Ihre Antwort auf eine Frage abzuschätzen, von der Sie wirklich nicht erwarten, dass Sie die Antwort wissen. Problemlösungsfähigkeiten sind von wesentlicher Bedeutung. Wenn Sie also Fragen stellen, die Sie bereits kennen, wird die Antwort nicht darauf eingehen, oder?
Es gibt sogar Fälle, in denen Unternehmen ungerade, nicht programmatische Fragen stellen, nur um zu sehen, wie Sie sich durch ein Problem hindurchdenken. Es gibt die klassische Frage "Warum sind Schachtabdeckungen rund?", Die bei Microsoft-Interviews angeblich gefragt wurde.