前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字节跳动面试官揪着源码一直问,然后......

字节跳动面试官揪着源码一直问,然后......

原创
作者头像
程序员追风
修改2019-07-23 18:14:22
7060
修改2019-07-23 18:14:22
举报

最近,我的一位朋友在找工作,已经拿到了美团、快手等公司的Offer,准备选择其中一家入职了。

后来他又接到了字节跳动的电话,通知他去参加三面。从二面到三面之间隔了挺久的,他以为都没戏了,结果就收到了通知。

由于已经拿到了很多大厂的Offer,他对这次面试还是挺有信心的。但是回来之后,表现的特别沮丧。

一问之下,原来是面试官问的一些问题他回答的不好,他说面试官揪着源码一直问,但是自己并没有深入看太多的源码,所以回答的不是太好。

他给我总结了一下面试官关于源码部分的问题,主要题目如下:

1、你看过那些源码吗?

2、那你能讲讲 HashMap的实现原理吗?

3、HashMap什么时候会进行 rehash?

4、结合源码说说 HashMap在高并发场景中为什么会出现死循环?

5、JDK1.8中对 HashMap做了哪些性能优化?

6、HashMap和 HashTable有何不同?

7、HashMap 和 ConcurrentHashMap 的区别?  

8、 ConcurrentHashMap和LinkedHashMap有什么区别?

9、为什么ConcurrentHashMap中的链表转红黑树的阀值是8?

10、还看过其他的源码吗?Spring的源码有了解吗?

11、SpringBoot的源码呢?知道starter是怎么实现的吗?

以上,就是我这位朋友被面试官血虐的过程。全程围绕源码展开。

那么,为什么面试官这么喜欢问源码?作为面试者你又为什么需要看源码呢?

难道是为了面试吗?我觉得不是!我觉得看源码有以下几个好处:

1)可以从源码中学习

比如我们看JDK的源码,其中会有很多关于性能优化、防并发的例子,还有很多地方用了设计模式,这些都是很好的可以用来学习的代码。

对于初学者来说,很多代码格式、命名等都是需要学习的,最好的办法就是通过开源代码来学习。

2)深入源码才能懂得原理

有的时候,我们使用的第三方的框架,中间件等,我们要想了解他们的原理,最有效的办法就是直接看源码。源码是不会骗人的。

3)更好的解决问题

只要是人写的代码,就可能存在bug,别人的开源代码也一样,通过阅读源代码可以更好的定位和解决问题。

4)为了找工作

为什么面试官喜欢问源码,因为这能提现一个面试者是否爱钻研,是否愿意深入原理。而企业需要的恰恰是这样的人!

那么如何学习源码呢?有几点建议:

1)先从全局出发

不要一上来就直接进入到细节,先通过文档、代码结构、架构分层等方面入手,大概了解一些各个模块的代码都是什么功能。这样在后续深入学习的时候可以刚加便于理解和查找响应代码。

2)从问题出发

深入学习之前,最好带着一个问题,比如学习HashMap的源码时候,你带着问题『什么时候会进行rehash』,这样你就可以围绕自己的问题逐渐的深入展开。从点到面,逐步扩展。

3)面向debug学习

在源码学习过程中,也可以通过调试的方式学习,这样可以更好的查看代码调用过程,执行情况,运行时变量等。更加方面理解。

4)做记录

最后,要勤于记录,把自己遇到的问题和思考记录下来,方面后面再次复习和查看。

好了,希望大家都养成阅读源码的好习惯,也希望大家遇到所有源码类面试题都可以轻松搞定。

最后,在这里分享一些框架源码学习路线,有了路线,也许可以在前期降低一点门槛。

喜欢文章记得关注我,谢谢支持!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档