Java核心技术面试精讲
杨晓峰
前Oracle首席工程师
立即订阅
43250 人已学习
课程目录
已完结 43 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 以面试题为切入点,有效提升你的Java内功
免费
模块一 Java基础 (14讲)
第1讲 | 谈谈你对Java平台的理解?
第2讲 | Exception和Error有什么区别?
第3讲 | 谈谈final、finally、 finalize有什么不同?
第4讲 | 强引用、软引用、弱引用、幻象引用有什么区别?
第5讲 | String、StringBuffer、StringBuilder有什么区别?
第6讲 | 动态代理是基于什么原理?
第7讲 | int和Integer有什么区别?
第8讲 | 对比Vector、ArrayList、LinkedList有何区别?
第9讲 | 对比Hashtable、HashMap、TreeMap有什么不同?
第10讲 | 如何保证集合是线程安全的? ConcurrentHashMap如何实现高效地线程安全?
第11讲 | Java提供了哪些IO方式? NIO如何实现多路复用?
第12讲 | Java有几种文件拷贝方式?哪一种最高效?
第13讲 | 谈谈接口和抽象类有什么区别?
第14讲 | 谈谈你知道的设计模式?
模块二 Java进阶 (16讲)
第15讲 | synchronized和ReentrantLock有什么区别呢?
第16讲 | synchronized底层如何实现?什么是锁的升级、降级?
第17讲 | 一个线程两次调用start()方法会出现什么情况?
第18讲 | 什么情况下Java程序会产生死锁?如何定位、修复?
第19讲 | Java并发包提供了哪些并发工具类?
第20讲 | 并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?
第21讲 | Java并发类库提供的线程池有哪几种? 分别有什么特点?
第22讲 | AtomicInteger底层实现原理是什么?如何在自己的产品代码中应用CAS操作?
第23讲 | 请介绍类加载过程,什么是双亲委派模型?
第24讲 | 有哪些方法可以在运行时动态生成一个Java类?
第25讲 | 谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError?
第26讲 | 如何监控和诊断JVM堆内和堆外内存使用?
第27讲 | Java常见的垃圾收集器有哪些?
第28讲 | 谈谈你的GC调优思路?
第29讲 | Java内存模型中的happen-before是什么?
第30讲 | Java程序运行在Docker等容器环境有哪些新问题?
模块三 Java安全基础 (2讲)
第31讲 | 你了解Java应用开发中的注入攻击吗?
第32讲 | 如何写出安全的Java代码?
模块四 Java性能基础 (3讲)
第33讲 | 后台服务出现明显“变慢”,谈谈你的诊断思路?
第34讲 | 有人说“Lambda能让Java程序慢30倍”,你怎么看?
第35讲 | JVM优化Java代码时都做了什么?
模块5 Java应用开发扩展 (4讲)
第36讲 | 谈谈MySQL支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?
第37讲 | 谈谈Spring Bean的生命周期和作用域?
第38讲 | 对比Java标准NIO类库,你知道Netty是如何实现更高性能的吗?
第39讲 | 谈谈常用的分布式ID的设计方案?Snowflake是否受冬令时切换影响?
周末福利 (2讲)
周末福利 | 谈谈我对Java学习和面试的看法
周末福利 | 一份Java工程师必读书单
结束语 (1讲)
结束语 | 技术没有终点
Java核心技术面试精讲
登录|注册

周末福利 | 谈谈我对Java学习和面试的看法

