字节data后端一二面经

本来投的客户端,简历被刷了,被后端捡起来,没有笔试。一二面连着来的。
一面:
先谈了下项目,这是我秋招来第一次被问到实习具体细节的,别的公司可能没有相关业务,都不会问,捞我的部门好像在做相关的业务,所以问得比较细,可能是这样才捞我的吧。
项目聊得不多,5分钟左右。
然后开始问基础。
c++:
violate关键字的作用,我说不会,所以换了一个static。我就说了静态成员,静态方法,静态变量 等等。然后,难题就来了,问你,如果cpp文件链接了两个库,两个库都含有static int a这个变量,这两个变量会冲突吗?我说不冲突,他问,那如果我想两个库共享这个静态变量呢?这就触及到我的知识盲区了,没答出来。
开始写代码。给你一个字符串a,字符串b, 字符串c,问你,c是不是由a和b交叉形成的?例如,a = "abc",b = "123",c = "a1b2c3",这样叫交叉形成,即a和b的内部顺序不变。
我写了个dfs算法,大概花了20分钟,他问,这个时间复杂度多少,我答错了,应该是2的(max(m,n))次方?
然后一面就结束了。等了20分钟接着二面。
二面:(前方算法课预警!!!)
也是问了一下项目,比较关注的是项目细节,大概讲了10分钟。开始做题:两个有序数组的交集。
我一看,这个我做过啊,洋洋洒洒地写了个哈希+遍历的,他问,你这算法复杂度多少?O(m+n);
他问,怎么优化?我又想了一个,双指针,分别遍历,比较小的指针+1,相同则放入结果集中;但是又问,你这算法复杂度多少?我答错了,答案还是(m+n).
于是,问题又来了,怎么优化?我想了一下,有序,那就遍历a,每个去b中二分查找,但是时间复杂度mlog(n)不一定比(m+n)小啊,怂怂的,不敢说。他顿了顿,这思路还可以,继续,还能优化吗?
还能优化吗?想不出来了啊,空气凝固了5分钟。

他看我想不出来了,提示了下,你在数组B里可以用指针跳过一些不要的数字,你在A里再想想看?
还是想不出来,又沉默了五分钟。他又提示了一下,给了个例子,A={1,2,6,7,23,40,50},B= {1,2,23,50},你A里面的6,7还有必要去B里二分查找吗?
哦!是哦!在B里查找到的数tmp,可以再去A那里二分查找,缩小A的遍历范围,就是两个数组之间用二分查找反复横挑!面试官:不错,就是这样,来实现一下吧?
光是编码也有点晕乎乎的,错了好几处,让面试官提示错了的才写好。大致是这样:
首先实现一个函数upperbound(array,int k),返回array中第一个大于等于k的下标。
开始遍历A:
index = 0;
while(index<0){
int first = upperbound(B,A[index]);
if(A[findex] == B[first]){
把值加入结果集中。
index = upperbound( A, B[first+1]);//如果相等的话,如A={2, 23,27},B = {2,27},查找2的时候,B的下一个数27应该成为A的下一个起始地点,之间的23不应该再遍历了。
}else{
index = upperbound( A, max(A[index],B[first]);//如果不相等的话,如A={23,25,27},B = {22,25,28},查找23的时候,A为23,B为25,下一个遍历的数应该是max(23,25)=25。
}
返回结果集。结束。面试官又问了,这个算法的复杂度多少?我是真的晕了,没想出来,他说:今天就到这里吧。大伙来分析分析复杂度应该是多少?
总结:与其说是面试,不如是面试官给我上了一节算法课,就一个简单的问题,两个数组的交集,能问30分钟,我有20分钟属于茫然状态,啥?还能再优化?啥?还能这样优化?啥?复杂度应该是多少,不知道啊?啥?就结束了?
面试官多番提示,我还是要缓好久才能明白他在说什么,这就是我跟字节大佬的差距吗。想不凉都难。
PS:答成这个鬼样,后续还有可能被其他部门捞吗?该不会面试官的评语就是“榆木脑袋,不可雕也”,我还能投其他岗位吗,流下了菜的泪水。


#字节跳动##面经##校招##C++工程师#
全部评论
楼主好有意思哈哈哈哈
2 回复 分享
发布于 2020-09-07 22:09
害 说不定还会有人看呢 二面挂可能会被捞起来的~
1 回复 分享
发布于 2020-09-08 00:34
你的一面第一题是leetcode上的hard 我的天
点赞 回复 分享
发布于 2020-10-09 21:04
所以两个库共享static全局变量咋整啊
点赞 回复 分享
发布于 2020-09-17 00:47
楼主几号投的
点赞 回复 分享
发布于 2020-09-08 09:59
我咋感觉这个东西最坏复杂度还是nlogn
点赞 回复 分享
发布于 2020-09-07 22:20
楼主是科班的么
点赞 回复 分享
发布于 2020-09-07 22:17

相关推荐

05-25 23:45
已编辑
门头沟学院 C++
05-19&nbsp;这一周的面试。二面&nbsp;40&nbsp;分钟。发面经攒人品&nbsp;许愿后面顺利简历项目一个是重写&nbsp;muduo&nbsp;网络库,一个是简单的&nbsp;web&nbsp;server。一开始面试官问了一些学习原因,目标,兴趣方面的问题。1.&nbsp;简单介绍自己(我的自我介绍太长了,需要改进。面试官在&nbsp;1&nbsp;分&nbsp;30&nbsp;礼貌打断开始提问了)2.&nbsp;你自学这些项目时,是怎么样的想法?为什么要学?想达到什么效果?&nbsp;&nbsp;&nbsp;开源的框架已经有了&nbsp;django,为什么你还要做呢?你看过开源框架的代码吗?3.&nbsp;怎么样算是这个事情达成了呢?你是用什么标准来衡量自己的呀?4.&nbsp;你自己对这些感兴趣吗?就是这个项目,自己做的事情5.&nbsp;muduo&nbsp;网络库本来是什么语言?最后效果怎么样?比原生的要好吗?(回答说没有,再详细说明做&nbsp;muduo&nbsp;网络库的原因,从&nbsp;webserver&nbsp;中的事件驱动编程说的)6.&nbsp;你有什么收获?(主要学习了网络编程,多线程编程,IO&nbsp;多路复用。拓展提到&nbsp;asio&nbsp;库,redis&nbsp;中的&nbsp;IO&nbsp;多路复用。)7.&nbsp;为什么硕士转了方向?你转到计算机之后,一些基本的课程,是自己去补的吗?8.&nbsp;编译原理了解吗?词法分析和语法分析用到哪些数据结构和方法,了解吗?怎么把表达式和函数分析出来?9.&nbsp;一个进程在操作系统上跑起来之后,它的内存分布大概有哪些?(答了代码段,数据段,堆,栈)还有吗?10.&nbsp;堆和栈,哪些东西在堆上,哪些在栈上?&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;局部变量都在栈上吗?如果很大呢,声明一个一百万的数组呢?11.&nbsp;怎么避免爆栈问题?怎么知道会不会爆栈?写代码有什么建议,比如,超过多大就需要用动态内存分配大数组?12.&nbsp;听过读写锁吗,怎么实现?(10&nbsp;分钟左右,可能算场景题了吧。)&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;读者怎么请求锁,释放锁?写者呢?&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;后来按照&nbsp;acquire&nbsp;read,release&nbsp;read&nbsp;这样的&nbsp;api&nbsp;来分别说明。代码题:数组中除自身以外的数字的乘积反问对实习生的期待。
查看14道真题和解析 面试问题记录
点赞 评论 收藏
分享
评论
2
36
分享

创作者周榜

更多
牛客网
牛客企业服务