现在高级php都面试什么?

现在高级php都面试什么?

需要准备什么?

有没有刷题的地方?

阅读 3.7k
2 个回答

面试内容可能与地区和行业相关,仅做参考。

最近在广州找工作,前端Web 和 后端 PHP 方向。题主既然问 PHP 我就写一些最近 PHP 相关的经历。

面试官一般会关心的

  • 纸上谈兵的能力
  • 奇葩的优化方式(一般都是百度而来)
  • 在不查 php.net 的情况下背出一些函数的用法
  • 阅读垃圾代码的能力(排版错误的:变量污染,错误传参,引用错误)
  • PHP5.4/5.6 的一些被 PHP7 删掉的不好用的东西
  • HTTP1.0/1.1 时代的连接方式
  • MySQL 5.1 之前时代的数据库优化
  • 在不使用 MySQL Cluster 和 Redis cluster 等公认数据库集群的场景下,实现 (山寨的) 数据库集群存储
  • 是否自己写过 PHP 框架
  • 是否阅读过 PHP 源码
  • 部分 PHP 函数的实现(字面意义是考 C 语言层次的逻辑,但实际上考核的为)
  • 是否参与过百万级并发
  • 是否有团队 Leader 经验

因为我以前都是在公司负责这一部分的,所以所有理念都更新到 HTTP2 和 MySQL5.7 了以前那些不好用的东西都忘得一干二净,所以面试目前都不满意。
但是很多公司则把这些作为考核重点(因为很难用,所以很容易出错,把这种东西作为考核点,估计是把难用的东西当做高深的东西供奉)
多数考核的重点都是用百度搜索可得到第一个结果的,很多理念都是偏见、错误或过时的(百度搜到的东西不能指望)。如果回答谷歌出来的正确答案的话,很可能会被当做瞎编。
(HTTP1有的那些优化的坑,HTTP2都没有)
(MySQL如果你读过 「电子工业出版社联合出版的WILEY《数据库索引设计与优化》」 ,那么你会发现现在网上所说的数据库优化技巧都是过时的,MySQL团队又不傻,以前那些民间的优化手段早就被官方吸收掉了,现在默认就是最优的,人家现在考虑的都是磁盘颗粒上的IO优化了。现在MySQL上只要 正确设置 主键和索引关系,就已经足以满足一般企业的需求了,滥用其他民粹主义的优化手段反而会导致性能下降。然而这本书真的很难啃,我看了几章之后自己都害怕)

面试官不会关心的

  • 是否自己有独立的开源项目
  • 是否自己有独立的网站或产品
  • 是否自己有记录累积经验和学习交流的博客
  • 是否拥有 Git、Linux、Web 前端、容器、服务器架设等相关经验
  • 代码评审等工作流相关的经验(只要你能把代码上传到版本库,剩下的你都不能关心。毕竟连阿里都没有代码评审)

一点废话

本人出到广州两个月,之前8年一直在北京。除了超大型企业(网易级别的这种大企业,即使有很好的工作能力也是进不去的),以及外包型公司(完全没有成长性),广州的纯软件公司非常少,多数情况都是公司主营业务为其他行业,软件开发只算是个附属部门,没有任何话语权和决策权,核心领导一般都是非技术出身。

之前要负责从后端 PHP ,到前端 jQuery、Vue,到服务器端 Linux,Docker,Kubernetes 等全全事务,被面经历不少,面别人也经历过。目前中国的 IT 技术已经回归到2015年之前的环境了,热潮已过,原本资深的高端程序员多数都已经退出此行业(干技术没前途已成用脚选择出的事实),所以中国软件开发环境已经遗失了珍贵的积累。

我之前为了找工作,专门做了几个开源的项目,本来以为可以嘚瑟一下,结果发现完全无人问津,简直是一大败笔。

我的建议

需要准备的:

  • 算法 。如果能遇到良心公司,还是会考核算法的。大规模企业绝对会考算法。而且算法对自身学习和成长终身受益。像新加坡这种仍处在上升期且主营事业包括软件开发的地区,算法是其 核心考核点
  • 一份 镀金公司 的工作经验。(华为、阿里为优,即使是外包团队只要能挂个名字就行,即使没有工作经验也可以唬人。有这么个副标题挂在那,即使真的胡诌也不会被认为是骗人)

以下两个和技术不相关,但是我还是提一下

  • 一个短期可用的手机号码(如果你在招聘网站上投过简历,就意味着联系方式泄露,半年之内都会有铺天盖地的电话打进来,尤其是不着调的猎头,经常会聊一些和PHP方向一点关系都没有的职位。所以找到工作后就把这个手机号作废掉)
  • 一个专用微信号(现在都要加微信,电话和邮箱权重很低了。后期情况同上,可能会很烦。但也不乏可能一面谈得很开心但是主管不懂技术却把你刷掉或者待遇不满意的情况,留一个一面面试官的微信,没准可以交个朋友。)(现在申请微信必须用手机号)

不需要准备的(这些东西对自身成长非常有益,但对目前在国内找工作一无是处):

  • 个人网站
  • 开源项目
  • 个人博客
  • 域名邮箱或专业邮箱(我本科毕业时流行过这样的传言:用gmail的人很有底蕴,用qq邮箱的就很low。如果用域名邮箱那一定是高人。现在如果使用域名邮箱的话,在广州这种氛围下,很有可能被当做假简历处理。所以不必要特别准备邮箱,QQ邮箱就行,中国的平均水平就那德行了)
  • PHP7,以及未来 PHP8 会引入的新特性(面试官很可能听不懂。PHP的没人问过我,前端 Web 相关的会问ES6,但是除了箭头函数之外其他的面试官都不知道,尤其是有100%不知道 use strict 的现象)
  • 解释型语言的运行方式(PHP的没人问过我。前端 Web 相关的问过性能优化,我回答过 V8 引擎的即时编译,隐式类型转换会引入的性能问题,以及 use strict 和一些官方建议的优化方式,面试官听得云里雾里,肯定会降低双方的印象)
  • 过分新潮的东西(比如:连 use strict 这种一句话就能描述的 ES6 特性都没听过,我要是再引入 WASM 岂不是要疯)

说难听点,多数公司技术管理层(不分性别)都是岁数比较大且仍然选择留在这个行业的。你不能期盼他人的进步,所以他们内心中的技术理念都很旧,不会去主动理解新版本带来的优势。如果需要考核新知识点,他们只能随便在百度上搜几道经典的题目,之后就期望你照着回答。

参考资料:

我之前面试的高级PHP职位的时候, 遇到问高并发处理机制, MySQL索引优化, 分表优化,MySQL锁机制,nginx+fpm原理,链表,redis等缓存各种机制和优化,swoole及工作原理,协程开发,PHP垃圾回收机制,还有比较常见的算法(手写),tcp/udp等协议及原理,常见的攻击手段及防范机制等...还有很多讲不完...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题