ITPub博客

首页 > 应用开发 > IT综合 > PHP面试经常被问到的知识点汇总,对你非常有用

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

原创 IT综合 作者:cyw0413 时间:2021-11-03 13:58:48 0 删除 编辑

这些是PHP面试经常被问到的知识点做汇总。仅是针对性指出知识点,相应的还需自己查找相关资料系统学习。我希望各位能不仅仅了解是什么,还要了解为什么,以及背后的原理。


如果你现在处于以下几种状态,本资料非常适合你:


-   准备换工作,不知道从哪开始准备

-   技术遇到瓶颈,不知道该学什么

-   准备学 PHP,但不知道领域有多深


基础篇

-   了解大部分数组处理函数

-   字符串处理函数 区别 mb_ 系列函数

-   & 引用,结合案例分析

-   == 与 === 区别

-   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、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([]); 区别,会产生什么问题?如何解决


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70007281/viewspace-2840394/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2021-09-23

  • 博文量
    4
  • 访问量
    1733