这些是 PHP 面试常常被问到的知识点作汇总。仅是针对性指出知识点,相应的还需本身查找相关资料系统学习。我但愿各位能不只仅了解是什么,还要了解为何,以及背后的原理。php
若是你如今处于如下几种状态,本资料很是适合你:前端
准备换工做,不知道从哪开始准备vue
技术遇到瓶颈,不知道该学什么mysql
准备学 PHP,但不知道领域有多深react
了解大部分数组处理函数webpack
字符串处理函数 区别 mb_ 系列函数laravel
& 引用,结合案例分析web
== 与 === 区别面试
isset 与 empty 区别算法
所有魔术函数理解
static、$this、self 区别
private、protected、public、final 区别
OOP 思想
抽象类、接口 分别使用场景
Trait 是什么东西
echo、print、print_r 区别 (区分出表达式与语句的区别)
__construct 与 __destruct 区别
static 做用(区分类与函数内)手册 、SOF
__toString () 做用
单引号’与双引号” 区别
常见 HTTP 状态码,分别表明什么含义
301 什么意思 404 呢?
Autoload、Composer 原理 PSR-4 、原理
Session 共享、存活时间
异常处理
如何 foreach 迭代对象
如何数组化操做对象 $obj [key];
如何函数化对象 $obj (123);
yield 是什么,说个使用场景 yield
PSR 是什么,PSR-1, 2, 4, 7
如何获取客户端 IP 和服务端 IP 地址
客户端 IP
服务端 IP
了解代理透传 实际 IP 的概念
如何开启 PHP 异常提示
php.ini 开启 display_errors 设置 error_reporting 等级
运行时,使用 ini_set (k, v); 动态设置
如何返回一个 301 重定向
[WARNING] 必定小心设置 301 后脚本会继续执行,不要认为下面不会执行,必要时使用 die or exit
如何获取扩展安装路径
phpinfo (); 页面查找 extension_dir
命令行 php -i |grep extension_dir
运行时 echo ini_get (‘extension_dir’);
字符串、数字比较大小的原理,注意 0 开头的 8 进制、0x 开头 16 进制
字符串比较大小,从左 (高位) 至右,逐个字符 ASCII 比较
BOM 头是什么,怎么除去
0xEF,0xBB,0xBF
检测、去除
什么是 MVC
依赖注入实现原理
如何异步执行命令
模板引擎是什么,解决什么问题、实现原理(Smarty、Twig、Blade)
如何实现链式操做 $obj->w ()->m ()->d ();
Xhprof 、Xdebug 性能调试工具使用
索引数组 [1, 2] 与关联数组 [‘k1’=>1, ‘k2’=>2] 有什么区别
缓存的使用方式、场景
给定二维数组,根据某个字段排序
如何判断上传文件类型,如:仅容许 jpg 上传
不使用临时变量交换两个变量的值 $a=1; $b=2; => $a=2; $b=1;
strtoupper 在转换中文时存在乱码,你如何解决?php echo strtoupper (‘ab 你好 c’);
Websocket、Long-Polling、Server-Sent Events (SSE) 区别
“Headers already sent” 错误是什么意思,如何避免
快速排序(手写)
冒泡排序(手写)
二分查找(了解)
查找算法 KMP(了解)
深度、广度优先搜索(了解)
LRU 缓存淘汰算法(了解,Memcached 采用该算法)
堆、栈特性
队列
哈希表
链表
Cookie 与 Session 区别
GET 与 POST 区别
include 与 require 区别
include_once 与 require_once 区别
Memcached 与 Redis 区别
MySQL 各个存储引擎、及区别(必定会问 MyISAM 与 Innodb 区别)
HTTP 与 HTTPS 区别
Apache 与 Nginx 区别
define () 与 const 区别
traits 与 interfaces 区别 及 traits 解决了什么痛点?
Git 与 SVN 区别
MySQL
索引、联合索引(命中条件)
分库分表(水平分表、垂直分表)
分区
会使用 explain 分析 SQL 性能问题,了解各参数含义
Slow Log(有什么用,何时须要)
重点理解 type、rows、key
CRUD
JOIN、LEFT JOIN 、RIGHT JOIN、INNER JOIN
UNION
GROUP BY + COUNT + WHERE 组合案例
经常使用 MySQL 函数,如:now ()、md5 ()、concat ()、uuid () 等
1:一、1:n、n:n 各自适用场景
了解触发器是什么,说个使用场景
数据库优化手段
MSSQL (了解)
查询最新 5 条数据
NOSQL
持久化
支持多种数据类型
可利用 CPU 多核心
内存淘汰机制
集群 Cluster
支持 SQL
性能对比
支持事务
应用场景
Redis、Memcached、MongoDB
对比、适用场景(可从如下维度进行对比)
你以前为了解决什么问题使用的什么,为何选它?
查看 CPU、内存、时间、系统版本等信息
find 、grep 查找文件
awk 处理文本
查看命令所在目录
本身编译过 PHP 吗?如何打开 readline 功能
如何查看 PHP 进程的内存、CPU 占用
如何给 PHP 增长一个扩展
修改 PHP Session 存储位置、修改 INI 配置参数
负载均衡有哪几种,挑一种你熟悉的说明其原理
数据库主从复制 M-S 是怎么同步的?是推仍是拉?会不会不一样步?怎么办
如何保障数据的可用性,即便被删库了也能恢复到分钟级别。你会怎么作。
数据库链接过多,超过最大值,如何优化架构。从哪些方便处理?
502 大概什么什么缘由?如何排查 504 呢?
偏运维(了解):
负载均衡(Nginx、HAProxy、DNS)
主从复制(MySQL、Redis)
数据冗余、备份(MySQL 增量、全量 原理)
监控检查(分存活、服务可用两个维度)
MySQL、Redis、Memcached Proxy 、Cluster 目的、原理
分片
高可用集群
RAID
源代码编译、内存调优
缓存
工做中遇到哪里须要缓存,分别简述为何
搜索解决方案
性能调优
各维度监控方案
日志收集集中处理方案
国际化
数据库设计
静态化方案
画出常见 PHP 应用架构图
ThinkPHP(TP)、CodeIgniter(CI)、Zend(非 OOP 系列)
Yaf、Phalcon(C 扩展系)
Yii、Laravel、Symfony(纯 OOP 系列)
Swoole、Workerman (网络编程框架)
对比框架区别几个方向点
是否纯 OOP
类库加载方式(本身写 autoload 对比 composer 标准)
易用性方向(CI 基础框架,Laravel 这种就是高开发效率框架以及基础组件多少)
黑盒(相比 C 扩展系)
运行速度(如:Laravel 加载一大堆东西)
内存占用
单例模式(重点)
工厂模式(重点)
观察者模式(重点)
依赖注入(重点)
装饰器模式
代理模式
组合模式
SQL 注入
XSS 与 CSRF
输入过滤
Cookie 安全
禁用 mysql_ 系函数
数据库存储用户密码时,应该是怎么作才安全
验证码 Session 问题
安全的 Session ID (让即便拦截后,也没法模拟使用)
目录权限安全
包含本地与远程文件
文件上传 PHP 脚本
eval 函数执行脚本
disable_functions 关闭高危函数
FPM 独立用户与组,给每一个目录特定权限
了解 Hash 与 Encrypt 区别
PHP 数组底层实现 (HashTable + Linked list)
Copy on write 原理,什么时候 GC
PHP 进程模型,进程通信方式,进程线程区别
yield 核心原理是什么
PDO prepare 原理
PHP 7 与 PHP 5 有什么区别
Swoole 适用场景,协程实现方式
原生获取 DOM 节点,属性
盒子模型
CSS 文件、style 标签、行内 style 属性优先级
HTML 与 JS 运行顺序(页面 JS 从上到下)
JS 数组操做
类型判断
this 做用域
.map () 与 this 具体使用场景分析
Cookie 读写
JQuery 操做
Ajax 请求(同步、异步区别)随机数禁止缓存
Bootstrap 有什么好处
跨域请求 N 种解决方案
新技术(了解)
ES6
模块化
打包
构建工具
vue、react、webpack、
前端 mvc
优化
浏览器单域名并发数限制
静态资源缓存 304 (If-Modified-Since 以及 Etag 原理)
多个小图标合并使用 position 定位技术 减小请求
静态资源合为单次请求 并压缩
CDN
静态资源延迟加载技术、预加载技术
keep-alive
CSS 在头部,JS 在尾部的优化(原理)
IP 地址转 INT
192.168.0.1/16 是什么意思
DNS 主要做用是什么?
IPv4 与 v6 区别
TCP 三次握手流程
TCP、UDP 区别,分别适用场景
有什么办法能保证 UDP 高可用性 (了解)
TCP 粘包如何解决?
为何须要心跳?
什么是长链接?
HTTPS 是怎么保证安全的?
流与数据报的区别
进程间通讯的几种方式,最快的是哪一种?
fork () 会发生什么?
RESTful 是什么
如何在不支持 DELETE 请求的浏览器上兼容 DELETE 请求
常见 API 的 APP_ID APP_SECRET 主要做用是什么?阐述下流程
API 请求如何保证数据不被篡改?
JSON 和 JSONP 的区别
数据加密和验签的区别
RSA 是什么
API 版本兼容怎么处理
限流(木桶、令牌桶)
OAuth 2 主要用在哪些场景下
JWT
PHP 中 json_encode ([‘key’=>123]); 与 return json_encode ([]); 区别,会产生什么问题?如何解决
好了各位,以上就是这篇文章的所有内容了,能看到这里的人呀,都是人才。以前说过,PHP方面的技术点不少,也是由于太多了,实在是写不过来,写过来了你们也不会看的太多,因此我这里把它整理成了PDF和文档,若是有须要的能够
更多学习内容能够访问【对标大厂】精品PHP架构师教程目录大全,只要你能看完保证薪资上升一个台阶(持续更新)
以上内容但愿帮助到你们,不少PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提高,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货须要的能够免费分享给你们,须要的能够加入个人 PHP技术交流群