PHP - 经典面试题大全,看这一篇就够了

PHP   2023-06-03 08:41   224   0  

一、PHP 面试题

1.1 基础篇

PHP 7 新特性


常用模板引擎


面向对象的七大原则


什么是面向对象?主要特征是什么?


类、成员方法、成员属性的修饰符有哪些?他们之间的区别是什么?


PHP 支持多继承吗?如何实现多继承?


PHP的基本变量类型


列举 30 个常用的函数


常用魔术方法及场景


常用魔术常量


常用超全局变量


PHP 错误级别介绍与设置错误级别的方式


PHP 异常处理



1.2 进阶篇

PSR 标准规范


设计模式原则与你知道的设计模式有哪些?


PHP 垃圾回收机制(GC)


PHP 底层原理


PHP 运行模式, 各自的原理


PHP 数组底层原理


PHP 数组遍历为什么能保证有序


依赖注入实现方式


PHP 内存溢出解决



1.3 对比篇

define() 与 const 区别


include 和 require 的区别是什么?


单引号与双引号的区别


传值与传引用的区别


cookie 与 session 的区别, 禁用 cookie 后如何传递 session


== 与 === 的区别


echo、print、print_r、var_dump 的区别


isset 与 empty 的区别


for 与 foreach 的区别,哪个更快?为什么?



1.4 实践题

微信实际支付成功, 但回调失败如何处理?


如何获取客户端 IP 与服务端 IP


不使用临时变量交换两个变量的值


通过 $_FILES 获取上传文件类型可能受到黑客伪造, 如何判断用户上传的图像文件类型真实可靠


短信验证码防刷机制


如何实现 session 共享


如何实现单点登录


PHP 如何解决跨域问题?


1.5 算法或代码实现题

快速排序


冒泡排序


二分查找


顺序查找


插入排序


选择排序


字符串反转


字符串长度


写一个可以从 URL 链接中取出文件的扩展名


写一个二维数组排序算法函数


PHP 遍历文件夹


写一个函数, 将 “open_door” 转为 “OpenDoor”


写一个函数, 将 1234567890 转为 1,234,567,890 逗号隔开


取扩展名


求两个日期的差数, 例如2022-2-5 ~ 2022-3-6 的日期差数


PHP 打印出前一天的时间, 格式: 2022年01月01号 12:00:00


写出一个函数,参数为年份和月份,输出结果为指定月的天数

获取今天是本月所在的第几周


单例模式并实现 mysqli 数据库连接


以下表达式运算结果是?


二 、MySQL 面试题

2.1 其他面试题


2.2 基础篇

MySQL 三范式


一条 MySQL 语句执行步骤


分区、分库、分表的理解及注意事项


如何保证 Redis 和 MySQL 数据一致性



2.3 对比篇

关系型数据库 与 非关系型数据库的区别


char 与 varchar 的区别


drop、delete、truncate 的区别


拖库、洗库、撞库是什么?怎么解决?


主键 和 唯一索引的区别?


2.4 MySQL 索引篇

索引类型


索引最左匹配原则指的是什么?


聚集索引和非聚集索引的区别


哪些操作会导致索引失效


单条 MySQL 一次能使用多少索引


2.5 存储引擎篇

你知道的常用的存储引擎


MyISAM 与 InnoDB 的区别


InnoDB 四大特性


2.6 MySQL 事务篇

事务的四大特性(ACID)


事务的隔离级别


为什么会产生脏读、不可重复读、幻读?如何解决


2.7 MySQL 锁篇

请尽可能介绍数据库有哪些锁?


什么是乐观锁与悲观锁?怎么实现?


死锁是如何产生的?如何避免与解决死锁?


全局读锁、表读锁、表写锁、行读锁、行写锁的 SQL 语句

InnoDB 存储引擎有几种锁的算法?


锁优化有什么建议?


2.8 MySQL 日志篇

MySQL 进阶 - 主从复制


MySQL 有哪些系统日志


redo log、undo log、bin log 的区别


redo log 刷盘方式(WAL)


binlog 的格式有哪几种?


什么是脏页和干净页?


什么情况下会引发刷脏页操作?


2.9 SQL 语句实现篇

SQL 优化有哪些方法?


如何优化大分页查询


explain 分析 SQL 性能问题, 了解各参数含义


随机查询 10 条数据


存储 IP 字段使用什么类型?


多表查询 SQL 语句案例


三、Redis 面试题

3.1 Redis 是什么?


3.2 Redis 有哪几种数据结构类型?


3.3 Redis 使用场景有哪些?


3.4 Redis 持久化有哪几种?区别是什么


3.5 缓存的 雪崩、击穿、穿透


3.6 Redis 数据过期和淘汰策略


3.7 怎么实现 Redis 高可用


3.8 Redis 与 Memcached 的区别


3.9 Redis 分布式锁怎么实现


四、前端面试题

4.1 基础篇

必须掌握 jQuery 操作 DOM 节点的常用情况


常用 css 设置


JS 数组与对象的操作


跨域请求的解决方案


4.2 网络知识面试题

get 与 post 的区别


http 协议由什么组成?


http 与 https 的区别


WebSocket 原理


浏览器访问某个网址的详细过程


OSI网络协议的七个层级


TCP/UDP 的区别


三次握手四次挥手


状态码

100、200、300、400、500 分别是什么意思?


什么是心跳机制?


长连接与短连接?区别是什么?



五、安全面试题

5.1 SQL注入是什么?如何预防?


5.2 XSS 与 SCRF 攻击?Web 攻击如何预防?


5.3 PHP 文件上传安全性考虑



六、API 面试题

6.1 接口安全措施, 有哪些实现方法?


6.2 降级、限流、熔断实现原理及方式



七、高级面试题

7.1 如何解决并发问题?


7.2 简单秒杀系统并发考虑


7.3 单点登录实现原理


7.4 数据结构特性


7.5 说一下你在项目中遇到的难点以及如何解决的?



八、算法面试题

8.1 参考学习资料

8.2 时间复杂度与空间复杂度

时间复杂度

空间复杂度


九、Linux 面试题

9.1 Linux 常用命令


十、HR 常问问题


十一、转载地址

博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。
闲言碎语
春节你要小心了,毕竟过年,都是要杀猪的。
赞赏支持

如果觉得博客文章对您有帮助,异或土豪有钱任性,可以通过以下扫码向我捐助。也可以动动手指,帮我分享和传播。您的肯定,是我不懈努力的动力!感谢各位亲~