我最近购买了Anghel Leonard的Java Coding Problems,因为本书中涉及的主题使我成为一名Java培训师很感兴趣。 在这里看到目录后,我决定购买它。 由于Java的发展非常迅速,因此很难使自己保持最新状态,并且很容易错过Java新功能或没有时间详细研究它们。
我买了很重的平装书。 这本书有800多页。 但是,显然,最重要的是内容。 快速提示:您可以依靠包含1,000多个示例的360多个应用程序。
书籍结构
本书分为13章,涵盖260多个Java 8到Java 13的问题。主要是,作者以精心设计的问题为借口,涵盖了Java 8-12的所有功能。 从诸如Java流或Optional之类的流行功能到诸如Java 11基于嵌套的访问控制(嵌套)之类的较不流行的功能。
章节概述
- 第1章:字符串,数字和数学
- 第2章:对象,不变性和开关表达式
- 第3章:使用日期和时间
- 第4章:类型推断
- 第5章:数组,集合和数据结构
- 第6章:Java I / O路径,文件,缓冲区,扫描和格式化
- 第7章:Java反射类,接口,构造函数,方法和字段
- 第8章:函数样式编程-基本原理和设计模式
- 第9章:函数样式编程-深入研究
- 第10章:并发–线程池,可调用对象和同步器
- 第11章:并发–深入探讨
- 第十二章:可选
- 第13章:HTTP客户端和WebSocket API
第1章:字符串,数字和数学
本章包括39个涉及字符串,数字和数学运算的问题。 本章从字符串的一系列经典问题开始,例如计算重复项,反转字符串和删除空格。 本章继续讨论数字和数学运算专用的问题,例如,将两个大数字相加,运算溢出,比较两个无符号数,计算除法和模数的下限等等。 每个问题都通过几种解决方案来解决,包括Java 8功能
样式。 此外,本章还介绍了期货在JDK 9、10、11和12中添加的问题。
第2章:对象,不变性和开关表达式
其中包括18个涉及对象,不变性和切换的问题
表达式。 本章从有关处理空引用的几个问题开始。 它继续存在有关检查索引,equals()和hashCode()以及不可变性的问题(例如,编写不可变类以及从不可变类传递/返回可变对象)。 本章的最后一部分介绍克隆对象和JDK 12开关表达式。
第3章:使用日期和时间
本章包括20个涉及日期和时间的问题。 这些问题旨在通过日期,日历,LocalDate,LocalTime,LocalDateTime,ZoneDateTime,OffsetDateTime,OffsetTime,Instant,等等。 到本章末,您将毫无疑问地确定日期和时间以符合应用程序的需求。
第4章:类型推断
本章包括21个涉及JEP 286,Java局部变量类型推断(LVTI)或var类型的问题。 这些问题经过精心设计,以揭示使用var的最佳实践和常见错误。 在本章的最后,您将拥有有关将var投入生产的所有必要知识。
第5章:数组,集合和数据结构
本章包含30个问题,涉及数组,集合和几种数据结构。 目的是为各种应用程序中遇到的一类问题提供解决方案,例如分类,查找,比较,排序,反转,填充,合并,复制,替换等。 提供的解决方案在Java 8-12中实现,它们也可以用作解决其他相关问题的基础。 到本章结束时,您将拥有扎实的知识基础,可用于解决许多涉及数组,集合和数据结构的问题。
第6章:Java I / O路径,文件,缓冲区,扫描和格式化
本章包括20个涉及文件的Java I / O的问题。 从
操作,步行和观看流文件的路径以及用于读取/写入文本和二进制文件的有效方法,我们将介绍任何Java开发人员都必须解决的问题。 借助从本章中学到的技能,您将能够解决涉及Java I / O文件的大多数常见问题。
第7章:Java反射类,接口,构造函数,方法和字段
本章包括涉及Java Reflection API的17个问题。 来自经典主题,例如检查和实例化Java工件(用于
例如,模块,包,类,接口,超类,构造函数,方法,注释,数组等),以合成和桥接结构或基于嵌套的访问控制(JDK 11),本章对Java Reflection API。
第8章:函数样式编程-基本原理和设计模式
本章包括涉及Java函数编程的11个问题。 本章从一个旨在使您完全熟悉功能接口的问题开始。 它继续提供了以Java功能样式解释的GoF设计模式套件。
第9章:函数样式编程-深入研究
本章包括22个涉及Java函数编程的问题。 在这里,我们集中讨论涉及流(例如,过滤器和映射)中流遇到的经典操作的几个问题,并讨论无限流,空安全流和默认方法。 全面的问题列表涵盖了分组,分区和收集器,包括JDK 12 teeing()收集器和编写自定义收集器的问题。 另外,takeWhile(),dropWhile()组成函数,谓词和比较器,测试和调试lambda,
还讨论了其他很酷的主题。
第10章:并发–线程池,可调用对象和同步器
本章包括14个涉及Java并发的问题。 本章从关于线程生命周期和对象/类级锁定的几个基本问题开始。 继续讲到有关Java中线程池的一系列问题,包括JDK 8工作窃取线程池。
之后,我们遇到了一些有关“可致电和未来”的问题。 接下来,我们为Java同步器带来一些问题(例如,屏障,信号量和交换器)。 在本章的最后,您应该熟悉Java并发的主要坐标,并准备继续进行一系列高级问题。
第11章:并发–深入探讨
本章包括13个涉及Java并发的问题。 本章介绍了有关fork / join框架,CompletableFuture,ReentrantLock,ReentrantReadWriteLock,StampedLock,原子变量,任务取消,可中断方法,线程本地锁和死锁的问题。 完成本章将确保获得任何Java开发人员所需的大量并发知识。
第十二章:可选
本章包含24个问题,这些问题旨在为使用Optional制定一些规则。 本节中提出的问题和解决方案基于Brian Goetz(Java的语言架构师)的定义-可选的目的是为库方法返回类型提供一种受限的机制,该机制需要一种明确的方法来表示无结果,并使用null极有可能导致错误。 但是在有规则的地方也有例外。 因此,不能得出结论,应不惜一切代价遵守(或避免)此处介绍的规则(或惯例)。 像往常一样,解决方案取决于问题。
第13章:HTTP客户端和WebSocket API
本章包含20个问题,旨在涵盖HTTP客户端和Webocket API。 还记得HttpUrlConnection吗? 好吧,JDK 11附带了HTTP客户端API,作为HttpUrlConnection的重塑。 HTTP客户端API易于使用,并支持HTTP / 2(默认)和HTTP / 1.1。 对于
向后兼容,当服务器不支持HTTP / 2时,HTTP客户端API将自动从HTTP / 2降级到HTTP 1.1。 此外,HTTP客户端API支持同步和异步编程模型,并依赖于流来传输数据(响应流)。 它还支持实时Web应用程序中使用的WebSocket协议,以低消息开销提供客户端-服务器通信。
我喜欢什么?
- 除了非凡的技术内容,我还喜欢三件事:
- 我在一本书中找到了所有这些信息。 从Internet和其他资源中收集所有这些东西将花费大量时间。
- 很实用。 每个页面上都有代码。
- 准备现代Java采访非常有用。 我的学生大多数都是2-4年的Java开发人员,他们正在寻找可以使他们掌握Java功能最新知识的培训,但他们也希望为面试做准备。 这本书的编码挑战涵盖了这两种需求。
我不喜欢什么?
- 本书中并未列出所有代码。 您必须在GitHub上扫描仅本书中提到的示例。
- 有些缺乏图表。 在某些地方,图片很有用,但缺少图片。
最后的话
我从5个开始就以4.8分获得了这本书。
我强烈推荐它作为Java 8-13主题的参考书。
您可以在Amazon , Packt , O'Reilly等处找到它。
From: https://hackernoon.com/java-coding-problems-review-t44832m0