如何面向面试阅读 jdk 源码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
amiwrong123
V2EX    程序员

如何面向面试阅读 jdk 源码?

  •  
  •   amiwrong123 2019-12-25 09:28:24 +08:00 via Android 4409 次点击
    这是一个创建于 2207 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如我看 hashmap 源码就发现很花时间,有很多细节容易看进去了(红黑树那块也看了好久,但就算能看懂,以后让我手撕估计也是不行的)。

    虽然我也想处处都精看,但奈何时间有限。所以想问问各位在看源码时,有没有什么独到的侧重点和方法?
    13 条回复    2019-12-25 15:09:57 +08:00
    forgottencoast
        1
    forgottencoast  
       2019-12-25 09:33:25 +08:00 via iPhone
    一般先看别人的介绍文章,再看就轻松多了。
    amiwrong123
        2
    amiwrong123  
    OP
       2019-12-25 09:41:48 +08:00
    @forgottencoast
    是啊,肯定是要看别人的博客的。但有时候别人博客也不是很仔细,上次有个 balanceInsertion 的疑问,百度了一圈没有解决疑问,谷歌后更神奇,好像国外没有程序员在研究 hashmap 的红黑树操作似的
    securityCoding
        3
    securityCoding  
       2019-12-25 09:48:04 +08:00
    最近一直在思考一个问题:如何知道自己真的懂了?挺有意思建议楼主也思考思考
    Michaelssss
        4
    Michaelssss  
       2019-12-25 09:54:49 +08:00
    问面试官你要问哪个源码,现场搬出电脑一起看。。
    amiwrong123
        5
    amiwrong123  
    OP
       2019-12-25 10:10:24 +08:00
    @securityCoding
    这个确实值得思考,现在就是看完了写博客,强迫自己整理思路,我觉得这样会让自己更懂吧
    amiwrong123
        6
    amiwrong123  
    OP
       2019-12-25 10:32:42 +08:00
    @Michaelssss
    哈哈哈,面试官说:你给回家看去
        7
    Raymon111111  
       2019-12-25 10:35:10 +08:00
    主要看那些常见的,比如 hashmap 啊,threadlocal 啊之类的东西

    做到能口述原理,比如扩容怎么实现,什么场景下实现,并发为什么会有问题等等

    多搜这个东西相关的面试题
    Raymon111111
    guxingke
        8
    guxingke  
       2019-12-25 10:37:03 +08:00
    面向面试的话, 那就关心相关的面试题, 带着问题, 从源码里找答案. 总结之.
    securityCoding
        9
    securityCoding  
       2019-12-25 11:57:25 +08:00
    @amiwrong123 应该到能用自己组织的语言简单的表达出来才算看懂,可以看看 YJango 这位 B 站 up 主的视频
    vjnjc
        10
    vjnjc  
       2019-12-25 12:05:49 +08:00
    面向问题看啊,比如 hashmap 怎么实现 get 效率在 o ( 1 )的,并发性问题怎么产生的,要是你来设计怎么修复
    vwym
        11
    vwym  
       2019-12-25 14:25:26 +08:00
    面试有一个好处,唬住 50K,唬不住 5K,更重要还是看你当时的口才,练表达能力应该更加有效。
    给个建议,把源码阅读写下来,尽量写成能让看的人通俗易懂,放到自己的个人博客里面。
    至少唬不住的时候还能够说不太记得,但是当时是分析了巴拉巴拉的。
    hatcloud
        12
    hatcloud  
       2019-12-25 14:53:32 +08:00
    我问 Hashmap 实现原理的时候,其实不太关心你是不是知道红黑树什么的,更想知道的,为什么要这么设计。知道细节是加分项,知道代码解决的是什么问题,为什么这么设计是好的,才决定我觉得这个人是否是我想共事的同事。
    hatcloud
        13
    hatcloud  
       2019-12-25 15:09:57 +08:00   2
    所以我觉得面对面试看源码可以着重看源码的结构设计,不同部分之间交互的设计模式。整个大框架看明白了后,再看细节。
    突然想到陶渊明说的「不求甚解」。如果时间和精力是无限的话,扣的细没什么不好,但偏偏没人的时间和精力是无限的。
    回到楼主的主题,我觉得去探究 hashmap 里面红黑树的具体实现肯定是很好的求知精神,但就「面向面试」这个命题而言,我觉得是没必要的。这些时间可以拿去看更多的其他知识点。不过,都是浅尝则止也不好,会让面试官有个「深度不够」这样的印象,所以肯定需要有些地方是细看的。至于哪些地方细看,我觉得应该是和自己项目经验结合的地方。比如项目中自己碰到了很多内存相关的问题,那 JVM 的内存回收的细节是需要细细看的,又比如如果自己做的是一个需要大量加载图片的 App,那么 Bitmap 相关的知识就是逃不掉的。和项目经验结合,这些细节看起来可以和之前的经验交相验证,也会比生啃其他知识点的细节要轻松一些,同时和例子一起讲,在面试的时候更能折服面试官。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1061 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 18:29 PVG 02:29 LAX 10:29 JFK 13:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86