字节面试经验总结
7月18日 字节一面
1. leveldb 项目盘问
问的挺细,讲讲详细的重启流程,Get操作流程,等等,说的很不好需要仔细再过和总结一遍。
然后lsm tree很常用,那他的检索速度慢又是怎么解决的。
如果要给leveldb提供缓存,有什么方案,各有什么优缺点。
2. 数据库项目盘问
介绍介绍
还需要梳理一下,把项目关键都理清楚。
需要按条理梳理一下。
3. 计网
udp tcp适用场景,优缺点
4. 题目
设计基于日志的数据库接口 这种题型以前没怎么接触过,需要多看看。
总结: 要把看过的在回顾一遍,以及,关键是把自己做过的项目总结梳理完善,能说的有条理通顺。
7月22日 字节二面
1. 项目盘问
leveldb和mysql的区别
leveldb为什么要用跳表,与红黑树的区别,有什么更好的数据结构吗
log的相关问题,如:
- 如何确保数据不会丢失
- 日志出现错误了会怎么办
- leveldb重启过程
mysql redo log的机制,如何进行数据恢复。
关系型数据库是如何实现的,有哪些模块,磁盘管理器如何实现,文件读取方式,以及问到了DMA机制。事务管理器如何实现。
2. 算法思路实现
如果要找到一个数组中的前100大的数字,要如何实现?
- 使用和partition(快拍的一部分)
时间复杂度是多少:
- 考虑平均时间复杂度,第一次patition为N,第二次为N/2,以此类推,通过级数运算,平均时间复杂度为O(2N);
如果数组在内存中无法装下,只能放在磁盘中,该如何实现?
- 使用最大堆,大小为100;
- 然后,使用一个数记录最小的数字的大小;
- 接着,使用最小堆来筛选出最小的数字;
- 每次取内存能够容纳下的数据量进行处理
- 时间复杂度为NO(logn) + M; M*N为总数据量,M为磁盘读取速度,N为每次读入内存的数据量,n为100;
算法题
实现一个支持随机读取和resize操作的环形队列;
- 比较简单,用双指针和固定大小数组实现即可;
如果要实现不变的offset(不管如何pop和push,取到一个元素的index不变)
- 使用逻辑offset,及记录开始节点的index,每次pop会使index+1。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界