时间线:
投递7/18 -> 笔试7/26 -> 一面8/6 -> 二面8/6 -> 意向8/19
岗位:
后端研发工程师-数字化业务发展-上海
选择 * n
算法 * 3
剑指 Offer 42. 连续子数组的最大和
124. 二叉树中的最大路径和
64. 最小路径和
算法:剑指 Offer 28. 对称的二叉树
分析复杂度
算法:3. 无重复字符的最长子串
分析复杂度及优化
为什么没有实习经历
怎么学习的linux
是否考虑怎么在KV数据库项目中加入事务
什么是回溯
有哪些搜索算法
什么是剪枝
设计模式自己有在项目中用过吗
日志系统为什么需要单例模式
linux中写文件write的流程
为什么开销大
用户态和内核态切换都做了什么
为什么有用户态和内核态
用户态和内核态的地址空间区别
虚拟内存用来干嘛的
内存4个G,虚拟内存8个G。数据存在哪
什么样的内存访问是效率最高的
如何高效利用缓存
缓存失效策略
局部性原理
顺序读和随机读的区别
单例模式线程安全
git中merge和rebase区别
反问
一面结束后十分钟通知二面,无hr面,一面没问项目(面试官嫌太简单),二面问项目相对比较多
自我介绍
有没有实习过
介绍项目及角色
是否了解过其他基于leveldb的生产级的数据库
leveldb的特点
leveldb使用场景
为什么不直接使用redis,而需要有本项目/RocksDB
项目中为什么既有epoll又有select
项目跨哪个平台
是否了解过IOCP
IOCP和select,poll,epoll的区别
多路复用作用
项目中的多线程体现在哪里
为什么不把处理读写事件的多路io复用函数分散到线程中
redis中zset的底层结构
跳表能解决什么问题
redis本身就是内存操作,比较快,为什么还用跳表做空间换时间
redis为什么使用单线程
redis的过期删除策略,定期删除和惰性删除
项目有没有做过压测
智能指针主要解决什么问题
智能指针循环引用问题
是否了解过其他数据库(除了MySQL和redis)
介绍MySQL索引
为什么使用B+树而不用B树
B树适合什么应用场景
索引的最左前缀匹配
覆盖索引
索引下推
MySQL事务隔离级别,主要解决哪些问题
幻读和脏读的区别
幻读怎么避免的 / 事务串行化怎么实现
进程间通信方式
HTTP各个版本 (1.0,1.1,2.0,3.0)
HTTP2.0之前怎么实现服务器推送机制
是否了解过Websocket
什么时候可能产生内存泄漏
如何检测内存泄漏(工具)
内存映射
页面置换算法有哪些
为什么页表一般是4KB - 16KB
TCP和UDP的区别
TCP拥塞控制
了解哪些排序算法,其中哪些是稳定的
排序的时间复杂度
什么排序的时间复杂度下限可以突破O(nlogn)
基数排序的场景
算法:剑指 Offer II 074. 合并区间
反问