Wie kann ich PHP-Kenntnisse in einem Interview testen? [geschlossen]

58

Mein Unternehmen muss einen PHP-Entwickler einstellen, aber in meinem Unternehmen verfügt niemand über PHP-Kenntnisse, und es ist schwierig, die PHP-Kenntnisse zu testen. Wenn es ein C / Java-Entwickler wäre, würde ich ihn bitten, eine schnelle Implementierung des Spiels des Lebens zu schreiben, aber PHP ist eine völlig andere Sprache.

Ich habe diesen Test mit Interesse gesehen:

http://vladalexa.com/scripts/php/test/test_php_skill.html

Hat noch jemand weitere Vorschläge?

Mascarpone
quelle
3
Interessanter Test, deckt aber nicht die SQL-Injection ab, auf die ich sicherlich eingehen würde. Ich denke, dieser Test ist ein guter Weg, um ihre Fähigkeit zu testen, festzustellen, wie PHP mit Variablen umgeht, und nicht viel mehr.
Ben Brocka
6
Stellen Sie auf keinen Fall Fragen zur Schreibweise von Standardfunktionsnamen. Die Benennung von PHP-Funktionen ist so inkonsistent.
Chris C
1
Mögliches Duplikat von programmers.stackexchange.com/questions/46274/…
Adam Lear
16
Ich würde mir weniger Sorgen um ihre PHP-Chops machen als vielmehr darum, ob sie programmieren, mit dem Team arbeiten, die Websicherheit verstehen usw.
Peter Loron,
12
Wenn niemand in Ihrem Unternehmen PHP gut kennt, ist es für Sie am besten, einen Skill-Testing-Service zu nutzen. http://tests4geeks.com/test/php-mysql - Ich mag dieses. Und wenn das Ergebnis gut ist, können Sie ihn bitten, PHP-Code zu schreiben. Zum Beispiel gibt es Studenten und Fächer in der Datenbank. Bitten Sie ihn, das HTML-Formular zu schreiben, in dem der Regisseur die Noten in der Tabelle bearbeitet (Die Schüler befinden sich in der linken Spalte, die Fächer in der oberen Reihe, die Noten an der Kreuzung).
Joseph

Antworten:

71

Code

  • Bitten Sie den Kandidaten, Code zu schreiben
  • Bitten Sie den Kandidaten, den Code zu lesen

Wenn Sie den Kandidaten bitten, Code zu schreiben, stellen Sie Folgendes sicher:

  • Der Code ist nicht trivial, aber klein
  • Sie erlauben den Zugriff auf das Handbuch und das Internet

Wenn Sie den Kandidaten zum Lesen des Codes auffordern, stellen Sie Folgendes sicher:

  • Der Code weist einige geringfügige Fehler auf
  • Der Code weist einige nicht triviale Fehler auf
  • Der Code funktioniert gut, kann aber leicht optimiert werden

Sie können drei oder mehr verschiedene Codeteile verwenden, mit dem einfacheren beginnen und nur dann mit dem nächsten fortfahren, wenn Sie feststellen, dass der Kandidat problemlos zurechtkommt. Wirf eine Rekursion ein, um die Dinge aufzupeppen.

Ressourcen

Fordern Sie eine detaillierte Liste der PHP-Ressourcen an, die der Kandidat verwendet. Bücher, Blogs, Foren, Magazine usw. So haben meine derzeitigen Arbeitgeber von StackOverflow erfahren .

Wenn der Kandidat StackOverflow oder Programmierer erwähnt, sollten Sie NICHT fragen oder versuchen, ihren Benutzernamen herauszufinden. Wenn sie für ihren Ruf werben wollten, hätten sie einen Link zu Karriere 2.0 in ihren Lebenslauf aufgenommen.

Frameworks

Jeder PHP-Entwickler sollte die gängigsten PHP-Frameworks kennen:

und mindestens eine von ihnen fließend beherrschen. Sie können für jedes Beispiel ein paar Codebeispiele bereithalten und den Kandidaten bitten, diese zu lesen und zu erklären, nachdem er Ihnen mitgeteilt hat, mit welchem ​​Beispiel er vertraut ist.

