字节提前批客户端一、二、三面面经(完整复盘)【攒人品ing】
不废话,直接上面经:
7.21一面:1h15min
1、自我介绍(含项目)
2、为什么要转客户端?对客户端的了解?
3、Java面向对象的三大特性(详细解释了自己的理解)
4、回答时讲到了编译时多态和运行时多态,所以接下来讲讲重写、重载
5、手写单例(写了双重校验锁),逐行解释代码(关键字那些)
6、介绍一下其余了解的单例(剩下5个)
7、静态内部类实现的单例模式:为什么线程安全?具体怎么确保线程安全的?
8、抽象类和接口的区别(几乎都描述+解释了)
9、讲到了接口里面1.8新增了default,详细解释一下它的作用
10、Java的类加载机制,双亲委派机制的用处(回答了防止重复加载同名的,防止破坏java核心的api之类的)、如果自上到下都加载不到抛出什么异常(说了ClassNotFoundException)
11、Java线程池:详细说了3大方法、7大参数、4种拒绝策略,核心线程数和最大核心线程数的区别(答到了阻塞队列)
12、synchronized给普通方法、静态方法、代码块加锁的区别
13、了解哪些设计模式、具体使用场景知道吗(只回答了在Spring中用到的那些设计模式和一些具体使用场景)
14、TCP和UDP的区别(还提到了tcp粘包现象)
15、详细介绍了3次挥手和四次挥手的过程(中间还把那些很多细节如close_wait和time_wait都扩展讲了)
16、知道哪些状态码(把记住的1xx到5xx全都说了一遍)
17、了解幂等吗?(回答了之后又补充说这是post和get的本质区别.......)
18、https的ssl建立通信的过程(详细说了整个流程,提到了是建立在tcp连接上的,在说密钥或公钥时都带了是对称加密还是非对称加密的...)
19、算法题:每隔k个数翻转一下链表
20、反问:
(1) 面试及格吗?挺好的,基础比较好
(2) 客户端0基础可以?没关系,只要有语言基础,会有培训啥的...
(3) 推荐些学习安卓的资料?《第一行代码》入门、再直接去看开源项目学
(4) 你目前有offer了吗?说了百度提前批后端开发流程走完了,现在在等最终结果。
总结:面试官人很好,问的也比较基础,感觉自己的回答也基本没啥毛病~
7.23二面:1h+
1、自我介绍(含项目)
2、面试官提到了“面评记录”(应该是看着记录问的,面试过程也不断在打字应该是在记录啥)
3、你知道你投的是客户端吧,为什么投?问了下百度提前批的结果怎么样了
4、操作系统:
(1)问的内存地址计算方式(内存寻址)知道吗?逻辑内存(虚拟内存)地址的计算方式?
(2)问对内存管理的理解:就是虚拟内存、内存管理方式,详细介绍了一下(提到了分页、分段、段页式,内外碎片,感觉答的不好)
(3)直接说对操作系统了解不是很多...面试官就没接着问了
5、计算机网络:
(1)知道tcp拥塞控制吗?详细回答了四种拥塞控制算法的流程,最后让重新描述一下快恢复(应该面试官没听清慢开始门限值和快恢复的起始窗口大小的取值变化过程)
6、JVM:
(1)了解GC吗,详细说了GC的过程以及GC的区域和原因、四种GC算法
(2)说说GC的四种算法,中间问到了内存碎片,(问了原因,有点忘记,是面试官帮我回答了——是不是回收之后没有对齐产生),我接了然后有标志-清除-整理算法。
(3)复制算法怎么复制的?
(4)问了GC的root对象有哪些?(不知道,后来百度发现自己的确忘了...)
①GC管理的主要区域是Java堆,一般情况下只针对堆进行垃圾回收。方法区、栈和本地方法区不被GC所管理,因而选择这些区域内的对象作为GC roots,被GC roots引用的对象不被GC回收。
7、代码题(近40min)
(1)问题:用Java来写,模拟生产者和消费者【考虑多个消费者,要给定队列大小】:
①期间问到了synchronized(queue)里面如果锁的不是queue还能用啥...不知道
②问到了wait()释不释放锁,说了和sleep()的区别
③问到了notify()和notifyAll()的区别,随机唤醒一个线程/唤醒全部线程
④用了Queue、synchronized、wait、notifyAll,也可以用lock锁加上condition即可。
⑤可以看看这个链接:
https://blog.csdn.net/shadowcw/article/details/82352829?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.control&spm=1001.2101.3001.4242
(2) 问题:二叉树给定A、B两个节点,找最近公共祖先《剑指offer68.2》
①先写了递归(面试官说要离给定节点最近的公共祖先而不是离根节点最近的公共祖先,我当时写的可能判断递归出来的太早了,不能这么写,必须保证深度最深!)
②又写了DFS:面试官想看的是dfs,借用map、set......
总结:面试管人特别好,面完还主动给了微信,主动告诉我哪有问题,遇到不会的他也会解答,感觉自己的回答也基本没啥毛病吧(除了实在想不起来的~)
7.27三面:40min
1、自我介绍(项目+硕士期间项目、获奖等经历)
2、写堆排序,然后让详细解释每行代码的原理
3、在浏览器输入URL后的过程
4、DNS寻址(从浏览器缓存到主域名服务器啥的都详细说了一遍)
5、能在毕业前尽快实习吗?(这方面问了很多)
6、你知道投的是客户端吧?你百度提前批是后端的offer吧(我说还在等最终的结果)那为什么要选择客户端?
7、反问:后端转客户端的具体培养体系等等(这位leader回答的很详细,还介绍了一下部门)......balabala.....
备注:感觉字节很注重面评呀,二面面试官上来就说看你记录基础挺好呀,算法也可以,那我们问点之前没问到的吧.....今天三面中面试官也一直在敲键盘感觉是在记面评(不知道自己猜的对不对)。
ps:感觉遇到的面试官人都特别好,二面面试官面完当时就主动给了微信,说有啥问题找他就行~
ps:字节效率真的高,每次面完没一会儿hr小姐姐就打电话来约下次面了,期待周四的hr面~
ps:祝愿大家秋招都成为offer收割机,最后拿到满意的offer~ ~ ~