PHP面试问答

结合实际PHP面试,汇总自己遇到的问题,以及网上其他人遇到的问题,尝试提供简洁准确的答案
包含MySQL、Redis、Web、安全、网络协议、PHP、服务器、业务设计、线上故障、个人简历、自我介绍、离职原因、职业规划、准备问题等部分

一般面试流程

interview

QA目录

MySQL

  • MySQL体系结构
  • 字段类型
  • char和varchar数据类型区别
  • 常见索引
  • 聚族索引和非聚族索引的区别
  • 事务机制
  • BTree与BTree-/BTree+索引原理
  • 参考资料

Redis

  • Redis主要特点
  • Redis数据类型
  • 跳跃表与Redis
  • 参考资料

Web

  • JavaScript事件的三个阶段
  • 闭包原理及应用
  • 跨域
  • JSONP原理
  • CSS选择器的优先级
  • CSS盒子模型
  • CSS清除浮动
  • 相对定位relative、浮动float、绝对定位absolute区别
  • VUE双向绑定原理
  • 性能优化
  • 参考资料

安全问题

  • CSRF攻击
  • XSS攻击
  • SQL注入
  • IP地址能被伪造吗
  • include请求参数
  • md5逆向原理
  • DOS攻击
  • 参考资料

网络协议

  • UDP的主要特点
  • TCP握手三次,断开四次,TIME-WAIT
  • socket
  • HTTP协议
  • websocket协议
  • GET与POST请求方式区别
  • 参考资料

PHP

  • echo、print、print_r、var_dump的区别
  • 超全局变量
  • PHP支持回调的函数,实现一个
  • 发起HTTP请求有哪几种方式,它们有何区别
  • 对象关系映射/ORM(Object Relational Mapping)
  • MVC的理解
  • 类的静态调用和实例化调用
  • 常见PHP框架特点
  • 设计模式(design pattern)
  • 工厂方法模式与抽象工厂模式区别
  • base64编码原理
  • ip2long实现
  • 代码执行过程
  • 弱类型变量如何实现
  • 垃圾回收机制
  • 进程间通信方式
  • 链式调用实现
  • 多进程同时写一个文件
  • PHP拓展
  • PHP7新特性
  • PHP7底层优化
  • 构造函数和析构函数
  • PHP不实例化调用方法
  • 参考资料

服务器

  • 进程、线程、协程区别
  • Linux进程
  • 反向代理
  • 负载均衡
  • nginx中fastcgi_pass监听,unix socket和tcp socket的区别
  • 消息队列
  • 参考资料

业务设计

  • 网易盖楼
  • 秒杀设计
  • 消息队列
  • 共享SESSION
  • 下单后30分钟未支付取消订单
  • IP对应省市效率尽可能高
  • 详细描述输入地址到打开网页过程
  • 参考资料

线上故障

  • 客户端热更新失败
  • Redis实例used_memory达到80%
  • 游戏任务完成了进度未更新
  • 测试服HTTP请求未响应
  • 游戏账号被盗

个人简历

自我介绍

离职原因

  • 跳槽频繁
  • 这次换工作原因

职业规划

准备问题

 

  • 工作挑战大不大?
  • 项目开发是否写测试用例,项目上线先是否会进行压力测试
  • 业务前景如何?
  • 技术氛围如何?
  • 根据这次面试,对个人进行评价,帮助成长
  • 融资计划
  • 是否有加班费/调休,公司福利,社保公积金缴纳基数
use App\Admin\Repositories\Comment;

// 关联 post 表数据
$grid = new Grid(new Comment(['post']));

$grid->column('id');
$grid->column('post.title');
$grid->column('content');

$grid->created_at()->sortable();
$grid->updated_at();