如何在面试中测试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.