MICUU
微资讯
声卡
创新2024全套教程
5.1声卡全套
创新声卡驱动
板载声卡调试全套教程
Sam机架安装
Sam机架
音效助手
专题
文档
技术文档汇总
站内文档
更多
软件
更新日志
关于
装机必备
Gramos模板
光年后台模板
Betube模板
美图
友情链接
站内导航
关于
搜索
退出登录
登录
原创
2022年PHP高级面试题整理-持续更新中
2022-03-28
117.29w热度
   2022年了,虽然现在是广大互联网裁员,但是我们如果不转行的话还是需要把自身的基础本领练到过硬,面试的时候要对答如流才可以,下面是目前流传的面试八股文,小编也会不定期更新问题以及答案。如果您觉得对您有用的话,请`ctrl+d`收藏我们 ## mysql **问:有哪些事务隔离级别,Mysql 的事务隔离级别是怎么实现的?(每家都问)** > 答:隔离级别及原理解析 > > | 事务隔离级别 | 脏读 | 不可重复读 | 幻读 | > | ---------------------------- | ---- | ---------- | ---- | > | 读未提交(read-uncommitted) | 是 | 是 | 是 | > | 不可重复读(read-committed) | 否 | 是 | 是 | > | 可重复读(repeatable-read) | 否 | 否 | 是 | > | 串行化(serializable) | 否 | 否 | 否 | > > 参考:https://blog.csdn.net/A1028151949/article/details/88430895 > > 附:事务的基本要素: > > 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 > > 2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。 > > 3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。 > > 4、持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。 **问:索引原理(每家都问)** > 答:参考 https://blog.csdn.net/sxb0103/article/details/91488713 > **问:分库分表的策略,如果要按照分表字段以外的字段作为查询条件怎么办(每家都问)** > 答:参考:https://www.cnblogs.com/cxxjohnson/p/9048518.html > **问:MVCC 和间隙锁原理(滴滴 字节 百度)** **问:explain 的 type 字段有哪些(知乎)** > 答: > > - **system**:系统表,少量数据,往往不需要进行磁盘IO; > - **const**:常量连接; > - **eq_ref**:主键索引(primary key)或者非空唯一索引(unique not null)等值扫描; > - **ref**:非主键非唯一索引等值扫描; > - **range**:范围扫描; > - **index**:索引树扫描; > - **ALL**:全表扫描(full table scan); > > 更详细的请参考文章:https://www.cnblogs.com/benbenhan/articles/13212861.html > **问:update 语句的执行流程,binlog 的作用和几种格式(滴滴)** > 答:https://blog.csdn.net/baiye_xing/article/details/113032790 > **问:主从同步的原理和问题(字节 滴滴 陌陌)** > 答: > 同步原理https://www.jianshu.com/p/4c41e95d787a > > 同步实战:https://www.jb51.net/article/108312.htm **问:发生死锁的原因以及如何解决(滴滴 顺丰)** > 答:所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。表级锁不会产生死锁.所以解决死锁主要还是针对于最常用的InnoDB。 **问:如何优化大 offset(陌陌)** > 答:使用limit语句时,当数据量偏移量较小时可以直接使用limit,当数据量偏移量较大时,可以适当的使用子查询来做相关的性能优化。 ## redis **问:缓存如何保证一致性(每家都问)** > 答:首先,我们要明确一点,缓存不是更新,而应该是删除。 > > 删除缓存有两种方式: > > 1. 先删除缓存,再更新数据库。解决方案是使用延迟双删。 > > 2. 先更新数据库,再删除缓存。解决方案是消息队列或者其他binlog同步,引入消息队列会带来更多的问题,并不推荐直接使用。 > > 参考地址:https://zhuanlan.zhihu.com/p/338833847 请忽略广告 **问:用过 redis 哪些数据结构,使用场景是什么(每家都问)** > 答: > 1:String(字符串) 场景:存储key-value键值对 > 2:list(列表) 场景: > - 消息队列:`lpop`和`rpush`(或者反过来,`lpush`和`rpop`)能实现队列的功能 > > - 朋友圈的点赞列表、评论列表、排行榜:`lpush`命令和`lrange`命令能实现最新列表的功能,每次通过`lpush`命令往列表里插入新的元素,然后通过`lrange`命令读取最新的元素列表。 > 3:hash (字典) > > 场景: > > - 购物车:`hset [key] [field] [value]` 命令, 可以实现以`用户Id`,`商品Id`为`field`,商品数量为`value`,恰好构成了购物车的3个要素。 > - 存储对象:`hash`类型的`(key, field, value)`的结构与对象的`(对象id, 属性, 值)`的结构相似,也可以用来存储对象。 > > 4:set(集合) > > 场景:好友、关注、粉丝、感兴趣的人集合: > > 5:zset(有序集合) > > `zset` 可以用做排行榜,但是和`list`不同的是`zset`它能够实现动态的排序,例如: 可以用来存储粉丝列表,value 值是粉丝的用户 ID,score 是关注时间,我们可以对粉丝列表按关注时间进行排序。 > > `zset` 还可以用来存储学生的成绩, `value` 值是学生的 ID, `score` 是他的考试成绩。 我们对成绩按分数进行排序就可以得到他的名次。 > 参考地址:https://zhuanlan.zhihu.com/p/116742225 **问:redis 的 connect 和 pconnect 的区别,pconnect 有什么问题(滴滴 陌陌)** > 答:connect:脚本结束之后连接就释放了。 pconnect:脚本结束之后连接不释放,连接保持在php-fpm进程中。每个php-fpm进程占用一哥连接,当php-fpm进程结束时会释放掉 所以使用pconnect代替connect,可以减少频繁建立redis连接的消耗。 **问:redis 如何实现分布式锁,有什么问题(陌陌)** **问:redis 为什么用跳表实现有序集合?原理,用有序集合的场景(字节 滴滴)** > 答:本文讲解的非常清楚,大家需要理解并且记忆 https://blog.csdn.net/z69183787/article/details/89396748 **问:主从同步的原理,哨兵和集群的区别(滴滴)** > 答:问题主要需要理解,故大家仔细阅读下面推荐的文章。 https://www.cnblogs.com/chenwenyin/p/13549492.html redis cluster 用的什么协议同步数据,哨兵的选举呢(陌陌) rdb 和 aof 的原理(滴滴 高德) 数据过期和淘汰策略(滴滴 高德 字节) **问:缓存雪崩 击穿 穿透(滴滴 陌陌)** > 答:https://micuu.com/new/2619.html ## php php-fpm 的生命周期,创建进程方式,各自的优缺点(腾讯 百度 滴滴 陌陌) php 数组遍历为什么能保证有序(滴滴) php 怎么实现的弱类型,怎么实现一个扩展(腾讯) 常见魔术方法和函数(腾讯 滴滴) ## es 深度分页会有什么问题(滴滴 百度 陌陌) 倒排索引的原理(字节 高德) lsm 树原理(字节) ## kafka kafka 的架构,大致储存结构(高德 字节 滴滴) 如果消费者数超过分区数会怎么样?(顺丰 滴滴) 怎么保证数据的可靠投递?(陌陌 字节) 消费者的 offset 存在哪里?(字节 腾讯 陌陌) 如何通过 offset 定位消息?(字节) 时间轮的原理(陌陌 顺丰) kafka 写入高性能的原因,sendfile 和 mmap 原理,为什么不用 splice(滴滴) ## 网络 https 原理,tls 握手需要几个 rtt?(滴滴 百度) 浏览器访问某个网址的详细过程,四次挥手(腾讯 滴滴) http2 和 quic 原理(字节) 分布式系统 分布式事务怎么处理(高德 陌陌) 简述 raft 原理(陌陌) 分布式 id 的几种实现和优缺点(滴滴) 降级 限流 熔断实现原理(高德 陌陌) ## 其他 布隆过滤器的实现原理和使用场景(滴滴) 进程间通信有哪几种方式(腾讯) 进程线程协程区别(滴滴 知乎) lvs 原理,如何保证高可用(滴滴) 502 504 什么原因,如何处理(滴滴 百度 腾讯 顺丰) 给你两个一模一样的玻璃球,求出 100 层楼哪一层开始玻璃球会被摔碎(腾讯) 一致性 hash 原理,怎么解决节点少数据倾斜的问题(滴滴 陌陌) ## 系统设计 设计秒杀系统,需要支持 100W 以上 QPS(滴滴) **问:设计微博首页,需要拉取所有关注用户的最近 20 条微博(百度)** > 答:**先说逻辑:** > 1、每一个用户都会有一个单独的消息池,所有该用户需要看到的消息都会放到这个池子里。 > 2、如何把消息放到消息池中呢,有三种主要方式(可以根据需求选择): > 1.第一种方式称为Push方式,当一个消息诞生的时候(如某人发了一个微博),消息系统就遍历关注了该用户的人,审查系统等等,把消息推送过去,标记为未读状态。优点是信息实时性较高,缺点是要存储数据是不是push成功了比较复杂。 > 2.第二种方式是Pull方式,即用户定期的轮训所有消息源(关注对象、系统通知等),把对自己可见的数据拉取过来,优点是减轻消息服务器的负担,即消息服务器端不用管有没有拉取成功,只要提供数据源即可,缺点是实时性不高。 > 3.Push+Pull方式,即实时性要求高的数据,如关注请求、好友请求之类的使用push主动推过去,系统通知之类的可以用pull的方式每隔一段时间去取。 > **性能问题** > 1、消息服务作为微博系统中最重要的服务之一,当然是从微博平台独立出来,开放TCP接口接收客户端(微博Web平台)的请求。 > 2、微博Web平台和消息服务器要设定好信息传递协议,比如开放一个TCP链接,按照某种特定的格式一次性把大量数据传过去,而不是一点一点多次传过去。 > 3、其他就没什么了,做好服务器运维,有硬件上硬件,没硬件拼数据结构和算法的设计。 抢红包算法设计(百度 滴滴) 设计一个短链系统(百度)
注:原创不易,转载请注明出处(
https://micuu.com/new/2713.html
),本站所有资源来源于网络收集,如有侵权请联系QQ245557979进行清除。
最后修改与 2022-03-29
上一篇:
有哪些软件可以进行文字比对,做差异对比,对比版本的?哪些是程序员必备的对比软件
下一篇:
不知道为什么,感觉拼多多最近发货很慢!
留言反馈
请先登录
问题反馈渠道,如有软件无法下载或者其他问题可反馈。【由于某种原因,目前留言不展示】
用户需要登录后才能留言反馈
立即留言
珍藏视频
10分钟高效燃脂
30天高效瘦脸操
5分钟缓解颈椎操
友人
微博
全民K歌
唱吧
今日头条
悠悠网
科技小锅盖
彼岸桌面
阮一峰
laravel社区
V2ex
掘金
更多>