48 一起看过的 Java 源码和面试真题

不为了源码而读源码,只为了更好的实践

持续几个月,我们的专栏终于结束了,这篇总结篇,我们又想回到当初写这篇专栏的初心:我们不为读源码而读源码,只是为了更好的实践。

我刚工作的时候,就有一些大佬推荐我来阅读 Java 源码,那时候的我懵懵懂懂,只觉得大佬说的是对的,于是就去读,当时的目的很简单,主要是两个:一个是应付面试,一个是想让自己更强。

当时边工作边读源码,一开始真心是一点都看不懂,逻辑都看得很迷糊,更不用说去探究作者为什么这么写,用到哪些设计模式了,但也不知道为什么,还是咬牙把源码都读完了。

读完之后,还是比较骄傲的,虽然说读完之后,很多细节都不记得了,但不知道为啥,总是有股莫名的自信,原来自己已经是读过源码的人了,而且在平时的工作中,用到一些 API 时,脑海中突然就会蹦出一些火花来:比如说初始化 List、Map 时如何初始化其大小;比如说如何根据场景来设置线程池;比如说如何根据业务写出优雅的锁,这时候就会自我感觉代码写的好,其实我一直有个理念:只有紧密贴合业务,能帮助解决业务复杂度的代码才是好代码,读了第一遍 Java 源码之后,突然就有了这种感觉,对自己写的代码也越来越有自信了。

随着工作年龄的增加,又陆续读过几次 Java 源码,现在除了对自己写代码的自信,还多了一种帮助别人的自信,在同事遇到困难,或者 代码 review 时,一些漏洞,你很容易就看出来,不知不觉你就会成为团队中的技术专家。

所以我们才一直强调,我们读源码真心是为了更好的实践,这种好处当你认真读完源码之后,慢慢就会感受到了。

同学们的问题

在这几个月内,我收到很多问题,但比较频繁的是两类问题,第一类问题主要是说自己看不懂源码,问我怎么办?这个问题其实我也没有答案,Java 源码本身就很枯燥,它并不是电视剧,也不是小说,它是需要我们静下心来,一行一行琢磨思考的东西,同学们都很聪明,不是看不懂,只是不想静下心来罢了。当然当代码太复杂时,我们只看也是不行的,需要亲自动手 debug。

第二类问题主要是作者为什么这么写?这个问题其实也很难回答,但问这些问题的同学,我基本都一一作答了,在和这些同学交流的过程中,发现一小部分同学的确对源码很有研究,我也受益匪浅,但大部分同学其实并没有搞懂源码本身的逻辑,试想如果在没有搞懂源码本身的逻辑下,又如何去猜测并理解原作者用代码的本意呢?恐怕很难,所以还是建议大家先把源码本身逻辑弄懂后,再去推测本意和设计模型,不然这又会成为你阅读源码的阻碍(话虽然难听,但是真心的建议)。