杨晓峰 2018-06-09
你好,我是杨晓峰。今天是周末,我们稍微放松一下来聊聊“Java 核心技术”之外的内容,正好也借这个机会,兑现一下送出学习奖励礼券的承诺。我在每一讲后面都留下了一道思考题,希望你通过学习,结合自身工作实际,能够认真思考一下这些问题,一方面起到检验学习效果的作用,另一方面可以查漏补缺,思考一下这些平时容易被忽略的面试考察点。我并没有给出这些思考题的答案,希望你通过专栏学习或者查阅其他资料进行独立思考,将自己思考的答案写在留言区与我和其他同学一起交流,这也是提升自己重要的方法之一。
截止到今天,专栏已经更新了 15 讲,走完了基础模块正式进入进阶模块。现在也正是一个很好的时机停下来回顾一下基础部分的知识,为后面进阶的并发内容打好基础。在这里,我也分享一下我对 Java 学习和面试的看法,希望对你有所帮助。
首先,有同学反馈说专栏有的内容看不懂。我在准备专栏文章的时候对一些同学的基础把握不太准确,后面的文章我进行了调整,将重点技术概念进行讲解,并为其他术语添加链接。
再来说说这种情况,有人总觉得 Java 基础知识都已经被讲烂了,还有什么可学的?
对于基础知识的掌握,有的同学经常是“知其然而不知其所以然”, 看到几个名词听说过就以为自己掌握了,其实不然。至少,我认为应该能够做到将自己“掌握”的东西,准确地表达出来
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Java核心技术面试精讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(19)

  • whhbbq
    老师的招人标准,学习了,很实用,看了也很有感触。你能填上别人填不上的坑,就成功了。工作中大多数时候的任务目标并不清晰,特别当你是一个团队的小leader时,没人告诉你后面的方向,要做成什么样,很考验能力。
    2018-06-09
    17
  • 公号-代码荣耀
    阅读源码的时候,

    首先,可通过各种公开的渠道(google、公开文档等)了解代码的总体框架、模块组成及其模块间的关系;

    然后,结合源码的注释进行解读,对不是很明白的部分打断点,调试,甚至可按照自己的想法进行修改后再调试;

    最后,对于重点核心模块进行详细调试,可以把核心类的功能、调用流程等写下来,好记性总是敌不过烂笔头的。

    除此之外,个人觉得最最重要的是:看源码的时候要有"静气"。
    2018-06-09
    12
  • 夏洛克的救赎
    看评论都能涨知识,希望评论提供交互功能
    2018-06-09
    9
  • vash_ace
    感谢杨老师的鼓励,在受宠若惊之余,我觉得这篇“课外阅读”的参考价值不输于任何一篇技术分享。因为文中提到的这些努力或坚持的方向,确实是对个人职场生涯有着巨大的影响和帮助(亲测有效)。
    其实道理大家都懂,但很多时候想当架构相做技术大牛的我们就是会以各种理由(项目忙,赶进度,不想加班...)不去对一个bug或一次线上故障做刨根问底的努力,又或者是放弃原本是对的坚持(比如,技术笔记,技术阅读与分享...);
    那这个时候的你所需要的鸡汤或兴奋剂不再是XXX的成功,而是想象一下自己的个人价值。往大了说,你对技术圈做了什么贡献?影响了多少人?影响越大成就感越满足。成就感是个好东西,你越享受就越会上瘾;往俗了说,就是看看自己的收入在行业内处于什么样的水平?工资多少不一定能完全体现一个人的真实水平,但至少绝大部分公司和猎头都能根据你上一家公司的收入来定位你属于哪一个level。
    2018-06-11
    5
  • 雷霹雳的爸爸
    意外,感谢,更重要的是也复盘下这段学习过程中发现的自己的各种不足,再接再厉!
    2018-06-09
    3
  • WWR
    看源码的时候要“静气”,真的说到点儿了……
    2018-09-13
    2
  • godtrue
    看源码之前,建议补一下数据结构和算法,老师的这个专栏给我莫大的鼓励,感谢,坚持。
    2018-12-15
    1
  • 肖一林
    谢谢老师的奖励,每一篇都在看,最近也在组织以前的笔记,放在自己的技术公众号。希望清理技术债务,达到系统学习的目的。结合以前所学,加上老师文章提到的一些底层原理,用自己的方式表达一遍

    作者回复: 加油,互相提高

    2018-06-09
    1
  • iLeGeND
    我们应该面向接口编程,面向规范编程,在单纯的开发中,使jdk或者框架,应该以其api文档为参考,如果有问题就看源码,那岂不是面子实现编程了,不同的版本,其实现不见得一样,我们的代码用不能一直改吧
    2018-06-09
    1
  • Paul Shan
    老师招人标准总结起来是能思考,能填坑,能独当一面。
    2019-11-08
  • Paul Shan
    输入,消化,输出,是学习的不二之选,长期而言我们只是在回答输入哪些内容,如何输入,如何消化,如何输出。阅读书籍,看别人代码,听专栏等是输入。分析思考是消化。总结成文档,用自己的语言表达出来,与人讨论,教别人等是输出,输出可以小到写下思考的一个结果,大到写一本书。这里输出是关键,围绕着输出,输入也更有目的性,输出让消化的好坏也得到检验,而且可以不断迭代分析思考的结果,满足感得以产生,能力得到提升!
    2019-11-08
  • 业余爱好者
    知识不等于能力。重要的是能力而非知识。一些必要的理论知识是解决问题所必须的,但光是学一大堆理论不去应用实践,也是鸡肋。
    2019-09-21
  • 疯狂咸鱼
    老师,能不能讲讲设计模式、系统设计这些,面试问这些没项目经验很头大
    2019-07-29
  • Hidden
    我在阅读源码的时候,只能勉强理解一半,剩下那一半 再怎么也理解不了,很是奇怪,
    2018-06-13
  • Zoe.Li
    谢谢杨老师的分享
    2018-06-12
  • Miaozhe
    感谢杨老师分享,这次学习收获很大,特别是认真阅读了HashMap的源码,桶的设计和Hash的位运算正的设计很妙。以前没有看懂,这次参考老师的"死磕",终于看懂了。
    2018-06-11
  • Len
    正文中(非留言区),倒数第二个推荐的读者留言中说:

    “所以一般建议在使用 Netty 时开启 XX:+DisableExplicitGC”。

    注意,参数前使用的是 + 号,我觉得不对吧!
    这就表明 Ststem.gc 变成空调用了,这对于 Netty,如果这么做会导致堆外内存不及时回收,反而更容易 OOM。

    是这样吗?

    作者回复: 我认为看场景和侧重角度,如果发现cleaner自动回收不符合需求,用system.gc至少可以避免oom;如果应用没这问题,调用它也可能导致应用反应不稳定等问题。
    所以没有一劳永逸的办法或者最佳实践,只能是个思路参考,看实际需求

    2018-06-10
  • zt
    话说今天不更新了吗,大神能不能加快下更新的速度,学习完去面试,战线时间太长有点熬人

    作者回复: 有规定的节奏

    2018-06-09
  • iLeGeND
    我们应该面向接口编程,面向规范编程,在单纯的开发中,使jdk或者框架,应该以其api文档为参考,如果有问题就看源码,那岂不是面子实现编程了,不同的版本,其实现不见得一样,我们的代码用不能一直改吧
    2018-06-09
收起评论
19
返回
顶部