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