一个合格的PHP面试官 都会问这些面试题

一个合格的PHP面试官 都会问这些面试题

专注于PHP、MySQL、Linux和前端开发!文章整理在GitHub,Gitee。主要包含的技术有PHP、Redis、MySQL、JavaScript、HTML&CSS、Linux、Java、Golang、Linux和工具资源等相关理论知识、面试题和实战内容。

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

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

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

关于面试题的内容,后面如果发现有其他的面试题,也会做一个更新。

PHP相关平常都使用的什么框架?Laravel和ThinkPHP框架的区别?Laravel常用到的功能有哪些?Laravel依赖注入实现的原理是怎么样的?Swoole你用到了哪些功能?对协程这一块了解吗?能说说PHP的生命周期吗?传统的php-fpm模式和swoole有什么区别?在项目中都是怎么用hyperf的?了解hyperf中的依赖注入实现原理吗?使用hyperf中的类是怎么实现的,是通过注解引入吗?说说你在项目中使用到的PHP函数,任意说几个以及它的功能?PHP的垃圾回收机制是怎么样的?PHP5的版本和PHP7之间有哪些区别?对PHP8了解吗,任意说说其中的新特性?说说php-fpm与NGINX工作原理是怎么样的?说一说PHP中的垃圾回收机制是怎么样的?cgi与fast_cgi关系是怎么样的?isset、empty和is_null区别是怎么样的?如果传递一个null,该三个函数分别返回什么?require_once与include_once,require与include的区别?为什么一个是警告一个是致命错误?php5与php7的区别是怎样的?php-fpm的工作模式?进程数量配置依据是什么?说说PHP数组中的数据结构是怎么样的?能说说说session和cookie的区别吗?Redis相关平常使用Redis都是在哪些场景?Redis的持久化有哪几种?有什么区别?实现的原理是怎样的?Redis的事务了解吗?事务都有哪些注意的地方?Redis都有哪些数据类型?你是怎么选择数据类型的?底层的数据结构是怎么样的?Redis能够实现命令批处理吗?Redis的哨兵机制了解吗?实现原理是怎么样的?Redis的主从复制实现原理是怎么样的?如何保证数据一致性?数据延迟又该如何处理?利用Redis如何实现队列功能?消息发布与订阅有使用过吗?怎么使用的?中间又遇到过什么问题吗?如何解决缓存穿透、击穿和雪崩问题以及这三种情况都是什么意思?Redis作为一个内存型数据库,如何更好的解决内存的占用?Redis与memcached的区别?什么时候会选择memcached?能说说Redis为什么快吗?Redis的线程模型熟悉吗?你能说说Redis的线程模型吗?能说说Redis的优缺点吗?能说一下Redis的内存是怎么划分的吗?知道什么是热key,热key的问题该怎么解决呢?怎么实现Redis的高可用问题?能说说Redis的集群原理吗?能说一下Redis如何实现分布式锁吗?如果有大量的key需要设置同一时间过期,一般都需要注意些什么?Redis都有哪些缓存类型?如何解决Redis的并发竞争key的问题?如何解决Redis和数据库双写一致性的问题?MySQL里面有20000w的数据,Redis中只能存20w的数据,如何保证Redis中的数据都是热点数据。Redis的过期策略都有哪些?定期+惰性都没有删除过期的key怎么办?Redis的过期策略和内存淘汰机制是怎么样的?说说Redis的数据类型都有哪些?有使用Redis做异步队列吗?你是怎么使用的?pipeline有什么好处?为什么要用pipeline?能说说Redis各种数据类型底层的数据结构吗?一般你都是在哪些场景下使用Redis的?Redis与其他的key-value存储都有什么不同?能说说主从复制的原理吗?主从复制如果出现数据不一致的情况,一般都有哪些问题会导致这种情况?主从复制都有哪几种方式?主从复制都是怎么配置的?说说常见的配置项都有哪些?Redis主从复制的同步机制了解吗?主从复制中的复制客户端缓冲区都是干什么的?他运行的原理又是怎么样的呢?Redis是如何做持久化的?持久化的方式都有哪些?如何选择合适的持久化方式?持久化数据和缓存如何做扩容?持久中AOF和RDB的优缺点可以说说看吗?如果做持久化时,服务宕机了怎么办?MySQL列举几个MySQL索引失效的情况?该如何优化这些情况?MySQL索引都有哪些?InnoDB索引是用的什么数据结构,为什么使用这种数据结构?MySQL主从复制是如何实现的?如果从节点挂了,重新启动从节点,如何保持数据一致性?如何解决数据同步延迟问题?说说你优化SQL语句的几种思路有哪些?说说MySQL中的锁有哪些?之间的区别?MySQL中的事务了解吗?说说其4大特性?事务中隔离性,有几种情况?这几种情况分别会产生什么问题?MySQL中MVVC实现的原理是怎么样的?mongodb与mysql的关系,为什么日志系统会选择mongodb?RabbitMQ主要使用的场景在哪些地方?工作模式都有哪些?之间的区别是怎么样的?如何保证消息的可靠性?日志存储在RabbitMQ,如果同步到MongoDB里面,如何解决新旧数据问题?(这里提到了一个公司实际业务问题,公司日志会存储到MongoDB,如何保证每次存的都是最新的消息)你知道哪些消息队列?这些消息队列有什么区别?网络相关对http熟悉吗?能说一下有其特点吗?能说说常见的http请求方式以及每一种请求方式的特点吗?能说说http1和http2之间的区别吗?说说网络的分层模型有哪些吗?其中每一层都是干什么的?说说TCP的三次挥手、四次握手吗?用户输入一个域名到显示页面数据都发生了什么?GET和POST的区别是什么?