1. PHP方面的问题

  • 什么是composer?以及composer是干什么用的?工作原理
  • PHP如何实现静态化
  • 你了解设计模式吗?说下你最常用的设计模式
  • 观察者模式是如何实现的?工厂模式是如何实现的?适配器模式是如何实现的?……
  • PHP的优化方案
  • 说下你了解的session和cookie
  • 如何实现不基于session和cookie的用户认证。
  • 说下你目前框架所用到的核心概念
  • 什么是CSRF攻击,XSS攻击?如何防范
  • 你了解RESTful API吗?说说干什么用的。
  • 设计的原则
  • 如果实现自动加载?不用composer如何实现?PSR-4是什么?
 

2. 数据库方面

  • 你知道nosql吗?你用的nosql都有哪些?
  • mysql索引优化
  • mysql的优化方案
  • mysql的事务
  • mysql的读写分离
  • 消息队列如何实现
  • 查询优化
  • msyql的存储引擎,以及各自的区别
  • redis和memcache有什么区别
  • 索引有哪些,你是如何做索引的?
  • 如何分表
 

3. 服务器方面

  • 说下一些你常用的linux命令
  • Linux如何搭建LAMP环境
  • 你们平常工作的系统环境是在哪里?
  • 你了解Docker吗?
  • 你说下常用的服务端口号
 

4. 前端知识

  • 说下都有哪些跨域。
  • 事件冒泡
  • DOM事件流
  • JS是如何实现继承的
 

5. 算法和其它方面

  • 最常用的排序算法
  • 做一个微信抢红包的功能
  • 如何防止高并发
  • 你们用哪种版本控制?如何避免代码冲突
  • 在浏览中输入网址后都发生了什么
  • 你了解socket吗?


其它,必问知识

  • 在项目中碰到的问题
  • 是如何解决问题的
  • 未来的规划是什么?
  • 为什么离职
  • 你的领导会如何评价你
  • 你做得你公司最不错的项目,都用了哪些技术,带来哪些成长?
  • TCP的三次握手,为什么三次,两次不行吗?为什么挥手又是四次

 

对程序员的建议:

  • 一般面试的技术都是以后你要跟着他干的人员,所以多站在对方的场景下想问题,对方肯定是希望有个能帮他分担工作压力的人。
  • 回答不要一问一答,最好能说出你自己的理解,以及它的优缺点。
  • 一些技术方面的问题,要回答那些实用看的见的效果,比如composer可以解决自动加载类,不用你写过多的new。
  • 技术不需要你全部会,但是要有自己的理解,这东西我没用过,但是我了解过一些,大概是什么,它是个啥技术,是为了解决啥技术。
  • 对于面试的是技术的,不会就不会,没用过就没用过,如果你乱扯,技术一听就能听出来你说的对不对,但是你可以说说你对这个理解,这样就不至于冷场了,蒙对了加分,蒙错了也代表你会思考这个东西,会去想。