2023届 蔚来提前批面经 已意向
背景:双非一本 无实习 项目kv数据库
时间线:投递7/18 -> 笔试7/26 -> 一面8/6 -> 二面8/6 -> 意向8/19
笔试三道lc原题(DP * 3),一面结束后十分钟通知二面,无hr面,一面没问项目(面试官嫌太简单),二面问项目比较多
岗位:后端研发工程师-数字化业务发展-上海
一面 8/6:
- 算法:剑指 Offer 28. 对称的二叉树
- 分析复杂度
- 算法:lc3. 无重复字符的最长子串
- 分析复杂度及优化
- 为什么没有实习经历
- 怎么学习的linux
- 是否考虑怎么在KV数据库项目中加入事务
- 什么是回溯
- 有哪些搜索算法
- 什么是剪枝
- 设计模式自己有在项目中用过吗
- 日志系统为什么需要单例模式
- linux中写文件write的流程
- 为什么开销大
- 用户态和内核态切换都做了什么
- 为什么有用户态和内核态
- 用户态和内核态的地址空间区别
- 虚拟内存用来干嘛的
- 内存4个G,虚拟内存8个G。数据存在哪
- 什么样的内存访问是效率最高的
- 如何高效利用缓存
- 缓存失效策略
- 局部性原理
- 顺序读和随机读的区别
- 单例模式线程安全
- git中merge和rebase区别
- 反问
二面 8/6
- 自我介绍
- 有没有实习过
- 介绍项目及角色
- 是否了解过其他基于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. 合并区间
- 反问
意向书 8/19
#蔚来提前批#