宝贝介绍
你将获得
- Java 核心技术原理
- Java 面试必考知识点
- 完整的 Java 知识体系
讲师介绍
杨晓峰,前 Oracle 北京 Java 平台部门,首席工程师,OpenJDK Committer,从 JDK 8 开始参与了 JDK 的开发和测试工作,曾领导 Java 核心类库北京团队,主要负责前沿版本的核心类库新特性相关任务。专注于 Java 以及其他编程语言的新特性,尤其是在云计算等前沿领域的应用和演进。
课程介绍
Java 的诞生已经超过了 20 年。一直以来,Java 以其语法简单,开发者可以快速上手,适应众多领域,具有跨平台能力等特性,吸引了无数程序员学习和使用。基于 Java 优秀的特性和庞大的使用基础,各大公司对 Java 工程师的需求也是源源不断。
但作为面试者,想进入 BAT 并成长为一名高级 Java 工程师却没那么容易。虽然面试者具备了一定的工作年限要求,也长期使用 Java 语言进行开发,但面试时,面对刨根问底的提问,经常感觉 get 不到面试官的点,自己回答的也是马马虎虎,甚至无法完整描述自己开发过的系统或者使用过的技术,因此也就很难得到满意的面试结果。
那如何才能在 Java 面试中做到游刃有余呢?本专栏就从大厂面试考察的知识点和能力出发,精选出典型的 Java 面试题,每期针对 1 道题目,不仅给出面试的典型回答和考点分析,还会剖析知识点,将其讲清讲透,让你彻底领悟题目背后所考察的能力,帮你梳理复习 Java 知识体系。
专栏分为 5 大模块。
Java 基础
将围绕Java语言基本特性和机制,由点带面,帮你构建牢固的 Java 技术功底。
Java 进阶
主要将围绕并发编程、Java 虚拟机等领域展开,助你攻坚大厂 Java 面试的核心阵地。
Java 应用开发扩展
将聚焦数据库编程、主流开源框架、分布式开发等,让你掌握 Java 开发的十八般兵器。
Java 安全基础
帮助你理解常见的应用安全问题和处理方法,掌握如何写出符合大厂规范的安全代码。
Java 性能基础
帮助你掌握相关工具、方法论与基础实践。
课程目录
开篇词 (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 工程师必读书单
结束语 (2 讲)
结束语 | 技术没有终点 结课测试 | Java 核心技术的这些知识,你真的掌握了吗?
注册向导
当你收到授权后,可以通过以下步骤兑换课程:
网页版兑换过程请按照以下步骤操作:
一、通过下方链接地址访问官方兑换网站:
https://time.geekbang.org/service/exchange
二、进入官网后,点击网页右上角的「登陆」按钮:
-
三、在转跳的网页中,任选一种登陆方式登陆账号,
-
四、在转跳的网页中,输入「兑换码 > 验证码」点击「立即验证」即可解锁全部课程。
-
手机版兑换过程请按照以下步骤操作:
一、打开「极客时间」官方 App,依次点击菜单栏「我的 > 点击登陆 > 登陆账号」按钮:
-
二、登陆后返回首页,依次点击「我的 > 兑换中心 > 立即兑换」按钮:
-
三、在弹出的窗口中,输入「兑换码」点击「立即验证」即可解锁全部课程。
-
常见问题
如果你在使用过程中遇到问题,可访问以下链接,前往我们的官方网站查看常见问题的解决方案。