PHP面试题总结

本文最后更新于:2 年前

1. laravel 生命周期

文件先自动加载 composer 包需要的类,包扩所有你自己的 composer 依赖包,
生成容器 Cantainer 并注册相关的一些核心组件和实例,是从 bootstrap/app.php 脚本获取 Laravel 应用实例,
处理请求一般都是 http 请求,检测 booststrap 环境,加载里面的一些配置,注册像是系统的环境配置,日志配置,异常处理配置,服务器的容器,门面,服务提供者
相应的配置都加载完毕了,就会转到路由,路由会先处理全局中间件,看看是否允许访问,是不是有一异常,然后再去遍历匹配你输入的路由地址,找到符合的进行访问再看你的控制器是否有中间件的一些限制,再进行返回

2. nginx 负载均衡 方式优缺点

upstream nginx 对网络的稳定性比较小,配置安装起来比较简单,也提供了一些基础的负载均衡的访问方式,像是轮询、权重值轮询,ip_hash 的方式每个请求访问的 ip 通过 hash 之后的结果进行分配访问
支持的协议比较少

3. mysql innodb Mysiam 引擎 区别 优劣

4. 索引相关

5. swoole 用过吗了解多少,go 呢?

6. 项目用多少台服务器

7. 大文件 excel 导出

ob_flush

8. 主从延迟解决方案 半同步复制

主库需要提交事务、更新存储引擎中的数据、把 Binlog 写到磁盘上、给客户端返回响应、把 Binlog 复制到所有从库上、每个从库需要把复制过来的 Binlog 写到暂存日志中、回放这个 Binlog、更新存储引擎中的数据、给主库返回复制成功的响应。
异步复制时,主库提交事务之后,就会给客户端返回响应;而同步复制时,主库在提交事务的时候,会等待数据复制到所有从库之后,再给客户端返回响应。
在备库 B 上通过 change master 命令,设置主库 A 的 IP、端口、用户名、密码,以及要从哪个位置开始请求 binlog,这个位置包含文件名和日志偏移量。在备库 B 上执行 start slave 命令,这时候备库会启动两个线程,就是图中的 io_thread 和 sql_thread。其中 io_thread 负责与主库建立连接。主库 A 校验完用户名、密码后,开始按照备库 B 传过来的位置,从本地读取 binlog,发给 B。备库 B 拿到 binlog 后,写到本地文件,称为中转日志(relay log)。sql_thread 读取中转日志,解析出日志里的命令,并执行。

9. Oauth2.0 协议

关于框架,协议,代理,反代理,设计模式,版本管理


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!