diff --git "a/PHP\346\212\200\346\234\257\351\235\242\350\257\225.md" "b/PHP\346\212\200\346\234\257\351\235\242\350\257\225.md" index f9cf80c..4f77ecd 100644 --- "a/PHP\346\212\200\346\234\257\351\235\242\350\257\225.md" +++ "b/PHP\346\212\200\346\234\257\351\235\242\350\257\225.md" @@ -1,8 +1,8 @@ -#PHP技术面试 +# PHP技术面试 会**基于面试者的简历**,问如下的一些问题: -##框架 +## 框架 > * 阅读源码是提升编程能力的最佳手段。不读阅读源码的开发者,是不合格的。 > * 在系统架构方面的设计能力 @@ -12,7 +12,7 @@ * 如果说阅读过,会问如何设计一个简单的**MVC框架** * 或者,假设由面试者来设计框架(比如laravel)的数据库处理,如何设计 -##错误、异常和日志相关 +## 错误、异常和日志相关 > 面试者在编码过程中,是否思考:当代码没有按照既定逻辑运行时,该怎么处理? * 了解错误(`Error`)和异常(`Exception`)吗 @@ -20,7 +20,7 @@ * PHP设计中,为什么会有错误和异常这2种 * 如何收集**业务日志** -##语言特性 +## 语言特性 > 对PHP语言的了解,强烈建议每一位开发者都要通读[PHP手册](https://www.php.net/manual/en/index.php) * 魔术方法,比如析构(`__destruct`),会在什么时候调用;`__toString`能做什么 @@ -32,7 +32,7 @@ * PHP7的一些新特性 * Swoole相关(异步,协程等等) -##应用场景 +## 应用场景 > 日常中遇到的一些问题,考量面试者思维的全面性 * 什么是RESTful @@ -48,7 +48,7 @@ * 扩展:日增100万的用户表,手机号和用户名均是唯一索引,且会通过手机号或者用户名搜索用户,如何设计 * 100个不同的数字分若干组组,每组数字相加不超过1000,越接近越好,如何设计? -##数据库 +## 数据库 > 数据库基础了,没有复杂的问题 * 事务的成功、失败对自增ID的影响 @@ -60,7 +60,7 @@ * 分库分表 * 索引的知识点,比如**myisam**和**innodb**的索引的异同 -##Redis +## Redis > 基础问题,抢红包稍复杂 * 如果写熟悉Redis,问Redis的几种数据结构 @@ -69,7 +69,7 @@ * 如何避免大Key的情况出现 * 数据过期策略 -##消息队列 +## 消息队列 > 基础问题,用过MQ的都应该会 * 消息队列是怎么工作的 @@ -78,7 +78,7 @@ * 消息持久化 * 如何避免重复消费 -##分布式 +## 分布式 > 比较难,很多面试者没有这方面经验 * CAP,BASE相关概念 @@ -89,7 +89,7 @@ * 拜占庭将军问题 * Snowflake算法 -##安全方面 +## 安全方面 > 不难,但是面试者通常会忽视 * XSS,CSRF等概念 @@ -98,31 +98,31 @@ * HTTPS相关 * 一些安全算法 -##性能优化 +## 性能优化 > 定位问题最难 * 大表查询 * 性能瓶颈的定位分析 * 常用的排序算法 -##质量控制 +## 质量控制 > 单元测试必须要做;编码规范必须要遵守;代码评审绝不可少 * 测试 * 编码规范,[参考这里](https://github.com/zgia/manual/blob/master/PHP%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83.md) * 代码评审 -##PSR +## PSR > 一些约定 * 自动加载 * 事件、消息机制 * 容器 -##前端 -* 访问一个链接(如:http://www.163.com)时,浏览器做了哪些事情 +## 前端 +* 访问一个链接(如:https://www.163.com/ )时,浏览器做了哪些事情 -##其他 +## 其他 * 自己编译安装过PHP、MySQL、Redis等吗 * Composer * Git