如何在面试中测试PHP技能?[关闭]


58

我的公司需要聘用PHP开发人员,但是没有人在我公司中拥有PHP知识,因此我们很难测试PHP技能。如果是C / Java开发人员,我会请他编写《生命游戏》的快速实现,但是PHP是一种完全不同的语言。

我感兴趣地看到了这个测试:

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

还有其他建议吗?


3
有趣的测试并不涵盖SQL注入,尽管我一定会介绍。我猜想该测试是测试他们确定自己是否熟悉PHP如何对待变量的能力的好方法,而不是其他很多事情。
Ben Brocka

6
无论您做什么,都不要问有关标准函数名称拼写的问题。PHP函数命名如此不一致。
克里斯·C


16
我就不用太担心自己的PHP排骨和更多,如果他们能编程,与团队一起工作,了解网络安全等
彼得Loron

12
如果您的公司中谁都不太了解PHP,那么最好的方法是使用一些技能测试服务。http://tests4geeks.com/test/php-mysql-我喜欢这个。然后,如果结果良好,您可以要求他编写一些PHP代码。例如,数据库中有学生和学科。请他编写HTML表单,导演在表格中编辑表格中的标记(学生在左列,主题在第一行,标记在交叉点)。
约瑟夫

Answers:


71

  • 要求应聘者写代码
  • 要求考生阅读代码

如果您确实要求应聘者编写代码,请确保:

  • 该代码不平凡但很小
  • 您允许访问手册和互联网

如果您确实要求应聘者阅读代码,请确保:

  • 该代码有一些琐碎的错误
  • 该代码有一些非平凡的错误
  • 该代码可以正常工作,但可以轻松对其进行优化

您可以使用三段或更多段不同的代码,从较简单的代码开始,直到看到候选人轻松应对后,再前进至下一个代码。进行一些递归,以使事情变得有趣。

资源资源

要求候选人详细使用PHP资源的列表。书籍,博客,论坛,杂志等。这就是我目前的老板关于StackOverflow的发现。

如果候选人提到StackOverflow或Programmers,则不应询问或尝试找出其用户名。如果他们想宣传自己的声誉,他们的简历上将包含Careers 2.0链接。

构架

每个PHP开发人员都应该了解最受欢迎的PHP框架:

并至少流利其中之一。您可以为每个样本准备一些代码样本,并在他们告诉您最熟悉的样本之后,要求应试者阅读并解释它们。

调试和分析

我一直感觉到PHP开发人员缺乏调试和性能分析技能(也许只有与我合作过的PHP开发人员)。如果在讨论中您发现应聘者积极使用xdebug,请不要理会其余的面试,只雇用他们。;)

输入消毒

这个很重要。您可以从讨论为什么如此重要开始,然后要求实现它的最常用方法。该讨论将帮助您提出什么问题。

一些提示:

PHP的af

在这个精彩的讨论中,您会发现很多PHP的缺点。如果您要面试高级职位,则应明确询问其中一些内容。一些例子:

PHP对字符串中的数值的处理:

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

有效的PHP代码

System.out.print("hello");

在PHP中,字符串和函数指针一样好:

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

单元测试

需要我多说?

结论

一个好的PHP开发人员应结合各种技能和才能:

  • 对HTTP有很好的了解
  • 很好地了解Apache配置(即使您在公司中使用其他Web服务器)
  • 至少对JavaScript有基本的了解
  • 对HTML / CSS的深入了解

清单一直在继续。确保您根据面试的特定需求量身定制面试,您不希望只雇用优秀的开发人员,而是要聘请一位优秀的开发人员,该人员擅长于您立即需要他/她去做的事情。


22
总体而言,这个答案很好,但是我对“框架”部分和“基本性能”部分意见不同。是否知道某个框架并不能说明您作为程序员的素质。关于性能部分:如果您在此级别进行优化,则可能一开始就不应该使用PHP。我每天在您列出的备选方案中进行数十次选择,但总是基于可读性和功能性,而不是性能。这些性能问题的正确答案是“在大多数情况下都没有关系”。
tdammers 2011年

1
@YannisRizos:尽管它很可能使团队集成变得更容易,但是您假设他们在OP的公司中使用了这些流行的框架之一,但是如果他们不知道这两个框架中的任何一个都将一事无成。也许你的意思是这部分,以此来测试他的工作能力一个框架,而不是与那些框架?(以防万一:在我工作的公司中,我们使用内部开发的框架)
Purefan 2012年

2
@Petah根本没有任何意义,尤其是在面试阶段,我会避免在一家要求人们在面试中透露类似信息的公司工作。整个“隐藏某物”的推理都是错误的,恕我直言,我不在乎我的雇主知道我如何度过闲暇时间,仅此而已。如果我有兴趣自己公开我的程序员帐户,那就
另当别论了

1
@Petah好吧,老实说,我希望未来的雇主不要试图通过我的程序员活动来了解我的性格(他们想花25%-35%的时间与邪恶的纳粹mod在一起;)
yannis 2012年

1
不同意框架的事情。优良的现代实践是使用所需的作曲器来使用框架中的适用组件,而不是使用整个框架。事实上,同样可以在JS世界可以说现在太..
约翰·亨特

44

您链接到的测试很有趣,Yannis Rizos的答案很好,但是我认为重要的是:

如果您需要优秀的开发人员,请不要寻找PHP开发人员。寻找一个了解PHP的优秀开发人员。这意味着,至少有一半的面试您应该提出与PHP语法或PHP函数无关的问题。

问他什么是MVC,什么是AJAX,HTTP如何工作,REST如何工作,SQL联接如何工作,一些数据结构,一些性能基础知识(如何衡量,如何改进),测试基础知识,安全基础知识(XSS,XSRF,注入,防御方式),应用于典型PHP领域的基本编程技巧知识-网络,网络,数据转换等。

如果他擅长于此,请继续要求他编写一些简单的代码,选择一些不需要花费很长时间的简单任务-例如查找文本中连续排有大多数元音的单词,或反转文本中的每个单词,或乘以两个矩阵。如果您愿意,也可以要求他用PHP实现生命游戏:)

如果他通过了,那么您可以进行更棘手的PHP问题,但是不要对此施加太大的重视。他可以在手册中阅读大部分内容,但看不懂,如果他过得很好,他会很快学会。PHP的构建很简单,因此,如果他是一个优秀的程序员,并且对PHP有一定的了解,那么他可能会追上。如果他知道一般的编程方法,那么学习PHP编程要比反向学习容易得多-如果您不了解单元测试的目的或如何摆脱XSS问题,那么了解PHP语法细节并不重要。


13

尽管Yannis Rizos的答案是一个很好的答案 -我知道我不会通过该测试,并且我可以将该答案作为资源来确定将重点放在改善我的PHP排练上,但是我认为值得您花些时间来查找编程知道PHP参加面试过程的伙伴。上一个答案中的所有问题都很好,但是如果没有某些领域的知识,将很难评估答案的质量。

就是说,根据您的需求,就像其他人所说的那样,一般的编程功能和团队协作可能比特定于语言的知识更重要。


5
+1 I think it would be worth your while to find a programming buddy who knows PHP to sit in on the interview process.,很棒的建议。
yannis 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.