字节面试经验总结

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。
posted @   fwx  阅读(515)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示