Skip to content

colinlet/PHP-Interview-QA

Repository files navigation

PHP 面试问答

GitHub Repo stars GitHub forks License Last Updated

PHP 很没前途,请把工作留给我,谢谢!

系统性整理 PHP 技术面试高频问题,覆盖 PHP 语言、数据结构与算法、计算机网络、设计模式、存储与中间件、架构与分布式、操作系统与服务器、安全、Web、番外等方向。每道题包含一句话结论、体系讲解、追问链、易错点与可运行代码示例。


求职行动链

求职行动链

求职行动链:投递 → 笔试 → 技术初面 → 技术终面 → 交叉面 → 综合面 → 谈薪/接受Offer

行动环节 求职者可以主动作为
1. 投递简历 / 内推 针对目标公司技术栈定制简历,量化成果;通过人脉或社区激活内推,获取真实反馈;前置调研公司产品与技术挑战,在简历中埋下匹配点。
2. 笔试 / 在线测试 靶向刷题:PHP 常见坑、数组函数、魔术方法、命名空间烂熟于心,辅以基本算法与数据结构;模拟限时编码环境,养成一次写对、注重边界条件的习惯;遇到模糊需求主动在平台提问澄清,展现严谨。
3. 技术初面 将八股文讲成理解,用实际场景解释 Redis 数据结构等知识点;准备 1 分钟埋钩子的自我介绍,引导面试官追问你最熟悉的项目;遇到不会的题不沉默,说出思考路径与排查方向。
4. 技术终面 用 STAR 法则深挖每个核心项目,突出个人决策与分析;主动要求画架构图,练习短链、秒杀、IM 消息推送等系统设计题,计算流量与存储;介绍技术选型时埋下对比方案,促成高质量追问。
5. 交叉面 展现可迁移能力,举例说明代码规范落地、跨团队协作的真实经验;准备有深度的问题反向调研对方(如“当前最大技术债是什么?”);用“我们”传递协作感,描述冲突时强调如何达成共识。
6. 综合面(HR/业务) 设计连贯的职业故事线,正面解释离职原因,具体说明来这里的动机;提前准备价值观问题(缺点、失败案例等)并附带改进动作;询问团队结构、培养机制,展现长期主义。
7. 谈薪 / 接受 Offer 面试中后期明确薪资期望,终面后主动提供流水等材料加速审批;以年度总包(现金+股票+奖金+公积金等)为基础做横向比较;书面确认试用期、转正标准、期权行权条件等关键细节,保护自身权益。

完整多方视角(HR / 面试官 / 业务方协作链路)见 面试全景图

难度图例

标签 定位 适合谁
L1 能正确使用,知道"是什么" 初级工程师(0-1 年)
L2 能合理选择,知道"怎么用好" 中级工程师(1-3 年)
L3 能解释原理,知道"为什么这样" 高级工程师(3-5 年)
L4 能设计方案,源码级理解 资深工程师(5-10 年)
L5 能权衡取舍,系统级决策 架构师(10 年+)

每道题还标注了考察频率(高 / 中 / 低),方便按紧迫度筛选复习重点。


主题导航

主题 目录 进度
PHP 语言篇 docs/php/ 🟡 进行中
存储与中间件篇 docs/storage/ ⏳ 待启动
Web 篇 docs/web/ ⏳ 待启动
计算机网络篇 docs/network/ ⏳ 待启动
安全篇 docs/security/ ⏳ 待启动
设计模式篇 docs/design-pattern/ ⏳ 待启动
数据结构与算法篇 docs/algorithm/ ⏳ 待启动
操作系统与服务器篇 docs/server/ ⏳ 待启动
架构与分布式篇 docs/architecture/ ⏳ 待启动
番外篇 docs/misc/ ⏳ 待启动

题目索引

PHP 语言篇

难度 频率 题目
L1 PHP 中 == 和 === 的区别是什么
L1 isset() 与 empty() 有什么区别
L1 PHP 索引数组与关联数组的区别及常见操作
L1 PHP 中引用传递与值传递的区别
L1 PHP 单引号与双引号字符串的区别
L1 PHP 动态语言特性与静态语言的区别
L2 抽象类与接口的区别及使用场景
L2 PHP 中 Trait 的作用与冲突解决机制
L2 Late Static Binding 是什么及 static:: 与 self:: 的区别
L2 Composer 自动加载机制与 PSR-4 规范
L2 PHP 中 Error 与 Exception 的区别及异常处理最佳实践
L2 PHP 多范式编程与场景选型
L2 什么是依赖注入?它解决了什么问题?
L2 SOLID 设计原则是什么?各原则的核心意图是什么?
L2 PHP 魔术方法是什么?__get/__set/__call 各适用于哪些场景?
L2 PHP 命名空间的解析规则与别名机制
L3 PHP 的垃圾回收机制是如何工作的
L3 PHP zval 内部结构是什么?写时复制(COW)机制如何工作?

