字节八面面经,发出来攒攒人品~
职位:后端研发-质量保障方向,base杭州
7月23日 18:00 一面 60min
-
自我介绍+科研项目介绍(约20min);
-
后端开发项目简单介绍(我的开发项目是辅助上面的科研项目的,比较简单,约3min);
-
你有做过计算文本相似度的任务吗?(感觉可能是他们现在有这样的需求,我项目和简历全程没提这个)
-
能给我简单介绍一下卷积神经网络吗?(汗!开发岗问我这个,水过去了)
-
浏览器输入一个网址,到页面呈现出来的整个过程;(常见题)
-
HTTP是基于TCP还是UDP?(常见题)
-
HTTP和HTTPS的区别,对称加密和非对称加密等;(常见题)
-
数据库建立索引的原则是什么?(我确认过,不是索引的匹配原则,而是判断是否需要建索引的原则,就说了大数据量才有必要,然后说了索引的利用率,对重复数据多的列就没必要建,感觉没答好);
-
sql题:单表中查询所有科目都大于80分的学生姓名;(比较常规,但是我竟然写错了!而且面试官没提醒我就过了,我后来复盘才想起来);
# 解法一:先查有科目<80分的学生姓名,然后排除这些同学,最后去个重 SELECT DISTINCT name FROM student_score WHERE name NOT IN (SELECT name FROM student_score WHERE score < 80); # 解法二: SELECT name FROM student_score GROUP BY name HAVING MIN(score) >= 80;
-
算法题:字符串无重复的最长子序列(经典!算法恒久远,一道永流传);
-
口述算法题:两个队列实现一个栈(当时没答好,想了个复杂度很高的);
-
你们项目之中有没有遇到需求,需要往一个多主机的分布式系统上发送请求(我确实没有相关经验,因为科研压力比较大,业务相关的内容了解地确实比较少,遂答没有。)
-
Linux上如何查看日志?(我觉得他是想问搜索日志,就回答了 grep命令查找关键字,并且说我们通常科研项目日志少,通常是下载到本地看);
-
Linux怎样查看端口占用?(记得有个netstat命令,但详细的记不清楚了)
-
你的项目怎样部署在服务器上?(常见题)
-
反问。告知假如通过的话HR会联系我。一面结束。
下来之后感觉凉凉,因为看很多面经都是一二面连着,而且这个面试官有点严肃,语气比较温和但是脸上不苟言笑。第二天早上忍不住给HR发短信询问,告知通过。
7.26约二面,约到7月29日下午四点。
7月29日 16:00 二面 55min
-
项目相关;
-
微博的数据库存储设计,建立索引,后续优化(后续优化不怎么会,就瞎扯的);
-
算法题:二叉树的左视图(要求多层打印,比leetcode上的稍微复杂一点);
算法题做完,自己写用例运行通过。面试小哥简单看了一下,然后就说先到这,今天三面的话可能来不及了,我反问“那意思是我二面通过了吗”,小哥说嗯。然后就道谢say goodbye了。等待三面通知中。
7月31日 主动给HR发了短信,然后约了三面在8月9日。(我这个面试时间跨度有点大...我面了个假字节?)
8月9月 16:00 三面 80min
-
平常兴趣爱好?喜欢看推理小说、动漫、电影、玩游戏;
-
推理小说详细说了一下;
-
喜欢的动漫详细说了一下;
-
喜欢的游戏详细说了一下;
-
考研和工作规划;
-
算法题:字符串转化为数字(atoi);(虽然是原题,但是我有边界没处理好,大概率因为这个挂掉了)
-
简历上的科研项目大拷问,非常详细;
-
如何看待美国和字节近期的事件?
-
反问。
三面大部分时间都在唠嗑,不过主要是我在说,面试官就不停地抛一些问题,然后我就balabala。因为面试官没开摄像头,所以我是一直对着黑屏讲话,看不到面试官表情,心里就有些没底。
最后,许愿HR面,字节救救孩子!
8月18日 被北京捞
从三面后就一直等待消息,期间也问过HR,也回复说再等等。
直到8月18日中午,接到另一个字节HR的电话,说杭州这边不合适,有没有考虑去北京。我问面试流程,说是流程会短一点(大概少一面)我同意了。(最后直接从终面开始了,但是我没把握住机会)
希望这次会有一个好结果吧。
8月24日 找HR约了四面
上次HR给了捞人的电话以后,就再也没有联系。心里有点慌,于是24日中午给联系的HR打了电话,HR说帮我联系一下(感觉字节的HR小姐姐都很好,感恩)。
晚上HR加了微信,跟我约了28号的四面(直接技术终面),许愿通过!!!
8月28日 14:00 四面 55min
-
问深度学习问题折磨我;(项目里有一个用深度学习的,面试官看到了就一直问,甚至让我手写公式,我是走后端方向的啊。期间我一直说“不熟、不清楚”,面试官还要一直追问,总共问了7、8分钟,直接给我干蒙了)
-
银行家算法;
-
虚拟内存;
-
手撕队列;
-
手撕优先级队列(堆);(这个没写出来)
面完第三天,问HR,告知不合适。
9月3日 被北京捞
9月3日晚上,北京另一个HR加我,问有没有兴趣再试试,字节北京Data的后端岗位,我同意了,约了9月15日一面,留出一段时间再复习复习(楼主老拖延症了)。
职位:后端,Data部门,base北京
9月15日 16:00 一面 63min
-
一上来没有自我介绍,面试官的原话:”我就不问项目了,你那些项目和我们后端也没有关系。我们这次的面试会有一点难”。
-
有实习吗?为什么不去实习?
-
HashMap为什么线程不安全?假如我的HashMap不会出现哈希冲突,那么会有并发问题吗?
-
ConcurrentHashMap如何实现线程安全?
-
乐观锁、悲观锁?乐观锁ABA问题如何解决?
-
Synchronized的底层实现原理?(这个不会)它用的是业务层的指令还是操作系统的指令来实现的?Synchronized的性能如何?JDK1.8对其进行了哪些优化?
-
JVM的内存结构?String s = "hello world" 和 String s = new String("Hello world") 的区别?int a = 100 ,这里 100 存在哪里?为什么不存栈里?
-
Error 和 Exception 的区别?Error 能不能用 try catch 捕获?Error应该如何捕获?捕获 Throwable 能否捕获 Error?
-
StackOverFlowException是什么原因引起的?ClassNotFoundError是什么原因引起的?
-
栈的大小用什么参数来设置?默认有多大?堆默认有多大?方法区默认多大?
-
类元信息存在哪里?类什么情况下会被卸载?被 synchronized关键字持有的类的Class对象会被卸载吗?
-
GC如何判断一个对象是否存活?可达性分析是用什么数据结构来存的?
-
数据库 where a = xx and b = xx 和 where b = xx ,这两条SQL如何建索引?
-
有一个复合索引 b_a ,假如我们查 where a = xx and b = xx ,能走索引吗?你确定MySQL会帮你优化吗?
-
数据库 where a = xx or b = xx 和 where b = xx ,这两条SQL如何建索引?
-
MySQL单表大概能存多少数据后会性能下降?单表能存一亿吗?假如受限,那主要限制是什么?假如不建索引,那还有什么因素会影响它?
-
MySQL的并发量能达到多大?(我说没实习过,对并发量没概念)
-
Redis熟不?(我说不熟)
至此,面试才过了25分钟。
-
算法题1:单例模式。我写了典型的双重检查锁+volatile的单例。问:第一个为null的判断去掉行不行?第二个为null的判断去掉行不行?中间都加了 synchronized ,那为什么内层还要判断一下是否为null?volatile起什么作用?
-
算法题2:双线程打印1~10,一个线程打印奇数,一个线程打印偶数。
-
算法题3:(没做出来,说了个暴力的想法,还说错了)
题目描述:
给定两个链表,判断他们是否有交叉,如果有交叉,输出所有的交叉节点。节点的数据不会重复,节点数据相同则认为有交叉。 例如 1->2->3->4 和 5->1 ->2->8->9->3->4->0 有4个交叉点,分别是1,2,3, 4。 注意链表是有顺序的,多个交叉点以第一个链表的第一个交叉点为起点,比如1->2->3->4 和 4->3->2->1 的交叉点只有1个,输出 1。
说明:
面试感受:压力很大,面试官没开摄像头,并且问的问题非常快,没有任何闲话。问题问的非常多,我回答一个之后,面试官要么说“ok”,要么说“不对“,我有好几个都是回答完面试官直接说”不对,不是这样的“。加上算法题最后一个也没有做出来,我一度感觉凉凉。
面试完不到半小时,HR告知通过,我约了二面17号。
9月17日 17:00 二面 50min
-
科研项目,10min。(面试官很厉害,提问的都是项目中很关键的问题)
-
上一题进阶:如何拿到这个连续子数组呢?
-
上一题再进阶:一个矩阵,找和最大的子矩阵(这里的矩阵不一定是正方形,长方形也可以);陈述思路。面完下去找到了原题:面试题 17.24. 最大子矩阵
至此,面试过去了40分钟,因为我题目做的比较慢,面试官也一直在引导我。
-
操作系统会给进程分配一部分内存,说一下这个内存结构,有哪些部分。程序申请一些常量,或者一些临时的变量,这些是放在哪一块的呢?(操作系统层面,非JVM层面)
-
两个进程的共享内存是如何实现的?进程通过什么方式申请共享内存?
-
Linux为什么要区分用户态和内核态?
-
数据怎样从用户空间进入到内核空间?又怎么从内核空间到内存空间?或者说,应用进程如何从内核空间拿数据?
-
TCP四次挥手的过程。
面试感受:这一轮面试官很会引导,问的问题也都比较友善,交流的过程中也会有很多反馈,体验很好。
面试完十分钟,HR告知通过,我约了三面21号。
9月21日 17:10 三面 50min
-
自我介绍;
-
项目介绍;
-
项目登录,Cookie和Session一些问题;
-
算法题:
看到题时我是懵逼的,最后花了35min,写了一个很菜很菜的实现。而且Date类的api也忘了,用自创的伪API实现的,面完感觉凉了。没想到在第二天(9.22)下午竟然收到了HR面的邀请,算是意外之喜。
顺便补充,三面面试官特别年轻,看着像刚工作的,最后我忍不住问他,他说他30出头,果然是大佬。30出头就能当三面官了。
-
反问。
9月23日 15:00 HR面 15min
-
自我介绍;
-
对字节面试的整体感受;
-
未来发展规划、意向地点;
-
目前面了哪些公司,手头有什么offer,选择offer的标准;
-
自我评价,自己的优缺点;
-
女朋友情况;
-
反问;
HR面总的来说就都是很正常的HR问题,没有什么好说的。
最后许愿意向书啦,毕竟字节前前后后面了8次,持续了整整两个月,希望最后能有个好结果~