PHP面试常常被问到的知识点汇总,对你很是有用

这些是 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 () 会发生什么?

API 篇

  • 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+「平台」

在这里插入图片描述

在这里插入图片描述


更多学习内容能够访问【对标大厂】精品PHP架构师教程目录大全,只要你能看完保证薪资上升一个台阶(持续更新)

以上内容但愿帮助到你们,不少PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提高,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货须要的能够免费分享给你们,须要的能够加入个人 PHP技术交流群

相关文章
相关标签/搜索