数据结构与算法篇

难度 频率 题目
L1 算法复杂度分析与 Big-O 表示法
L2 链表翻转与 Floyd 环检测
L3 二分查找的统一模板:搜索边界与答案二分

操作系统与服务器篇

难度 频率 题目
L1 PHP 开发常用 Linux 命令:文件查找、进程与网络诊断
L2 PHP-FPM 进程模型与 FastCGI 协议
L4 Swoole 协程与 PHP-FPM 的选型决策

架构与分布式篇

难度 频率 题目
L5 短链系统设计:唯一短码生成方案的架构权衡
L4 单体拆分微服务后的分布式事务选型

计算机网络篇

难度 频率 题目
L1 GET 和 POST 请求的区别
L2 HTTPS 的 TLS 握手流程与加密分工
L3 HTTP/2 与 HTTP/3 的核心改进与底层原理

设计模式篇

难度 频率 题目
L1 设计模式的三大分类与意图
L2 工厂方法与抽象工厂的区别及选型
L3 里氏替换原则的行为契约与继承陷阱

存储与中间件篇

难度 频率 题目
L1 MySQL 中各种 JOIN 的区别是什么?
L1 什么是数据库三范式?各范式分别解决了什么问题?
L1 Redis 有哪五种基本数据类型?各自适用什么场景?
L2 MySQL 索引为什么用 B+ 树?聚簇索引与非聚簇索引有什么区别?
L2 什么是覆盖索引?联合索引的最左前缀原则是什么?
L2 MySQL 四种事务隔离级别与并发问题
L2 缓存穿透、缓存击穿与缓存雪崩的区别及防护方案
L3 ORDER BY 的执行原理与性能优化
L3 MySQL 一条查询语句的完整执行流程

Web 篇

难度 频率 题目
L1 HTTP 常见状态码含义与 301 和 302 的区别
L1 PHP 主流框架对比与选型概览
L2 PHP 框架中间件机制与洋葱模型
L3 Laravel 服务容器(IoC)的实现原理

安全篇

难度 频率 题目
L1 XSS 攻击类型与防御方案
L2 CC 攻击与应用层限流防护方案
L3 PHP 文件上传安全与输入过滤实践

番外篇

难度 频率 题目
L2 生产环境如何排查 Bug,以及如何在本地复现并调试
L3 AI 时代的 PHP 开发者:从工具选择到学习方法论

历史待归档

数据结构与算法篇

计算机网络篇

设计模式篇

存储与中间件篇

架构与分布式篇

-【试读】领域驱动设计(DDD)

操作系统与服务器篇

安全篇

Web篇

番外篇

更多题目持续产出中,按批次滚动更新。


学习路径

本仓库题目按需自取,以下是几种常见使用方式:

  • 突击准备:按「考察频率 = 高」筛选,优先看 L1-L2 题目
  • 体系进阶:按主题顺序从 L1 读到 L3,建立完整知识链路
  • 查漏补缺:直接翻「追问链」和「易错点」,快速发现认知盲区
  • 模拟面试:遮住答案只看标题,尝试自行组织回答后对照

单题结构说明

每道题遵循统一模板,包含 6 个区块:

┌─────────────────────────────────┐
│  一句话结论(≤30 字核心答案)      │
├─────────────────────────────────┤
│  体系讲解(原理 → 机制 → 结论)   │
│  └── 含 Mermaid 流程图           │
├─────────────────────────────────┤
│  考察意图                        │
├─────────────────────────────────┤
│  追问链(3-5 个递进问题 + 简答)   │
├─────────────────────────────────┤
│  易错点(2-3 个高频误区)          │
├─────────────────────────────────┤
│  代码示例(PHP 8.0+ 可运行)      │
└─────────────────────────────────┘

参与贡献

欢迎提 Issue 或 PR:

  • 🐛 勘误:发现事实性错误或过时内容
  • 💡 新题建议:提议新的面试题目
  • 🔬 查证补充:为标注"需查证"的内容提供权威来源

详细贡献指南将在后续版本发布。


License

本项目基于 Apache License 2.0 开源。

About

PHP面试问答

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors