2009-09-25 7 views
6

Ich interviewe leitende Entwicklerkandidaten und möchte sie als Teil des Interviews ein Design-Problem durchdenken lassen. Ich möchte etwas, das Frontend, Mitte und Datenbank betrifft. Es sollte eine Datenmodellierungsherausforderung und mehr haben. Was denken Sie?Benötigen einfache Systemdesign-Probleme für Interviews

+1

An welche Designprobleme denken Sie gerade? Ich kann mir zwei Optionen vorstellen, entweder "Wie würden Sie [System hier einfügen]?" Oder "Wie würden Sie über dieses [einige überraschend schwere Problem] hinwegkommen?* " – Esko

Antwort

2

Geben Sie einen Überblick über ein Design für eine Anwendung für einen Außendienstmitarbeiter auf der Straße, wo Bestellungen von Einzelpersonen aus mobilen Geräten eingegeben werden.

sollte das System

  1. Webapplikation
  2. Rich-Client-App

haben mit einem lokalen Abschätzungs Engine Wie Sie das Design ändern würden die Leute werden getrennt eine Träger Datenbank zu handhaben , damit sie die Aufträge noch eingeben und später abstimmen können?

Die Antwort enthalten könnte:

  1. Auswirkungen auf die Datenbank
  2. Gestaltung des lokalen Client
  3. Benutzer-Interaktion gibt

fragen jetzt, wo dieses System Sicherheitslücken hat und wie die Offline-Anforderungen wirken sich auf diese Sicherheitsanfälligkeiten aus.

Das sollte genug sein, um jemanden ins Schwitzen zu bringen oder den wirklich kreativen Start in eine gute Design-Session.

Wenn Sie wirklich, sie betonen wollen, halten mit OK unterbrechen, bekomme ich das bitte an den nächsten Punkt bewegen

+0

ich denke, wenn jemand mich fragte" Jetzt fragen, wo dieses System Sicherheitslücken hat und wie die Offline-Anforderung diese Sicherheitslücken beeinflusst "Ich werde wirklich schwitzen ... – iceangel89

+1

" Ich bekomme das, bitte weiter zum nächsten Punkt "ist wirklich SCHLECHT ... aber, um einige der Sicherheitslücken zu sagen und wie die Offline-Anforderung sie beeinflusst? – iceangel89

0

Zuallererst fragen Sie sich, ob der Job selbst diese Fähigkeit erfordert - werden Programmierer tatsächlich für die Datenmodellierung verantwortlich sein. Ich habe in so vielen Interviews als Interviewer und Interviewpartner gesessen, wo die sinnlosesten Problemlösungs- und Papierprogrammierungsaufgaben gestellt wurden. Der beste Weg, einen Programmierer zu interviewen, ist, sich hinzusetzen und mit ihnen etwas zu programmieren.

0

Die Frage, die mir gestellt wurde, war: "Wie würden Sie von Anfang bis Ende eine Web-App im Netflix-Stil erstellen? Nehmen wir an, dass sie dieselbe Skalierung wie Netflix unterstützen muss."

-1

Ich denke, Andy das Grundgerüst hat, bemerkt er hat bereits einige stöhnen seine gehen Art und Weise (die ich stimme mit BTW) nehmen es als eine "kreative Einführung in eine gute Design-Session." und betone sie nicht mit: Ich bin OK, du bist in Ordnung, aber Sie sind Design ist nicht OK, wenn Sie wirklich wissen, wie das Design funktioniert und wie man programmiert und einen guten kugelsicheren Beweis dafür, warum das Design ist fehlerhaft. Und eine andere Ebene zu prüfen ist, werfen Sie nicht den Ph.D. Dissertation "Jede Frage" Stil, es sei denn, Sie haben einen tatsächlichen Ph.D. gegenüber von dir im Interview-Stuhl. Master-Level und niedriger behandeln nicht den Stress oder richtig und die wahre Ph.D. wird dich auf den Boden nageln, wenn du versuchst, durch das Interview mit einer verbilligten Form davon zu jagen .... große Zeit.

Es ist die Frage, wo dieses System Sicherheitslücken hat und wie die Offline-Anforderung diese Sicherheitslücken betrifft. wo Andy zeigt den Wert von Feld Erfahrung, Sie haben die ganze Kartoffel genau dort und er gibt Ihnen die Plüsch Teppich-Setup zu verpassen, dass Sie mit Beklagen, wie man den Befragten Stress - wie Interviewer nicht wissen, wie zu tun Das. Wie immer, das größte Risiko kommt von innen ~ aber kein Kandidat wird Ihnen das sagen.

Es sei denn, sie haben 50.000 Stunden Feld Erfahrung.

@ iceangel89: Was machst du, wenn du eingestellt wirst, um jemandes Fall zu nehmen?

{Wenn es fünfzig Millionen auf dem Spiel gibt, werden sie nichts dagegen haben, Ihnen das Geschäft zu geben, und ich meine es nicht mit ihnen. }

0

Ich denke nicht, dass es immer die beste Wahl ist, einen solchen Fall zu tun. Dies funktioniert nur für Senioren, die auch für neue Kontakte gebraucht werden müssen (Berater vielleicht?). Was Sie testen, ist nicht, wie gut jemand ein System entwickeln kann, sondern wie gut jemand mit Stress umgeht und/oder sich in einer Konversation bluffen kann.

Ich hatte meinen Anteil an Interviews von beiden Seiten des Tisches und eine Technik hat meine Aufmerksamkeit erregt. Ich weiß, dass sowohl Avanade als auch Microsoft dies für technische Leute verwenden (oder verwenden).

Sie geben dann nicht-technische Rätsel, die sie lösen können, indem sie logisch denken. Sie sollten sich bewusst sein, dass es nicht darum geht, zur richtigen Antwort zu kommen, sondern es geht darum, wie man zu einer Antwort kommt, die Ihnen sagt, ob jemand gut darin ist, Probleme zu lösen. Und darum geht es beim Programmieren und Entwerfen von Software, oder?

Programmiersprachen und Technologien können gelernt werden. Talent, um Probleme zu lösen, kann nicht erlernt werden.

0

Nach mir ein leitender Entwickler, der sollte über

  1. wissen bei der Gestaltung einer n-Tier-Architektur einbinden wollen Was Design-Muster ist?
  2. Kennen Sie UML? (Objektorientierte Programmierung)
  3. Was ist der Unterschied zwischen Analyse und Design?
  4. Haben Sie an einer lose gekoppelten Softwarearchitektur gearbeitet? Wenn ja, wie hast du es erreicht?

und so viele ..

0

dies tun Sie wird zeigen, ob der Kandidat ein solches System in wenigen Minuten entwerfen können; mit Betonung auf "wenige Minuten". Dies ist wahrscheinlich nicht das Szenario, das er/sie bei der Arbeit für Sie konfrontiert wird, so dass es Ihnen nicht sagen kann, was Sie wissen müssen.

Warum machst du es nicht umgekehrt? Bitten Sie sie, Ihnen etwas über das Design einer Anwendung zu erzählen, die sie in der Vergangenheit entwickelt haben.

0

Danke an alle. Das ist eine großartige Diskussion. Ich mag die Idee, ein einfaches Designproblem zu stellen, sie entwerfen zu lassen und dann nach Sicherheit und Skalierbarkeit zu fragen. Ich plane, all dies mit einigen einfachen Programmieraufgaben zu verfolgen. Ich möchte die Kandidaten wirklich nicht stressen, aber ich möchte auch gute Leute finden.