字节后端日常实习一二三HR面
背景:本科非科班,读研之后刚开始做的是前端,去年三月份左右开始学java,八月份开始去别的公司实习了六个月(当时也面过字节,不过二面挂了),本次面试前刷题200道左右,面的部门是抖音直播。
一面(第一天,1h左右):
介绍之前的实习项目,问难点有什么,扯了20分钟左右
解决线程泄露的故障(之前实习遇到的)用到了哪些工具
UDP和TCP的区别
TCP为什么要三次握手
操作系统的内存管理是干什么的
为什么要有逻辑地址
Java中哈希表的实现
HashTable和HashMap的区别
HashMap用到的数据结构以及扩容过程
CurrentHashMap怎么实现线程安全的,用的什么锁
乐观锁和synchronized的区别(这里分别说了jdk1.6之前和之后的synchronized)
说出一个稳定的、时间复杂度为nlogn的排序算法
数据库用过吗?(Mysql、Redis、Cassandra)
Cassandra的LSM树
算法题:
链表的归并排序(跑测试用例的时候有问题,不过面试官说不用debug了)
从数组中找到一个数,使得它左边的数都比它小,右边的数都比它大(快排思路,问了时间复杂度)
二面(第四天,中间隔了周末,1h左右):
介绍一下之前的实习项目
Kafka rebalance什么时候会发生
Kafka rebalance的过程(不会)
之前实习用过java stream,讲一下流式编程跟传统的编程方式的区别
了解GC吗?讲一下(因为问题不是很具体,这里扯了好长时间,包括GC的算法、三色标记、对象消失问题等等)
GC的哪些阶段会stop the world(说了G1和CMS里会暂停用户线程的阶段)
线程通信的方式
死锁的四个条件
Java中如何避免死锁(回答了按一定顺序请求锁,又问破坏的是哪个条件)
智力题:两个人轮流抛硬币,首先出现正面的人获胜,求先抛和后抛的人赢的概率分别是多少
算法题:
链表找环
N个数里选M个,输出所有的组合(问了时间复杂度)
三面(第五天,1h左右):
介绍项目
除了Kafka还用过哪些消息队列(回答了解RabbitMQ和ActiveMQ)
Kafka rebalance的过程(幸亏二面之后查了这个问题)
Kafka consumer group相关的几个问题
Kafka有哪些组件
Kafka和其他消息队列的区别(不会,瞎扯)
有几个异步操作,要等他们全部完成后才能进行下一步,怎么做(回答CountDownLath或者CompletableFuture的allOf方法)
CAS过程(这里有点紧张,说着说着扯到volatile上去了,不过后面反应过来了)、
CAS中的ABA问题怎么解决
事务特性、隔离级别、幻读和不可重复读的区别
select * from table XXX where a=X and b=X and c=X怎么建索引
select * from table XXX where a>X and b=X and c>X怎么建索引
算法题:
寻找数组中的峰值
IP地址转为32位整数,用位运算实现
什么时候可以实习,可以实习多长时间,现在学校可以正常出入吗
HR面(第六天,20几分钟)
小姐姐面的,忘了问的些啥了,反正都是些比较正常的问题
第八天收到入职信息邮件。问的都是八股+简历上的东西(简历上没写spring,所以真就一个spring相关的问题都没碰到),总的来说不难。我去年八月份面过一次字节,二面全程在怼我之前做的是前端,不适合做后端,给我面出阴影来了都,没想到这次面试还比较顺利(前两面还好,三面差不多每个问题都问到我回答不上来)。
#字节跳动面经##实习##字节跳动##后端开发#