在第一家公司工作有三年了,以前只专注写PHP,现在换工作后才了解自己知识的匮乏,现在总结下面试中会问到的问题。也是工作三年的PHP应该必须知道的内容
以下并不提供答案,只是碰到问的面试问题,因为好多我都没答上来。
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吗?
- 如果打开网页的时候白屏10秒才显示出页面,如果进行排查。
其它,必问知识
- 说下你在项目中碰到的问题
- 你是如何解决的问题的
- 你未来的规划是什么?
- 你为什么离职
- 你觉得你的领导会如何评价你
- 说下你做得你公司最不错的项目,都用了哪些技术,对你带来了哪些成长
- 说下TCP的三次握手,为什么三次,两次不行吗?为什么挥手又是四次
这些并不是说都需要会,都要知道,只是你需要了解这些。工作中不一定会用到,但是需要你在提某项技术的时候你知道有这项技术。
笔试的时候基本都是些PHP,mysql,linx等的基础,所以基础还是需要看的,比如考察一些函数的用法。HTTP的一些状态码,一些sql语句,一些排序算法。
面试一般会看你的简历来问,所以说对于虚假的东西一问就露馅,所以不要过多的美化简历。面试的时候一般会针对你简历上的某项技术,一直深入问下去,直到问到你答不出,然后转到另外一项技术上面。
一般面试的技术都是以后你要跟着他干的人员,所以多站在对方的场景下想问题,对方肯定是希望有个能帮他分担工作压力的人。
回答不要一问一答,最好能说出你自己的理解,以及它的优缺点。
一些技术方面的问题,要回答那些实用看的见的效果,比如composer可以解决自动加载类,不用你写过多的new,比回答,composer是一个依赖管理工具,composer会帮你安装这些依赖的库文件,要强的多,当然也可以说,以前都是复制粘贴一些代码到自己项目里,然后把代码改为自己需要的,现在使用composer我可以直接引用别人的代码而不需要过多的更改。
技术不需要你全部会,(你也不可能全部会,别人就是要问到你答不出来为止,不然怎么压你工资),但是你要有自己的理解,这东西我没用过,但是我了解过一些,大概是什么什么玩意,它是个啥啥啥技术,大概是为了解决啥啥啥技术。
对于面试的是技术的,不会就不会,没用过就没用过,如果你乱扯,技术一听就能听出来你说的对不对,但是你可以说说你对这个理解,这样就不至于冷场了,蒙对了加分,蒙错了也代表你会思考这个东西,会去想。
(PS: 以上都是我自己的总结,并不知道HR是如何想的,只是单纯的觉得技术应该了解的一些技术。因为我们有专门的运维,前端等,所以面试问的其它方面问题相应较少)