PCG QQ后台开发暑期实习1.5h1.自我介绍2.介绍项目3.页表的数据结构? 我介绍了页表的基本功能和访问过程4.介绍下实现的协程调度策略,和原有的比较? 介绍了协程的实现和xv的上下文切换的过程5.介绍下xv6的进程调度策略6.介绍下调度算法? 先来先服务 最短任务优先 多级反馈队列 时间片轮询7.多路IO复用的好处? 对比了多进程和多线程 还提了线程池8.开始做题 30~40min 8.1 215 数组中的第K大元素 要求不用库函数手写堆排序8.2 32 有长有效括号 没写出来说了下思路9.MySQL的索引在项目中? 结合注册功能提了建立了联合索引10.介绍下索引的存储结构? InnoDB的索引文件和数据文件一起存储11.介绍下索引叶子节点存了什么? 主键索引树存页记录,二级存主键ID12.介绍下回表?13.离线消息存储数据量过大怎么办? 考虑分库分表14.该使用业务的什么字段进行分库分表? 不会15.介绍下客户端之间的通信机制? 通过服务器转发16.亿万级别客户端的转发如何保证消息可靠? 考虑了TCP的设计 序列号 确认号17.TCP为什么可靠? 连接管理 序列号 确认号 超时重传 拥塞控制和流量控制18.介绍下 超时重传 拥塞控制和流量控制算法详细?19.上述算法中的设计那些可以用到 .亿万级别客户端的转发可靠的问题? 结合TCP的特性进行介绍20.MySQL慢查询如何查找和优化? 慢查询日志+explain21.亿万客户端访问数据库如何保证数据库性能? 考虑主从复制22.介绍下主从复制的流程? 三个线程+binlog23.介绍下binlog不同格式的使用场景? row statement 两者混合24.如何保证数据通信的安全? 介绍了RSA/AES 哈希 入口校验25.在不同的token和session下如何保证安全? 没听过26.Redis缓存一致性问题为什么有? 对数据库和缓存的操作不是原子操作27.举例说明那些场景可能出现缓存一致性问题? 介绍了 并发场景下和数据库缓存操作失败的情况28.介绍下B+树的时间和空间复杂度?29.B+树如何实现范围查找的? 双向链表底层——————PCG QQ后台开发暑期实习二面1h(45min写题讲题+20min问项目)合并区间(不让使用sort):实现了数组快排,讲代码被三整数求最大和:不会说了思路1.介绍发送方和接收方的数据收发流程?服务器作为中转2.如何转发给接收方?用户ID和数据库用户ID的map3.如何感知好友在线?map和心跳机制探测4.用户不在线,该如何做? 离线消息存储5.如何进行离线消息的存储? 介绍表结构,优化群聊存储6.好多消息接收方如何保证有序接收? 考虑应用层序列号和确认号7.群聊不同用户发送消息该如何进行序列号的设定?到达中转服务器的时间来排序8.序列号无法保证消息到达,该如何保证消息到达? 定时ACK确认+重传 考虑消息重复9.接收方可以感知到消息没收到该如何实现? 服务器推送消息数,客户端比较消息数和实际收到的数目10.客户端如何感知消息丢失? 版本号,客户端维护本地版本号,如果不连续则认为丢失消息,超时请求最大连续的版本号+111.消息丢失客户端拉取消息,如何做? 超时后主动推送最新版本号,服务器比较将最新的版本号12.消息序列号如何维护?13.消息序号如何保证唯一且连续递增? 数据库维护+算法(雪花算法)+Redis生成14.群聊多条消息同时到达不同服务器,如何保证消息序号不同? 分布式锁+ID生成服务或者使用incr原子累加15.如何实现分布式锁? Redis set key local_seq nx #腾讯# #暑期实习#