后端PHP面试题框架
目录
对于大厂,面试造火箭,入职拧螺丝。对于小厂,可能需要那些当前更实用的,本文针对中小企业团队
项目经验:
-
参与过的最好产品项目/完整项目是哪个
了解最好的项目经验
-
其中的参与角色与职责
考察责任与管理能力
-
最熟悉哪个php框架;对TP框架熟悉到什么程度(技术基础能力)
考察对框架的理解和应用程度
-
结合项目具体功能实现方式,了解mvc架构熟悉与运用程度或基于SWOOLE框架应用程度
考察mvc框架及Swoole库的理解
-
个人有哪些编码规范或约定
考察自身的要求及团队的要求程度
基础知识点
-
session原理,如果用户量很大的情况,session如何存储?负载均衡下如何共享session?
考察:php基础,吸引深入理解的开发
-
服务器读取文件、读取本地memcache/redis、读取数据库数据哪个更快?
考察:读写资源理解及理解程度,吸引能深入了解的开发
-
使用过哪些php模板渲染引擎,具体原理是什么?
考察:模板引擎原理,吸引有创造性的开发
-
php中如何输出一个数组或对象结构到文件?
考察:php基础,排除只会皮毛的开发
-
php能否捕获系统异常?如何捕获自定义异常及如何处理异常?
考察:php基础,排除不严谨的开发
-
通过php如何删除一个文件,伪代码描述?
考察严谨程度
-
php如何获取一个URL字符串中的域名?具体正则表达式应该是什么样?
考察正则表达式
/http[s]?:\/\/([^\/]+)/
虽然php开发门槛低,这里基本不考察php手册里相关的方法、函数等,但从以上部分问题,我们都能得到在php上的经验如何。
性能优化
-
过去项目中有遇到服务器性能瓶颈吗?什么模块,采用什么方案解决?
考察性能优化解决能力,前端缓存、资源cdn、请求优化、后端缓存策略、数据库优化、逻辑算法调整等
-
商品秒杀场景如何实现,如何解决高并发、超发、处理失败数据不一致问题?
考察并发设计方案及性能优化解决能力。事务、锁、数据一致性、异常处理等
-
使用过哪些缓存,什么场景或什么数据需要使用缓存?
考察缓存使用及性能优化能力
-
如何通过php实现html页面静态缓存?
考察静态化及优化能力
-
redis与memcache有什么区别?是否使用过redis的其他数据结构及其使用场景,如队列
考察缓存使用及性能优化能力
-
过去项目经验是否碰到页面加载慢问题,个人怎么分析及有哪些优化方案
同上性能优化
数据库相关
-
过去哪个产品项目亲自设计数据库表,在设计上特别注意或主要考虑哪些问题?
考察数据库表设计
-
如何看待数据库的三个范式,什么情况做冗余(数据库)
考察数据库理论。空间、时间的冗余妥协,列不可再分,行唯一,域直接不间接关联
-
过去的项目中是否有遇到服务器性能瓶颈?在数据库环节,具体什么问题,如何解决
考察性能优化、数据库索引原理及优化
-
常见大型数据表(千万级别),高频查询,如何优化(数据库)
考察性能优化、数据库优化
-
是否使用过视图,什么场景会使用,为什么(数据库)
考察数据库高阶使用
-
是否使用过存储过程,什么场景会使用,为什么(数据库)
考察数据库高阶使用
-
如何分析mysql语句的性能?索引有哪几种?什么样的数据字段需要创建什么类型的索引?联合索引的最左前缀怎么理解?InnoDB的索引是怎样的数据结构?
考察数据库索引原理、优化
架构与设计模式
-
常用的设计模式,为什么使用
-
工厂模式、装饰模式、策略、桥接、代理、观察者、适配器等
-
架构与开发方法
架构与设计模式,目前中国的开发市场看,中小企业基本很难应用到明确的架构与设计模式,但好的开发者,会在某些某块中借鉴应用一些成熟的架构与开放方法。
系统、服务、版本、调试等
-
正式环境与开发环境使用linux吗,mac或centos还是ubuntu,是否熟悉linux的操作
考察linux基础操作top、ps、kill、chmod、chown、df、ln、fg、vim的简单操作模式等,可以留意到更稀有的开发
-
nginx的优势,apache的优势(apache、nginx)
考察对http web服务的理解
-
常用的版本控制方式,产品项目中同时实现多个迭代,如何进行代码版本控制管理?
考察版本管理流程及对流程的理解能力
-
研发方案设计流程
考察对软件工程、项目管理的一些基本认知。需求目的,输入、数据结构设计、输出
-
线上出问题如何调试问题
考察调试能力
-
线上产品有个功能中,点击后报错,从后端角度,如何快速排查定位问题?
考察调试能力
安全
-
后端角度,投票按钮如何解决刷票问题?网页验证码/短信验证码的原理,解决了什么问题? https://www.jianshu.com/p/58bb83a51a31
-
如何防止CSRF重放攻击与XSS跨站脚本攻击?防范输入、过滤、 http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html https://blog.csdn.net/ghsau/article/details/17027893
-
如何保证表单不被重复提交(安全)
安全也一直是更高级的后端需要具备的能力,保证系统安全是一项了不起的能力。
更多问题:
- 事务的理解及使用场景
- 锁的理解及使用场景
- 第三方用户系统登录流程
- 第三方支付系统支付流程,回调的目的
- 如何避免被模拟http请求
- 手动负载均衡实现方案
参考
https://juejin.im/entry/5aa8c20b518825557459653a
https://github.com/tsingchan/PHP-Interview-QA
2016@tsingchan 持续更新及补充