Debugging & Profiling

Ich hatte immer das Gefühl, dass PHP-Entwickler keine Fähigkeiten zum Debuggen und Profilieren haben (vielleicht nur die PHP-Entwickler, mit denen ich gearbeitet habe). Wenn Sie während der Diskussion feststellen, dass der Kandidat xdebug aktiv nutzt, kümmern Sie sich nicht um den Rest des Interviews und stellen Sie sie einfach ein. ;)

Input-Desinfektion

Das ist wichtig. Sie können mit einer Diskussion darüber beginnen, warum es wichtig ist, und dann nach den gebräuchlichsten Methoden fragen, um dies zu erreichen. Diese Diskussion wird Ihnen helfen, was Sie fragen sollen.

Einige Hinweise:

PHP Snafus

In dieser exzellenten Diskussion finden Sie viele PHP-Snafus . Wenn Sie sich für eine leitende Position bewerben, sollten Sie auf jeden Fall nach einigen fragen. Einige Beispiele:

PHP's Umgang mit numerischen Werten in Strings:

"01a4" != "001a4" // true
"01e4" == "001e4" // also true

Gültiger PHP-Code :

System.out.print("hello");

In PHP ist ein String so gut wie ein Funktionszeiger:

$x = "foo";
function foo(){ echo "wtf"; }
$x(); # "wtf"   

Unit-Test

Muss ich mehr sagen?

Fazit

Ein guter PHP-Entwickler sollte eine Vielzahl von Fähigkeiten und Talenten kombinieren:

  • Ein gutes Verständnis von HTTP
  • Ein gutes Verständnis der Apache-Konfiguration (auch wenn Sie einen anderen Webserver in Ihrem Unternehmen verwenden)
  • Zumindest ein grundlegendes Verständnis von JavaScript
  • Ein gutes Verständnis von HTML / CSS

Die Liste geht weiter und weiter. Stellen Sie sicher, dass Sie das Interview auf die spezifischen Anforderungen der Stellenausschreibung zuschneiden. Sie möchten nicht nur einen guten Entwickler einstellen, sondern einen guten Entwickler, der genau das leistet, was Sie sofort von ihm / ihr erwarten.

