摘要:
在上一讲中,我分析了 Java 并发包中的部分内容,今天我来介绍一下线程安全队列。Java 标准库提供了非常多的线程安全队列,很容易混淆。 今天我要问你的问题是,并发包中的 ConcurrentLinkedQueue 和 LinkedBlockingQueue 有什么区别? 典型回答 有时候我们把并 阅读全文
posted @ 2018-06-21 14:40
xu_shuyi
阅读(197)
评论(0)
推荐(0)
摘要:
通过前面的学习,我们一起回顾了线程、锁等各种并发编程的基本元素,也逐步涉及了 Java 并发包中的部分内容,相信经过前面的热身,我们能够更快地理解 Java 并发包。 今天我要问你的问题是,Java 并发包提供了哪些并发工具类? 典型回答 我们通常所说的并发包也就是 java.util.concur 阅读全文
posted @ 2018-06-21 14:39
xu_shuyi
阅读(206)
评论(0)
推荐(0)
摘要:
今天,我会介绍一些日常开发中类似线程死锁等问题的排查经验,并选择一两个我自己修复过或者诊断过的核心类库死锁问题作为例子,希望不仅能在面试时,包括在日常工作中也能对你有所帮助。 今天我要问你的问题是,什么情况下 Java 程序会产生死锁?如何定位、修复? 典型回答 死锁是一种特定的程序状态,在实体之间 阅读全文
posted @ 2018-06-21 14:38
xu_shuyi
阅读(380)
评论(0)
推荐(0)
摘要:
今天我们来深入聊聊线程,相信大家对于线程这个概念都不陌生,它是 Java 并发的基础元素,理解、操纵、诊断线程是 Java 工程师的必修课,但是你真的掌握线程了吗? 今天我要问你的问题是,一个线程两次调用 start() 方法会出现什么情况?谈谈线程的生命周期和状态转移。 典型回答 Java 的线程 阅读全文
posted @ 2018-06-21 14:36
xu_shuyi
阅读(486)
评论(0)
推荐(0)
摘要:
你好,我是杨晓峰。今天是周末,我们稍微放松一下来聊聊“Java 核心技术”之外的内容,正好也借这个机会,兑现一下送出学习奖励礼券的承诺。我在每一讲后面都留下了一道思考题,希望你通过学习,结合自身工作实际,能够认真思考一下这些问题,一方面起到检验学习效果的作用,另一方面可以查漏补缺,思考一下这些平时容 阅读全文
posted @ 2018-06-21 14:34
xu_shuyi
阅读(175)
评论(0)
推荐(0)
摘要:
从今天开始,我们将进入 Java 并发学习阶段。软件并发已经成为现代软件开发的基础能力,而 Java 精心设计的高效并发机制,正是构建大规模应用的基础之一,所以考察并发基本功也成为各个公司面试 Java 工程师的必选项。 今天我要问你的问题是, synchronized 和 ReentrantLoc 阅读全文
posted @ 2018-06-21 14:32
xu_shuyi
阅读(126)
评论(0)
推荐(0)
摘要:
设计模式是人们为软件开发中相同表征的问题,抽象出的可重复利用的解决方案。在某种程度上,设计模式已经代表了一些特定情况的最佳实践,同时也起到了软件工程师之间沟通的“行话”的作用。理解和掌握典型的设计模式,有利于我们提高沟通、设计的效率和质量。 今天我要问你的问题是,谈谈你知道的设计模式?请手动实现单例 阅读全文
posted @ 2018-06-21 14:30
xu_shuyi
阅读(297)
评论(0)
推荐(0)
摘要:
Java 是非常典型的面向对象语言,曾经有一段时间,程序员整天把面向对象、设计模式挂在嘴边。虽然如今大家对这方面已经不再那么狂热,但是不可否认,掌握面向对象设计原则和技巧,是保证高质量代码的基础之一。 面向对象提供的基本机制,对于提高开发、沟通等各方面效率至关重要。考察面向对象也是面试中的常见一环, 阅读全文
posted @ 2018-06-21 14:28
xu_shuyi
阅读(112)
评论(0)
推荐(0)
摘要:
我在专栏上一讲提到,NIO 不止是多路复用,NIO 2 也不只是异步 IO,今天我们来看看 Java IO 体系中,其他不可忽略的部分。 今天我要问你的问题是,Java 有几种文件拷贝方式?哪一种最高效? 典型回答 Java 有多种比较典型的文件拷贝实现方式,比如: 利用 java.io 类库,直接 阅读全文
posted @ 2018-06-21 14:26
xu_shuyi
阅读(601)
评论(0)
推荐(0)
摘要:
IO 一直是软件开发中的核心部分之一,伴随着海量数据增长和分布式系统的发展,IO 扩展能力愈发重要。幸运的是,Java 平台 IO 机制经过不断完善,虽然在某些方面仍有不足,但已经在实践中证明了其构建高扩展性应用的能力。 今天我要问你的问题是,Java 提供了哪些 IO 方式? NIO 如何实现多路 阅读全文
posted @ 2018-06-21 14:25
xu_shuyi
阅读(308)
评论(0)
推荐(0)
摘要:
我在之前两讲介绍了 Java 集合框架的典型容器类,它们绝大部分都不是线程安全的,仅有的线程安全实现,比如 Vector、Stack,在性能方面也远不尽如人意。幸好 Java 语言提供了并发包(java.util.concurrent),为高度并发需求提供了更加全面的工具支持。 今天我要问你的问题是 阅读全文
posted @ 2018-06-21 14:22
xu_shuyi
阅读(426)
评论(0)
推荐(0)
摘要:
Map 是广义 Java 集合框架中的另外一部分,HashMap 作为框架中使用频率最高的类型之一,它本身以及相关类型自然也是面试考察的热点。 今天我要问你的问题是,对比 Hashtable、HashMap、TreeMap 有什么不同?谈谈你对 HashMap 的掌握。 典型回答 Hashtable 阅读全文
posted @ 2018-06-21 14:20
xu_shuyi
阅读(225)
评论(0)
推荐(0)
摘要:
我们在日常的工作中,能够高效地管理和操作数据是非常重要的。由于每个编程语言支持的数据结构不尽相同,比如我最早学习的 C 语言,需要自己实现很多基础数据结构,管理和操作会比较麻烦。相比之下,Java 则要方便的多,针对通用场景的需求,Java 提供了强大的集合框架,大大提高了开发者的生产力。 今天我要 阅读全文
posted @ 2018-06-21 14:18
xu_shuyi
阅读(133)
评论(0)
推荐(0)
摘要:
Java 虽然号称是面向对象的语言,但是原始数据类型仍然是重要的组成元素,所以在面试中,经常考察原始数据类型和包装类等 Java 语言特性。 今天我要问你的问题是,int 和 Integer 有什么区别?谈谈 Integer 的值缓存范围。 典型回答 int 是我们常说的整形数字,是 Java 的 阅读全文
posted @ 2018-06-21 14:16
xu_shuyi
阅读(230)
评论(0)
推荐(0)
摘要:
编程语言通常有各种不同的分类角度,动态类型和静态类型就是其中一种分类角度,简单区分就是语言类型信息是在运行时检查,还是编译期检查。 与其近似的还有一个对比,就是所谓强类型和弱类型,就是不同类型变量赋值时,是否需要显式地(强制)进行类型转换。 那么,如何分类 Java 语言呢?通常认为,Java 是静 阅读全文
posted @ 2018-06-21 14:14
xu_shuyi
阅读(211)
评论(0)
推荐(0)
摘要:
今天我会聊聊日常使用的字符串,别看它似乎很简单,但其实字符串几乎在所有编程语言里都是个特殊的存在,因为不管是数量还是体积,字符串都是大多数应用中的重要组成。 今天我要问你的问题是,理解 Java 的字符串,String、StringBuffer、StringBuilder 有什么区别? 典型回答 S 阅读全文
posted @ 2018-06-21 14:10
xu_shuyi
阅读(213)
评论(0)
推荐(0)
摘要:
在 Java 语言中,除了原始数据类型的变量,其他所有都是所谓的引用类型,指向各种不同的对象,理解引用对于掌握 Java 对象生命周期和 JVM 内部相关机制非常有帮助。 今天我要问你的问题是,强引用、软引用、弱引用、幻象引用有什么区别?具体使用场景是什么? 典型回答 不同的引用类型,主要体现的是对 阅读全文
posted @ 2018-06-21 14:08
xu_shuyi
阅读(263)
评论(0)
推荐(0)
摘要:
Java 语言有很多看起来很相似,但是用途却完全不同的语言要素,这些内容往往容易成为面试官考察你知识掌握程度的切入点。 今天,我要问你的是一个经典的 Java 基础题目,谈谈 final、finally、 finalize 有什么不同? 典型回答 final 可以用来修饰类、方法、变量,分别有不同的 阅读全文
posted @ 2018-06-21 14:05
xu_shuyi
阅读(137)
评论(0)
推荐(0)
摘要:
世界上存在永远不会出错的程序吗?也许这只会出现在程序员的梦中。随着编程语言和软件的诞生,异常情况就如影随形地纠缠着我们,只有正确处理好意外情况,才能保证程序的可靠性。 Java 语言在设计之初就提供了相对完善的异常处理机制,这也是 Java 得以大行其道的原因之一,因为这种机制大大降低了编写和维护可 阅读全文
posted @ 2018-06-21 14:02
xu_shuyi
阅读(251)
评论(0)
推荐(0)
摘要:
典型回答 Java 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运行”(Write once, run anywhere),能够非常容易地获得跨平台能力;另外就是垃圾收集(GC, Garbage Collection),Java 通过垃圾收集器(Garbage Col 阅读全文
posted @ 2018-06-21 11:09
xu_shuyi
阅读(223)
评论(0)
推荐(0)

浙公网安备 33010602011771号