字节跳动golang三面

一面 1h 10min

  • 自我介绍
  • 项目一直怼
  • 用户很多redis都抗不住怎么办
  • 消费的时候网络波动,数据库写进去了,但是返回用户超时了怎么办,怎么保证最终正确(扯了好久这个问题)
  • 如何定位sql语句查询慢
  • 给了个例子,表结构+SQL语句+explain,分析为什么慢,要怎么改,怎么优化
  • redis哨兵模型、部署、原理,怎么选从服务器
  • TCP可靠性、黏包(讲到了nagle算法,面试官追问具体怎么合并?合并到多大,大小是多少)
  • 算法:某一个大文件被拆成了N个小文件,每个小文件编号从0至N-1,相应大小分别记为S(i)。给定磁盘空间为C,试实现一个函数从N个文件中连续选出若干个文件拷贝到磁盘中,使得磁盘剩余空间最小。函数返回值为剩余空间,若无解返回-1。如N=5,S={1,2,3,5,4},C=7。结果为start_index=0, end_index=2, return=1
  • 算法:在一颗满二叉排序树深度为k,节点数为2^k-1;节点值为1至(2^k-1),给出k和任意三个节点的值,输出包含该三个节点的最小子树和根节点。
  • 反问
  • 节奏很紧,一个问题接着一个问题,提到某些点也会一直深挖,觉得掌握了就直接切问题。年轻的小哥像是没有感情的面试机器,全程也没说笑、聊天...

二面 50min

  • 闭包怎么实现的
  • GC
  • TCP协议、timewait、如果有大量的timewait会有什么问题、拥塞控制、TCP通过什么来判断网络拥塞、
  • linux系统,32位系统,一个进程有4G的内存空间,从高地址到低地址分别放什么内容
  • 进程通信、共享内存底层怎么实现
  • 物理地址和虚拟地址
  • redis数据结构,zrank怎么实现的
  • redis持久化方式,具体实现
  • mysql聚簇和非聚簇
  • 隔离界别
  • 算法:最长回文子串长度
  • 快排。时间复杂度,如何避免n^2的情况(我说了随机一个下标作交换,他说这样还是有一定的几率n^2,如何完全避免)
  • 有没有可能存在一种排序算法时间复杂度能低于nlogn,解释一下
  • 面试体验良好。

三面 1h 10min

  • 自我介绍
  • 项目,爬虫的攻防、具体设计等问题
  • 在浏览器输入url访问网站的过程
  • 跑马,64匹,8赛道,求最快的4匹
  • 算法:给定m个不重复的字符[a,b,c,d],以及一个长度为n的字符串tbcacbdata,问能否在这个字符串中找到一个长度为m的连续子串,使得这个子串刚好由上面m个字符组成,顺序无所谓,返回任意满足条件的一个子串的起始位置,未找到返回-1.比如上面这个例子,acbd,3.
  • 面试官说先思考,然后讨论思路,讲了O(N) 的思路,面试官让我继续优化
  • 准备开始写代码的时候,提醒说注意代码风格、命名等
  • 实习相关
  • 最近看了什么技术方面的书籍
  • 其他公司的面试情况