yannis
quelle
22
Insgesamt eine gute Antwort, aber ich bin nicht einverstanden mit dem Teil "Frameworks" und dem Teil "Basic Performance". Ob Sie ein bestimmtes Framework kennen oder nicht, sagt nicht viel über Ihre Qualitäten als Programmierer aus. Zum Performance-Teil: Wenn Sie auf dieser Ebene optimieren, sollten Sie PHP wahrscheinlich gar nicht erst verwenden. Ich treffe eine Auswahl zwischen den Alternativen, die Sie jeden Tag Dutzende Male auflisten, aber immer basierend auf Lesbarkeit und Funktionalität, nicht auf Leistung. Die richtige Antwort auf diese Leistungsfragen lautet: "Es spielt meistens keine Rolle."
tdammers
1
@YannisRizos: Obwohl dies die Integration in ein Team am wahrscheinlichsten erleichtert, gehen Sie davon aus, dass sie in der Firma des OP eines dieser beliebten Frameworks verwenden. Wenn dies jedoch nicht der Fall ist, würde sich keines der Frameworks als erwiesen erweisen. Vielleicht meinten Sie diesen Teil, um seine Fähigkeit zu testen, mit einem Framework zu arbeiten, anstatt mit diesen Frameworks? (
Hinweis
2
@Petah Das macht überhaupt keinen Sinn, besonders in der Interviewphase, und ich würde es vermeiden, in einem Unternehmen zu arbeiten, das die Leute bittet, solche Informationen während des Interviews preiszugeben. Die ganze Argumentation, etwas zu verbergen, ist pervers, ich kümmere mich nicht darum, dass mein Arbeitgeber weiß, wie ich meine Freizeit verbringe, und das ist nur so. Wenn ich daran interessiert bin, mein Programmiererkonto selbst zu veröffentlichen, ist das eine andere Geschichte ...
yannis
1
@Petah Nun, ich hoffe ehrlich, dass zukünftige Arbeitgeber nicht versuchen, meine Persönlichkeit durch meine Programmiereraktivitäten kennenzulernen (die 25% -35% ihrer Zeit mit einem bösen Nazi-Mod verbringen möchten;)
yannis
1
Nicht einverstanden mit der Rahmensache. Gute, moderne Praxis besteht darin, anwendbare Komponenten aus Frameworks mit dem von Ihnen benötigten Composer zu verwenden, anstatt ein gesamtes Framework zu verwenden. In der Tat kann das gleiche jetzt auch in der JS-Welt gesagt werden.
John Hunt
44

Der Test, mit dem Sie verbunden sind, ist interessant, und die Antwort von Yannis Rizos ist großartig, aber ich denke, was auch wichtig ist, ist Folgendes:

Wenn Sie einen guten Entwickler benötigen, suchen Sie nicht nach PHP-Entwicklern. Suchen Sie nach einem guten Entwickler, der sich mit PHP auskennt. Das heißt, mindestens die Hälfte des Interviews sollten Sie Fragen stellen, die nicht viel mit PHP-Syntax oder PHP-Funktionen zu tun haben.

Fragen Sie ihn, was MVC ist, was AJAX ist, wie HTTP funktioniert, wie REST funktioniert, wie SQL zusammenarbeitet, einige Datenstrukturen, einige Leistungsgrundlagen (wie Sie messen, wie Sie sich verbessern), Testgrundlagen, Sicherheitsgrundlagen (XSS, XSRF, Injektionen, wie Sie verteidigen), grundlegende Programmierkenntnisse in Bezug auf typische PHP-Domänen (Web, Netzwerk, Datenumwandlung usw.)

Wenn er damit einverstanden ist, fordern Sie ihn auf, einen einfachen Code zu schreiben, eine einfache Aufgabe auszuwählen, die nicht lange dauern sollte - wie Wörter mit den meisten Vokalen hintereinander im Text zu finden oder jedes Wort im Text umzukehren oder zwei zu multiplizieren Matrizen. Sie können ihn auch bitten, das Game of Life in PHP zu implementieren, wenn Sie möchten :)

Wenn er das besteht, können Sie mit kniffligeren PHP-Fragen fortfahren, aber legen Sie nicht zu viel Gewicht darauf. Er kann das meiste im Handbuch lesen und was er nicht lesen kann, lernt er ziemlich schnell, wenn er gut ist. PHP ist einfach aufgebaut. Wenn er also ein guter Programmierer ist und über gute PHP-Kenntnisse verfügt, kann er wahrscheinlich aufholen. Wenn er weiß, wie man im Allgemeinen programmiert, ist das Erlernen des Programmierens in PHP einfacher als umgekehrt - das Wissen über die PHP-Syntax-Minutien ist nicht wichtig, wenn Sie nicht verstehen, wofür Unit-Tests gedacht sind oder wie Sie XSS-Probleme beseitigen können.

STASM
quelle
13

Die Antwort von Yannis Rizos ist zwar gut - ich weiß, dass ich diesen Test nicht bestehen würde, und ich könnte diese Antwort als Hilfsmittel verwenden, um herauszufinden, wo ich mich auf die Verbesserung meiner PHP-Chops konzentrieren soll, aber ich denke, es lohnt sich, eine Programmierung zu finden Kumpel, der PHP kennt, um am Interviewprozess teilzunehmen. Alle Fragen in der vorherigen Antwort sind gut, aber ohne Fachkenntnisse ist es schwierig, die Qualität der Antworten zu beurteilen.

Das heißt, je nachdem, was Sie brauchen, wie andere gesagt haben, sind allgemeine Programmiermöglichkeiten und Team-Fit wahrscheinlich wichtiger als sprachspezifische Kenntnisse.

cori
quelle
5
+1 für I think it would be worth your while to find a programming buddy who knows PHP to sit in on the interview process., toller Vorschlag.
Yannis