Home  >  Article  >  Backend Development  >  如何面试 PHP 工程师?

如何面试 PHP 工程师?

WBOY
WBOYOriginal
2016-06-17 08:30:251107browse

回复内容:

问一些日常的正常的PHP问题,主要是考察应聘者的认知:
  • 一个包含中英文的字符串如何获得它的自然长度(看看ta是否有encoding的知识和意识)
  • 问一问什么是ORM,有时候会问这个词的英文全称是什么,问问ta对于ORM有什么个人的看法?(看看ta学习细不细,有没有技术判断,PHP开发人员应该知道什么时候使用ORM)
  • 问一问假如ta要自己去实现一个framework,ta会怎么设计。(看看ta对代码架构的理解,对MVC的理解)
  • 问一问framework设计里的url dispatcher他会怎么考虑。(HTTP知识)
  • 问一问ta对框架本身的看法
  • 了解一下ta对Design Pattern的认知,比如Singleton,Observer,Factory等常用的设计模式,问一问ta对设计模式本身的看法。
  • 问两三个数据库设计的问题
  • 问几个前端的问题,哪怕ta的职位是PHP开发人员,好的PHP人员不可能不了解前端,而且很可能很了解前端
  • 问一问ta对noSQL的了解情况(对与noSQL的认识是和传统Relational DB的认知是分不开的)
  • 问一问ta碰到问题时候会如何去寻找答案
  • 问一问ta习惯使用哪一个搜索引擎(如果是GOOGLE.COM就有加分)
  • 问一问ta最近看的书
  • 问一问ta的职业规划,喜欢做什么,对工作环境有什么要求
别出生僻的题,别为难人家,更不要变相的侮辱人家,正常交流为主,你要的是一个正常的人,优秀不优秀就看你的眼光和运气了。

很多公司的技术人员招聘会刻意追求刺激的问题,比如很著名的微软的“下水道的盖子为什么是圆的”,不是说这些考察毫无道理,但更多的是一种“marketing”的手段。

Modern PHP / 中文版 / jump.im/i6 解决实际问题的能力,比现有的能力更为重要。PHP 是一门简单的语言,关键还是在于对实际需求的解决能力。问一些你遇到过的或者经验性的问题更重要。考什么算法。。之类。。崩了~ 分享一个整理的Lamp(Linux+Apache+Mysql+PHP)开发技能表,之前给社团做PHP的同学准备的。目前还不是很完善,后续会有补充。
blog.goody365.com/lamp/ 好吧,对于楼上众位的问题,我有一半以上的答不上来.
面试者向来很就主观,而且都喜欢以他所熟知的领域或者知识点来刁难对方.无论你怎么问,他的知识范围和你的知识范围并集定是少之又少(除了php基础).但是考基础的语法,又体现不出水平.除非他知识面极广,这样人早有成就了.
<code class="language-php"><span class="x">echo '1'.print(2)+3;//这种代码很多人平时都不会用到.但查手册便知</span>
</code>
我说点自己的经历,跟楼主的问题不太相关的。当我刚刚来到这个公司的时候,我投了简历,然后来面试了。结果,老板根本没有问我技术的问题,只是问了我一下学习经历的事情。我当时也很奇怪啊,后来在公司里面呆的时间一长,才发现,原来老板不懂技术。然后来了之后,刚开始三周,啥都没有干,没有人给我说任务。后来,就给我一个网站,然后给我一个参考网站,让我用thinkphp改造一下这个网站,中间都是我出现一个问题,然后解决不了,我就去找同事帮忙。老总说是有人带我的,结果最后还是我自己吭哧吭哧的把代码写完了。现在想来,我就是把代码熟悉了一遍,感觉有点囫囵吞枣,根本,有的代码是啥意思,我都还没有搞透。现在想来,是不是,我的基础太薄弱了。。。 1,解决问题的能力和掌握的知识,看你招聘的目的而决定其二者的平衡。了解流体力学的确会对通下水道有很大帮助,但流体力学专家未必都会疏通下水道。

2,创造力,一个没有自己作品的程序员不是好程序员。编程跟写作一样,最终的目的不是敲字,而是完成作品。有人用windows图画板画蒙娜丽莎,而有人用ps就只能调调颜色,画几条线。二者的区别就在于创造力,而不是各自都会什么工具(或者懂什么知识)。