面试官系统精讲Java源码及大厂真题 - 48 一起看过的 Java 源码和面试真题相关推荐

  1. 面试官系统精讲Java源码及大厂真题 - 34 只求问倒:连环相扣系列锁面试题

    34 只求问倒:连环相扣系列锁面试题 自信和希望是青年的特权. 引导语 面试中,问锁主要是两方面:锁的日常使用场景 + 锁原理,锁的日常使用场景主要考察对锁 API 的使用熟练度,看看你是否真的使用过 ...

  2. 面试官系统精讲Java源码及大厂真题 - 36 从容不迫:重写锁的设计结构和细节

    36 从容不迫:重写锁的设计结构和细节 受苦的人,没有悲观的权利. --尼采 引导语 有的面试官喜欢让同学在说完锁的原理之后,让你重写一个新的锁,要求现场在白板上写出大概的思路和代码逻辑,这种面试题目 ...

  3. 面试官系统精讲Java源码及大厂真题 - 38 线程池源码面试题

    38 线程池源码面试题 与有肝胆人共事,从无字句处读书. --周恩来 引导语 线程池在日常面试中占比很大,主要是因为线程池内容涉及的知识点较广,比如涉及到队列.线程.锁等等,所以很多面试官喜欢把线程池 ...

  4. 面试官系统精讲Java源码及大厂真题 - 24 举一反三:队列在 Java 其它源码中的应用

    24 举一反三:队列在 Java 其它源码中的应用 世上无难事,只要肯登攀. 引导语 队列除了提供 API 供开发者使用外,自身也和 Java 中其他 API 紧密结合,比如线程池和锁,线程池直接使用 ...

  5. 面试官系统精讲Java源码及大厂真题 - 17 并发 List、Map源码面试题

    17 并发 List.Map源码面试题 梦想只要能持久,就能成为现实.我们不就是生活在梦想中的吗? 引导语 并发 List 和 Map 是技术面时常问的问题,问的问题也都比较深入,有很多问题都是面试官 ...

  6. 面试官系统精讲Java源码及大厂真题 - 11 HashSet、TreeSet 源码解析

    11 HashSet.TreeSet 源码解析 更新时间:2019-09-16 19:37:35 成功的奥秘在于目标的坚定. --迪斯雷利 引导语 HashSet.TreeSet 两个类是在 Map ...

  7. 面试官系统精讲Java源码及大厂真题 - 10 Map源码会问哪些面试题

    10 Map源码会问哪些面试题 更新时间:2019-09-10 10:34:08 人的一生可能燃烧也可能腐朽,我不能腐朽,我愿意燃烧起来! --奥斯特洛夫斯基 引导语 Map 在面试中,占据了很大一部 ...

  8. 面试官系统精讲Java源码及大厂真题 - 07 List 源码会问哪些面试题

    07 List 源码会问哪些面试题 勤学如春起之苗,不见其增,日有所长. --陶潜 引导语 List 作为工作中最常见的集合类型,在面试过程中,也是经常会被问到各种各样的面试题,一般来说,只要你看过源 ...

  9. 面试官系统精讲Java源码及大厂真题 - 05 ArrayList 源码解析和设计思路

    05 ArrayList 源码解析和设计思路 耐心和恒心总会得到报酬的. --爱因斯坦 引导语 ArrayList 我们几乎每天都会使用到,但真正面试的时候,发现还是有不少人对源码细节说不清楚,给面试 ...

最新文章

  1. Hardfault 2
  2. 漫画:优秀的程序员具备哪些属性?
  3. Python环境的安装
  4. matlab c++ 画图【转载】
  5. Linux|UNIX下LAMP环境的搭建及常见问题[连载3]
  6. leetcode 416. Partition Equal Subset Sum | 416. 分割等和子集(Java)
  7. TensorFlow实现LeNet5模型
  8. [转载]Programming MS Office 2000 Web Components第二章第三节
  9. 【Unity开源项目精选】UniRx:Unity中的响应式编程
  10. 《Python语言程序设计》——2.11 类型转换和四舍五入
  11. python能自学成功吗-想自学Python,如何才能坚持下来?
  12. groovy 慢_grails – Groovy中的sql.rows()运行缓慢
  13. Remote-SSH 安装教程
  14. 艾司博讯:拼多多店铺要不要一直上新?上新有用吗?
  15. 用ReadyBoost加速Windows 7
  16. win7系统激活工具怎么用?
  17. iOS微信分享服务器设置,ios微信分享设置title怎么弄?
  18. RabbitMQ-Plugin configuration unchanged
  19. (十)苏世民:我的经验和教训:掌控(1~6)
  20. 计算机网络面试《葵花宝典》

热门文章

  1. Linux Shell脚本入门教程系列之(九)Shell判断 if else 用法
  2. 减少HTTP请求之合并图片详解(大型网站优化技术)
  3. 使用 jQuery Mobile 与 HTML5 开发 Web App (六) —— jQuery Mobile 内容格式
  4. iPhone开发之Rotation
  5. 洛谷OJ上的A+B花(zhuang)式(bi)解法
  6. python——asyncio模块实现协程、异步编程(三)
  7. Word文档显示标题3
  8. numpy常用函数(更新中)
  9. LeetCode 523. Continuous Subarray Sum
  10. 华为机试——明明的随机数