字节跳动业务中台三面面经(已OC)
整个面试过程有惊无险吧,还是比较顺利的拿到offer了。
不过因为疫情原因,我们学校对学生进出进行管制了,估计要等一段时间才能去实习。
现在字节跳动还在招人哦~,想要内推的同学可以私信我嗷~
我现在把之前的面经整理了一下
一面:
面试时间:1个小时10分钟
(1)自我介绍
(2)介绍项目相关技术
(3)数据库的隔离级别
(4)redo log 和 undo log
(5)zookeeper分布式锁
(6)linux常用命令
(7)java中的堆和栈
(8)编程题
1)有 time ip path这三个字段的日志数据,请使用shell进行编程,求ip的top10。(我说好久没写shell了,有点忘记怎么编程了)
2)有一个数组,请找出a+b+c=k的组合个数
3)一个数组,请求出最大的子序列和。(我一开始写了个空间复杂度为O(n)的DP,之后面试官让我讲出空间复杂度为O(1)的DP)。
二面:
面试时间:1小时
(1)自我介绍
(2)问项目
(3)目前学校教了哪些课程(我们学校还没开操作系统和计网这两门课,但是我和面试官说我有学过计网和操作系统,但是之后一个都没问....)
(4)C++的多态(我的技术栈是java,可能是面试官看我得过一些C++编程比赛的奖项,就突然问了C++)
(5)如果一个sql运行得非常慢,如何解决
(6)为什么mysql索引要使用b+树,为什么不使用红黑树
(7)开始做题
1)例如数组a = 1, 2, 3, 4, 5是有序的,任意旋转可能得到a = 4, 5, 1, 2, 3 ,在旋转后的数组a中搜索是否存在目标值n,如果存在返回下标,不存在返回-1
我说了一个O(n)的算法,面试官让我再想想,我觉得是二分,但是不知道怎么解决。 然后面试官就说下一题了。
2)有一批隔板,其高度用数组表示,相邻两隔板之间距离均为1,隔板本身不占体积,问下了足够多的雨之后,隔板中最多能蓄多少水?
样例: 输入:[3,2,5,4,6,2] 输出: 18
3)给你一篇英语课文,你得从里面去掉一些字符,使得最终只剩下指定数量的字符(假设k个),并且字符间的顺序不能变,问你怎么样使得剩下的课文内容字典序最小。
样例:输入:k=3 课文:abcdeafg
输出:aaf
面试官看还有时间,然后就又问了一些问题
(8)如果有10亿条数据,需要求出用户数,怎么解决。(我说了一个方法,面试官问还有其他的吗,然后我回答不知道.....)
三面:
面试时间:90min
(1)求出一个数的下一个比他大的数。例如:1234下一个数就是1243
这道题之前做过,但是我有点忘了,推了挺久的。
(2)a+b+c=0(leetcode经典题目了,直接秒了)
(3)给n个有序数组,求出他们的交集。(我用hash表做的,但是肯定还有其他的优化方法,面试官说时间不够了,就让我按自己思路写了)
(4)思维题
A B C D 要过独木桥过桥时间分别为1 2 4 8,过桥时只能用灯笼,并且只有一个灯笼,可以两个人同时过桥,求最短过桥时间。
想了挺久,这道题要是画图就很好解决,但是我都是在脑子想的,所以一直没想出最优解。(面试官疯狂提示,但是我还是想不出来,还是太菜了)
上面已经耗时70min了,所以面试官又问了一些八股文。
(5)进程的通信方式
(6)命名管道与普通管道的区别
(7)tcp的三次握手和四次挥手。