3,自学能力。编程界每天都在产生新鲜的东西,愿意自学和主动寻求新东西,会在将来的工作上事半功倍。

4,人品。这点会大大影响后期的团队维护成本。

5,代码的优雅。不在乎大括号在上还是在下,不在乎等号左右是否有空格的程序员,一定是不够谨慎、粗枝大叶的程序员,而有代码洁癖的程序员会不断挑战自己的代码,让自己的代码日趋优雅。

6,文档习惯。喜欢查阅文档,喜欢记录文档。这是团队协作与后期维护必不可少的能力。

7,足够聪明,话少。表达能力强的人,一般都不适合当程序员(大脑神经通路的影响),除非是头脑特别好用的人,但这种人很难遇到。

下面再列些我认为比较糟糕的面试,如果面试的朋友遇到这类面试,可以考虑直接走掉:
1,出各种古怪刁钻的程序题,而且要求面试者徒手解答。人的大脑是有极限的,记了琐碎的东西,肯定就装不下更多重要的知识。

2,考察的知识点凌乱繁杂。根据经验,这类公司最后的聘用薪资都低的可怜。

3,面试官盛气凌人、轻视、频繁质疑(或者频繁确认)面试者所阐述的内容。物以类聚这个成语同样适用在职场,如果你不喜欢他或者他不喜欢你,直接放弃吧,不要为难对方和自己了。 作为公司的电面和初面的面试官,说说我个人的方式,在这之前有一个背景,就是我要招聘的人是什么人,不同的人不同的面试方法。

另外,个人觉得没有PHP工程师这一说法,PHP工程师意味着知识面一定是要比较广的。

技术线(偏深度):
1. 基础知识,比如数据结构,多线程,I/O,Http协议等
2. 语言深度,比如PHP的运行机制,性能优化,APC(以及其原理等)
3. 源码阅读,比如看过哪些框架,其中的机制是怎么样的,往细了问
4. 知识宽度,静态语言,比如C、Java等,我始终觉得只会一门语言不是什么好事情
5. 项目经验,做过什么,是否复杂,负责什么,做了什么
6. 设计,这一点和第五点比较类似

业务线(偏能力):
1. 业务能力,也就是之前做过的项目(担任的角色,负责的部分)
2. 沟通能力,这一点能从沟通中就看出来
3. 主动性,之前主动推动的事物等等,哪怕是一个小的点也可以
4. 抗压能力,之前做过的项目中去挖掘细节
5. 技术宽度,了解不一定要深入,我一般会问一些比较泛的,比如多语言,Linux操作,HTTP协议等

一定会问:
1. 有GitHub或者Blog(技术热情)
2. 离职原因和同事相处(你懂的)
3. 业余时间利用(技术热情) 新手重点笔试基础
中级重点问一些功能方案,效率,模式,算法之类的
高级重点谈谈经历 架构 负载的处理等等
然后就是相亲了,看缘分 前端:
Doctype的作用。
如何隐藏超出对象部分的内容。
Name,ID有什么区别。
怎么使用jq,jq如果要是和其他类库冲突怎么办?
charset=utf-8一般写在html什么位置?
客户端的对象资源缓存问题。
如何隐藏一个对象。
Js url怎么传递中文?
http的header里面有哪些东西?
习惯使用什么工具作为前端调试?
举例说说IE和其他浏览器几个不兼容的地方。
Ajax的使用。
会不会SEO

PHP
PHP有什么东西可以提高运行效率的。
PHP如何防止注入
会使用哪些模板
如何防止一些关键php页面被下载
会不会memcached
如何防止XSS攻击?
正则表达式

Mysql
哪几种类型的存储引擎,各有什么优缺点
平时写sql语句要注意些什么

你认为的一般性系统瓶颈出现在哪些地方?缓存,数据库,php,前台。
如何优化他们。

额外:
SEO,网站分析,用户体验。

中级php程序员
  1. 基本技术了解
    1. 数据库的基本感觉,如何优化
    2. 熟悉的框架,MVC的理解,对象
    3. 代码安全因素
    4. 缓存技术的了解,memcached等
    5. 高访问量的解决方式
    6. 平时解决问题的方法
  2. 技术积累经验
    1. 错误经验分享
    2. 成功经验分享
  3. 对前台和服务器的了解程度
    1. 基本脚本和ajax的使用
    2. lamp环境的了解
    3. linux服务器
    4. svn方面
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn