Java核心技术面试精讲
文章平均质量分 93
多角度解析技术面试,助力offer。
Programmer Liu
每时每刻都在向世界表白!
展开
-
【Java进阶】Java程序运行在Docker等容器环境有哪些新问题?
从 Docker 环境中 Java 可能出现的问题开始,分析了为什么容器环境对应用并不透明,以及这种偏差干扰了 JVM 的相关机制。最后,我从实践出发,介绍了主要问题的解决思路,希望对你在实际开发时有所帮助。...原创 2022-07-19 04:03:57 · 706 阅读 · 0 评论 -
【Java进阶】Java内存模型中的happen-before是什么?
从 happen-before 关系开始,帮你理解了什么是 Java 内存模型。为了更方便理解,我作了简化,从不同工程师的角色划分等角度,阐述了问题的由来,以及 JMM 是如何通过类似内存屏障等技术实现的。最后,我以 volatile 为例,分析了可见性在多线程场景中的典型用例。...原创 2022-07-19 03:51:54 · 745 阅读 · 1 评论 -
【Java进阶】谈谈你的GC调优思路?
梳理了基本的 GC 调优思路,并对 G1 内部结构以及最新的行为变化进行了详解。总的来说,G1 的调优相对简单、直观,因为可以直接设定暂停时间等目标,并且其内部引入了各种智能的自适应机制,希望这一切的努力,能够让你在日常应用开发时更加高效。...原创 2022-07-19 03:24:55 · 593 阅读 · 0 评论 -
【Java进阶】Java常见的垃圾收集器有哪些?
从整体上梳理了目前的主流 GC 实现,包括基本原理和算法,并结合我前面介绍过的内存结构,对简要的垃圾收集过程进行了介绍,希望能够对你的相关实践有所帮助。原创 2022-07-19 02:32:22 · 501 阅读 · 0 评论 -
【Java进阶】如何监控和诊断JVM堆内和堆外内存使用?
结合 JVM 参数和特性,系统地分析了 JVM 堆内和堆外内存结构,相信你一定对JVM 内存结构有了比较深入的了解,在定制 Java 运行时或者处理 OOM 等问题的时候,思路也会更加清晰。原创 2022-07-19 01:51:56 · 2299 阅读 · 0 评论 -
【Java高级】谈谈JVM内存区域的划分,哪些区域可能发生 OutOfMemoryError?
JVM 内存部分的第一讲,算是我们先进行了热身准备,我介绍了主要的内存区域,以及在不同版本 Hotspot JVM 内部的变化,并且分析了各区域是否可能产生OutOfMemoryError,以及 OOME 发生的典型情况。原创 2022-07-19 00:33:53 · 3436 阅读 · 1 评论 -
【Java进阶】有哪些方法可以在运行时动态生成一个Java类?
探讨了更加深入的类加载和字节码操作方面技术。为了理解底层的原理,我选取的例子是比较偏底层的、能力全面的类库,如果实际项目中需要进行基础的字节码操作,可以考虑使用更加高层次视角的类库,例如Byte Buddy等。...原创 2022-07-19 00:26:02 · 1216 阅读 · 0 评论 -
【Java进阶】请介绍类加载过程,什么是双亲委派模型?
梳理了一下类加载的过程,并针对 Java 新版中类加载机制发生的变化,进行了相对全面的总结,最后介绍了一个改善类加载速度的特性,希望对你有所帮助。原创 2022-07-18 22:33:23 · 263 阅读 · 0 评论 -
【Java进阶】AtomicInteger底层实现原理是什么?如何在自己的产品代码中应用CAS操作?
介绍了 Atomic 数据类型的底层技术 CAS,并通过实例演示了如何在产品代码中利用 CAS,最后介绍了并发包的基础技术 AQS,希望对你有所帮助。原创 2022-07-18 01:17:59 · 410 阅读 · 0 评论 -
【Java进阶】Java并发类库提供的线程池有哪几种? 分别有什么特点?
从 Java 创建的几种线程池开始,对 Executor 框架的主要组成、线程池结构与生命周期等方面进行了讲解和分析,希望对你有所帮助。原创 2022-07-17 23:01:15 · 436 阅读 · 0 评论 -
【Java进阶】并发包中的ConcurrentLinkedQueue和 LinkedBlockingQueue有什么区别?
分析了 Java 中让人眼花缭乱的各种线程安全队列,试图从几个角度,让每个队列的特点更加明确,进而希望减少你在日常工作中使用时的困扰。原创 2022-07-17 16:31:59 · 186 阅读 · 0 评论 -
【Java进阶】Java并发包提供了哪些并发工具类?
对 Java 并发包进行了总结,并且结合实例分析了各种同步结构和部分线程安全容器,希望对你有所帮助。原创 2022-07-17 16:17:14 · 662 阅读 · 0 评论 -
【Java进阶】什么情况下Java程序会产生死锁?如何定位、修复?
从样例程序出发,介绍了死锁产生原因,并帮你熟悉了排查死锁基本工具的使用和典型思路,最后结合实例介绍了实际场景中的死锁分析方法与预防措施,希望对你有所帮助。原创 2022-07-16 19:18:22 · 819 阅读 · 0 评论 -
【Java进阶】synchronized底层如何实现?什么是锁的升级、降级?
全面分析了 synchronized 相关实现和内部运行机制,简单介绍了并发包中提供的其他显式锁,并结合样例代码介绍了其使用方法,希望对你有所帮助。原创 2022-07-15 02:59:26 · 792 阅读 · 0 评论 -
【Java进阶】synchronized和ReentrantLock有什么区别呢?
介绍了什么是线程安全,对比和分析了 synchronized 和 ReentrantLock,并针对条件变量等方面结合案例代码进行了介绍。原创 2022-07-15 02:31:50 · 1841 阅读 · 0 评论 -
【Java基础】谈谈你知道的设计模式?
从 Java 核心类库、开源框架等不同角度分析了其采用的模式,并结合单例的不同实现,分析了如何实现符合线程安全等需求的单例,希望可以对你的工程实践有所帮助。原创 2022-07-14 22:34:59 · 195 阅读 · 0 评论 -
【Java基础】谈谈接口和抽象类有什么区别?
对 Java 面向对象技术进行了梳理,对比了抽象类和接口,分析了 Java 语言在接口层面的演进和相应程序设计实现,最后回顾并实践了面向对象设计的基本原则,希望对你有所帮助。原创 2022-07-14 22:15:17 · 216 阅读 · 0 评论 -
【Java基础】Java有几种文件拷贝方式?哪一种最高效?
分析了 Java IO/NIO 底层文件操作数据的机制,以及如何实现零拷贝的高性能操作,梳理了 Buffer 的使用和类型,并针对 Direct Buffer 的生命周期管理和诊断进行了较详细的分析。原创 2022-07-14 20:58:44 · 906 阅读 · 0 评论 -
【Java基础】Java提供了哪些IO方式?NIO如何实现多路复用?
初步对 Java 提供的 IO 机制进行了介绍,概要地分析了传统同步 IO 和 NIO 的主要组成,并根据典型场景,通过不同的 IO 模式进行了实现与拆解。原创 2022-07-14 17:52:25 · 391 阅读 · 0 评论 -
【Java基础】如何保证集合是线程安全的? ConcurrentHashMap如何实现高效地线程安全?
从线程安全问题开始,概念性的总结了基本容器工具,分析了早期同步容器的问题,进而分析了 Java 7 和 Java 8 中 ConcurrentHashMap 是如何设计实现的,希望ConcurrentHashMap 的并发技巧对你在日常开发可以有所帮助。...原创 2022-07-14 16:59:00 · 213 阅读 · 0 评论 -
【Java基础】对比Vector、ArrayList、LinkedList有何区别?
从 Verctor、ArrayList、LinkedList 开始,逐步分析其设计实现区别、适合的应用场景等,并进一步对集合框架进行了简单的归纳,介绍了集合框架从基础算法到 API 设计实现的各种改进,希望能对你的日常开发和 API 设计能够有帮助。...原创 2022-07-14 02:40:29 · 139 阅读 · 0 评论 -
【Java基础】int和Integer有什么区别?
我梳理了原始数据类型及其包装类,从源码级别分析了缓存机制等设计和实现细节,并且针对构建极致性能的场景,分析了一些可以借鉴的实践。原创 2022-07-14 01:45:40 · 176 阅读 · 0 评论 -
【Java基础】动态代理是基于什么原理?
反射在 Java 语言演进中正在发生的变化,并且进一步探讨了动态代理机制和相关的切面编程,分析了其解决的问题,并探讨了生产实践中的选择考量。原创 2022-07-14 01:08:49 · 121 阅读 · 0 评论 -
【Java基础】String、StringBuffer、StringBuilder有什么区别?
从 String、StringBuffer 和 StringBuilder 的主要设计和实现特点开始,分析了字符串缓存的 intern 机制、非代码侵入性的虚拟机层面排重、Java 9 中紧凑字符的改进,并且初步接触了 JVM 的底层优化机制 intrinsic。...原创 2022-07-13 22:28:48 · 108 阅读 · 0 评论 -
【Java基础】强引用、软引用、弱引用、幻象引用有什么区别?
我总结了 Java 语言提供的几种引用类型、相应可达状态以及对于 JVM 工作的意义,并分析了引用队列使用的一些实际情况,最后介绍了在新的编程模式下,如何利用 API去保障对象不被意外回收,希望对你有所帮助。...原创 2022-07-13 16:57:09 · 100 阅读 · 0 评论 -
【Java基础】 谈谈final、finally、 finalize有什么不同?
这是一个非常经典的 Java 基础问题,从语法和使用实践角度出发,还可以考察你对性Java 语言有很多看起来很相似,但是用途却完全不同的语言要素,这些内容往往容易成为面试官考察你知识掌握程度的切入点。......原创 2022-06-19 20:35:53 · 190 阅读 · 0 评论 -
【Java基础】Exception和Error有什么区别?
分析 Exception 和 Error 的区别,是从概念角度考察了 Java 处理机制。总的来说,还处于理解的层面,面试者只要阐述清楚就好了。原创 2022-06-19 20:24:17 · 104 阅读 · 0 评论 -
【Java基础】谈谈你对Java平台的理解?
对于这类笼统的问题,你需要尽量表现出自己的思维深入并系统化,Java 知识理解得也比较全面,一定要避免让面试官觉得你是个“知其然不知其所以然”的人。毕竟明白基本组成和机制,是日常工作中进行问题诊断或者性能调优等很多事情的基础,相信没有招聘方会不喜欢“热爱学习和思考”的面试者。......原创 2022-06-19 02:29:26 · 140 阅读 · 0 评论 -
【面试的艺术】以面试题为切入点,有效提升你的Java内功
我们不需要那些“差不多”或“还行”的代码,而是需要达到一定水准的高质量设计与实现原创 2022-06-16 23:38:52 · 112 阅读 · 0 评论