概况

有很长一段时间没有做PHP开发了,最近有做PHP开发的小伙伴在个人微信公众号后台留言,能够分享一些PHP有关的面试题。于是给安排上。

这里说明一下,很长一段时间不做PHP,不是因为像很多人说的PHP不行了,不准备继续做PHP了。而是个人在尝试新的技术领域而已。这和什么语言没有关心。也希望大家不要在说什么PHP不行,好好学好技术,没有什么语言行不行的。

分享这些面试题的最大初衷是因为帮大家汇总这两年面试PHP中遇到的一些面试题,帮助大家知道PHP面试一般都是那些试题。其实大家会发现,面试问来问去都是那些技术点,无所谓的就是换了不同的方式问你而已。只要你把基础打牢固,就不用担心面试官的问题啦。

关于面试题的内容,后面如果发现有其他的面试题,也会做一个更新。喜欢的,想提升技术的。可以持续关注一下。持续更新的内容,我也放在这个地方。

汇总在一起难免有显得比较乱,我这里放在个人的微信小程序里面,也方便大家平常看。同时针对不同的类型,试题的深难度也做了一个分类,也方便大家查看。

PHP相关

  1. 平常都使用的什么框架?Laravel和ThinkPHP框架的区别?

  2. Laravel常用到的功能有哪些?Laravel依赖注入实现的原理是怎么样的?

  3. Swoole你用到了哪些功能?对协程这一块了解吗?

  4. 能说说PHP的生命周期吗?传统的php-fpm模式和swoole有什么区别?

  5. 在项目中都是怎么用hyperf的?了解hyperf中的依赖注入实现原理吗?使用hyperf中的类是怎么实现的,是通过注解引入吗?

  6. 说说你在项目中使用到的PHP函数,任意说几个以及它的功能?

  7. PHP的垃圾回收机制是怎么样的?

  8. PHP5的版本和PHP7之间有哪些区别?对PHP8了解吗,任意说说其中的新特性?

  9. 说说php-fpm与NGINX工作原理是怎么样的?

  10. 说一说PHP中的垃圾回收机制是怎么样的?

  11. cgi与fast_cgi关系是怎么样的?

  12. isset、empty和is_null区别是怎么样的?如果传递一个null,该三个函数分别返回什么?

  13. require_once与include_once,require与include的区别?为什么一个是警告一个是致命错误?

  14. php5与php7的区别是怎样的?

  15. php-fpm的工作模式?进程数量配置依据是什么?

  16. 说说PHP数组中的数据结构是怎么样的?

  17. 能说说说session和cookie的区别吗?

Redis相关

  1. 平常使用Redis都是在哪些场景?

  2. Redis的持久化有哪几种?有什么区别?实现的原理是怎样的?

  3. Redis的事务了解吗?事务都有哪些注意的地方?

  4. Redis都有哪些数据类型?你是怎么选择数据类型的?底层的数据结构是怎么样的?

  5. Redis能够实现命令批处理吗?

  6. Redis的哨兵机制了解吗?实现原理是怎么样的?

  7. Redis的主从复制实现原理是怎么样的?如何保证数据一致性?数据延迟又该如何处理?

  8. 利用Redis如何实现队列功能?

  9. 消息发布与订阅有使用过吗?怎么使用的?中间又遇到过什么问题吗?

  10. 如何解决缓存穿透、击穿和雪崩问题以及这三种情况都是什么意思?

  11. Redis作为一个内存型数据库,如何更好的解决内存的占用?

  12. Redis与memcached的区别?什么时候会选择memcached?

  13. 能说说Redis为什么快吗?

  14. Redis的线程模型熟悉吗?你能说说Redis的线程模型吗?

  15. 能说说Redis的优缺点吗?

  16. 能说一下Redis的内存是怎么划分的吗?

  17. 知道什么是热key,热key的问题该怎么解决呢?

  18. 怎么实现Redis的高可用问题?

  19. 能说说Redis的集群原理吗?

  20. 能说一下Redis如何实现分布式锁吗?

  21. 如果有大量的key需要设置同一时间过期,一般都需要注意些什么?

  22. Redis都有哪些缓存类型?

  23. 如何解决Redis的并发竞争key的问题?

  24. 如何解决Redis和数据库双写一致性的问题?

  25. MySQL里面有20000w的数据,Redis中只能存20w的数据,如何保证Redis中的数据都是热点数据。

  26. Redis的过期策略都有哪些?

  27. 定期+惰性都没有删除过期的key怎么办?

  28. Redis的过期策略和内存淘汰机制是怎么样的?

  29. 说说Redis的数据类型都有哪些?

  30. 有使用Redis做异步队列吗?你是怎么使用的?

  31. pipeline有什么好处?为什么要用pipeline?

  32. 能说说Redis各种数据类型底层的数据结构吗?

  33. 一般你都是在哪些场景下使用Redis的?

  34. Redis与其他的key-value存储都有什么不同?

  35. 能说说主从复制的原理吗?

  36. 主从复制如果出现数据不一致的情况,一般都有哪些问题会导致这种情况?

  37. 主从复制都有哪几种方式?

  38. 主从复制都是怎么配置的?说说常见的配置项都有哪些?

  39. Redis主从复制的同步机制了解吗?

  40. 主从复制中的复制客户端缓冲区都是干什么的?他运行的原理又是怎么样的呢?

  41. Redis是如何做持久化的?

  42. 持久化的方式都有哪些?

  43. 如何选择合适的持久化方式?

  44. 持久化数据和缓存如何做扩容?

  45. 持久中AOF和RDB的优缺点可以说说看吗?

  46. 如果做持久化时,服务宕机了怎么办?

MySQL

  1. 列举几个MySQL索引失效的情况?该如何优化这些情况?

  2. MySQL索引都有哪些?InnoDB索引是用的什么数据结构,为什么使用这种数据结构?

  3. MySQL主从复制是如何实现的?如果从节点挂了,重新启动从节点,如何保持数据一致性?如何解决数据同步延迟问题?

  4. 说说你优化SQL语句的几种思路有哪些?

  5. 说说MySQL中的锁有哪些?之间的区别?

  6. MySQL中的事务了解吗?说说其4大特性?

  7. 事务中隔离性,有几种情况?这几种情况分别会产生什么问题?

  8. MySQL中MVVC实现的原理是怎么样的?

  9. mongodb与mysql的关系,为什么日志系统会选择mongodb?

RabbitMQ

  1. 主要使用的场景在哪些地方?

  2. 工作模式都有哪些?之间的区别是怎么样的?

  3. 如何保证消息的可靠性?

  4. 日志存储在RabbitMQ,如果同步到MongoDB里面,如何解决新旧数据问题?(这里提到了一个公司实际业务问题,公司日志会存储到MongoDB,如何保证每次存的都是最新的消息)

  5. 你知道哪些消息队列?这些消息队列有什么区别?

网络相关

  1. 对http熟悉吗?能说一下有其特点吗?能说说常见的http请求方式以及每一种请求方式的特点吗?

  2. 能说说http1和http2之间的区别吗?

  3. 说说网络的分层模型有哪些吗?其中每一层都是干什么的?

  4. 说说TCP的三次挥手、四次握手吗?

  5. 用户输入一个域名到显示页面数据都发生了什么?

  6. GET和POST的区别是什么?