一面
问redis项目和具体实现
redis为什么快
缓存击穿-逻辑过期,缓存空值
怎么查找一个key是否是热点key
redis分布式锁怎么做
http有无状态,怎么实现保存状态?
cookie安全问题,跨域
https,对称与非对称的性能
数据库四大特性,分别怎么实现的
常见隔离机制,怎么实现的
mysql索引结构
为什么b+不哈希
写一个简单sql
有个表:age,score,name,找每个年龄段分数最高的用户
clickhouse和mysql的对比(个人实习经历)
算法:3 30 34 5 9,找该排列组合成一个数的最大值(9534330)
二面
关系型数据库和非关系型数据库区别和应用场景
redis数据一致性
多实例之间的数据一致性
TCP为什么三次握手
你怎么理解异步的?怎么实现的?
让你实现一个异步调度器,最关键的状态有哪几个?(ready阶段,任务执行阶段,返回通知阶段)不确定对不对
如果这个异步调度器要去支持并发,你会加哪些东西(线程池)
线程池动态扩容
kafka零拷贝(当时和epoll对描述符的管理,ready_list,操作系统的mmap联想在一起答了,应该挺加分的)
场景题:有一个榜单,新进来一个数,获得其位置并更新绑定
回答:已经有序了直接数组加二分查找呗
面试官:那一万个数据更新第二名榜单怎么办呢,怎么改进
跳表
算法:给一个n大小无序数组,每页有m个元素,返回第 k页大的元素
eg. arr:7 1 3 2 5 4 6,m=2,k=3
返回:6 5 或 5 6,返回的元素不要求有序
快排变种
三面
网络七层模型
ftp和http哪一层,ip哪一层,从ip往下传找mac地址
怎么防止arp攻击
ip与会话层多了什么维度
redis项目,秒杀业务,超卖怎么解决的?如果库存更新的每个请求都直接打到数据库会挂掉吗 ?怎么办?
了解过令牌桶吗?
扣库存后如果挂掉了还没下单,不就导致卖不完了吗?怎么办?(事务加MQ)
我希望库存加成功后订单一定能创建,不允许失败,咋办。(参考mysql的redo log,扣库存前把请求加入redo log日志)
考虑分布式,把redo log写入磁盘。重启后不一定是同一个机器,咋办
放redis里面,用aof进行保存,反问面试官:但是aof对性能的影响不友好,然后又考虑到这个高并发的场景我觉得可能还是有问题
面试官:创订单的时候其实大部分请求已经被库存查询block掉了
后面和面试官讨论了一下这个问题
copy on write,零拷贝
webserver 拷打
http请求哪些部分
http 2.0
算法:接雨水