在這篇文章中,我們將討論一些重要的 [Java SE 8]( / 社區 / 教程 / Java-8 - 功能 - 與例子) 面試問題與答案. 我將寫一篇文章來討論剩餘的 Java SE 8 面試問題。
Java 8 面试问题
- 联合国 为什么我们需要再次更改为 Java ? ( (英语). 2. Java SE 8 新地物? () )3. Java SE 8新地物的优点? (). (英语). 4. Lambda 表达式是什么( ) (英语). 5. Lambda表达式的三个部分是什么? Lambda 表达式是什么类型? () (英语). 什么是功能界面? SAM 接口是什么 ? ( (英语). 7. 能否定义我们自己的功能界面? @ 功能界面是什么 ? 定义功能界面的规则是什么? (_) (英语). 8. @ 功能界面是否强制定义功能界面 ? @ 功能界面注释有什么用 ? 为什么我们需要Java中的功能界面?
- 我们什么时候去Java 8 Stream API? 为什么我们的项目需要使用Java 8 Stream API? (_)
- 解释收藏 API 和 Stream API 之间的差异吗? () )11 (英语). 在Java SE 8中什么是分裂者? 在 Java SE 8 中, 指示器和分位器的区别 ? () )12 (英语). 在Java 8中什么是可选的? "可选"有什么用? Java 8 的优点可选? (_) )13 (英语). 什么是类型推论? 类型推论在Java 7等更古老的版本和"7前"中是否可以提供,或者它只在Java SE 8中提供? ( (英语)
Java 8 面试问题与答案
在本节中,我们将从上一节中提取每个问题,并用详细的描述回答它. 如果您需要更多的信息和示例,请浏览以前的Java SE 8帖子在JournalDEV中。
为什么我们需要再次更改Java?
Oracle Corporation 在 Java SE 8 中引入了许多新概念,以便引入以下优点:
- ** 有效地使用当前的多核CPU**
最近,我们可以观察到硬件的剧烈变化。今天,所有系统都在使用多核CPU(2.4.8.16-Core,等等)来部署和运行他们的应用程序。我们需要在Java中使用新的编程构造来有效地利用这些多核处理器来开发高度竞争性和高度可扩展的应用程序。
Java SE 8新功能?
- 网络表达式
- 功能界面
- 流程 API
- 日期和时间API
- 界面默认方法和静态方法(/社区/教程/java-8-interface-changes-static-method-default-methode)
- 分解器
- 方法和构造者参考
- 收藏 API 改进
- 改进( _methode-default-methode)(
Java SE 8 有哪些新功能?
我们可以从 Java SE 8 新功能中获得以下好处:
- 更简洁和可读的代码
- 更可重复使用的代码
- 更可测试和可维护的代码
- 高度竞争和高度可扩展的代码
- 编写并行代码
- 编写数据库类似操作
- 更好的性能应用
- 更有效的代码
Lambda 表达式是什么?
Lambda 表达式是一个匿名函数,它接受一组输入参数并返回结果. Lambda 表达式是一个代码块,没有任何名称,有或没有参数,有或没有结果。
兰博达表达式的三个部分是什么?兰博达表达式的类型是什么?
Lambda 表达式包含 3 个部分:
- 参数列表
Lambda 表达式可以包含零或一个或多个参数. 它是可选的.- Lambda 箭头操作员 "->"被称为 Lambda 箭头操作员。
Journal Dev
的类型为 java.lang.String. true
的类型为Boolean。同样,Lambda 表达式的类型是什么?Lambda 表达式的类型是 功能界面。
1() -> System.out.println("Hello World");
这个 Lambda 表达式没有参数,并且不会返回任何结果,所以它的类型是java.lang.Runnable
功能界面。
什么是SAM接口?什么是SAM接口?
函数接口是一个接口,其中包含一个和只有一个抽象方法。函数接口也被称为SAM接口,因为它只包含一个抽象方法。
可以定义自己的功能界面吗? @FunctionalInterface是什么? 定义功能界面的规则是什么?
是的,我们可以定义自己的功能界面。我们使用Java SE 8的 @FunctionalInterface注释来标记一个界面为功能界面。
- 定义一个接口,只使用一个抽象方法
- 我们不能定义多于一个抽象方法
- 在界面定义中使用 @FunctionalInterface 注释
- 我们可以定义任何其他方法,如默认方法,静态方法
- 如果我们将 java.lang.Object 类的方法作为抽象方法,而不计入抽象方法
@FunctionalInterface 注释是强制性的,以定义功能界面吗? @FunctionalInterface 注释的用途是什么?为什么我们需要 Java 中的功能界面?
用 @FunctionalInterface 注释来定义功能界面是不必需的,如果我们不愿意,我们可以忽略这个注释,但是,如果我们在功能界面定义中使用它,Java 编译器强迫我们在该界面内使用一个和只有一个抽象方法。为什么我们需要功能界面?Java SE 8的Lambda表达式的类型是功能界面。在任何地方我们都使用Lambda表达式,这意味着我们正在使用功能界面。
为什么我们需要在我们的项目中使用Java 8 Stream API?
当我们的Java项目想要执行以下操作时,最好使用Java 8流(/community/tutorials/java-8-stream)API来获得很多好处:
例如,我们想要执行按组操作、按顺序操作等 *当我们想要执行操作时 *当我们想要写功能风格编程时 *当我们想要执行并行操作时 *当我们想要使用内部迭代 *当我们想要执行管道操作时 *当我们想要实现更好的性能时
如何解释 Collection API 和 Stream API 的区别?
S. No. QQ 收藏 API 流 API QQ QQ -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1. |自Java 1.2 起可以使用 它被引入了Java SE 8| |. 2. 用于存储数据(一组对象)。 | 它用于计算数据(一组对象上的计算). ________________ __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 3. | 我们可以同时使用分解器和分解器来分解元素. 我们可以使用each来为本流的每个元素执行一个动作. 我们不能用分层或地表来测量元素。 ________________ __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 4. QQ 用于存储无限数量的元素. QQ流 API 用于处理收藏的元素。 ________________ __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 5. 通常,它使用外部迭代概念来进行迭代等元素. QQ Stream API 使用内部迭代来进行Isterate Elements,使用每种方法. ________________ __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 6. 收集对象构造为Eagerly。 QQ 流对象构造为 Lazily 。 ________________ __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 7. QQ 我们只有在收集对象被完全计算后才会添加元素。 我们可以在不事先计算的情况下向流对象添加元素. 这意味着流对象是按要求计算的. ________________ __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 8. *_______________________________________________________ 我们只能从流体对象中切除和消耗一次元素。 |
Java SE 8中的Spliterator是什么?Java SE 8中的Iterator和Spliterator的区别?
它是由Oracle Corporation作为Java SE 8的一部分所引入的,就像Iterator和ListIterator一样,它也是Iterator界面之一。
S.No. | Spliterator | Iterator |
---|---|---|
1. | It is introduced in Java SE 8. | It is available since Java 1.2. |
2. | Splitable Iterator | Non-Splitable Iterator |
3. | It is used in Stream API. | It is used for Collection API. |
4. | It uses Internal Iteration concept to iterate Streams. | It uses External Iteration concept to iterate Collections. |
5. | We can use Spliterator to iterate Streams in Parallel and Sequential order. | We can use Iterator to iterate Collections only in Sequential order. |
6. | We can get Spliterator by calling spliterator() method on Stream Object. | We can get Iterator by calling iterator() method on Collection Object. |
7. | Important Method: tryAdvance() | Important Methods: next(), hasNext() |
什么是Java 8选项?什么是选项?Java 8选项的优点?
** 可选:** 可选是作为 Java SE 8 的一部分引入的最后一类。 它被定义在 java.util 包中。 它被用来代表可选值,它们既存在又不存在。 它可以包含一个值或零值。 如果它包含一个值,我们可以得到它。 否则,我们没有得到任何东西。 它是一个有限的集合,它最多只包含一个元素。 它是零
值的替代品。 ** 可选的主要优点是:**
- 用于避免 null 检查
- 用于避免
NullPointerException
什么是 Type Inference? Type Inference 是否在 Java 7 和 Before 7 等旧版本中可用,还是仅在 Java SE 8 中可用?
Type Inference 是指在编译时根据编译器确定类型。它不是 Java SE 8 中的一个新特性。它在 Java 7 和 Java 7 之前也可用。 在 Java 7 之前:- 让我们探索 Java 数组。
1String str[] = { "Java 7", "Java 8", "Java 9" };
在这里,我们在右侧分配了一些 String 值,但没有定义其类型。Java Compiler 会自动推断其类型并创建一个 Array 字符串。 Java 7: Oracle Corporation 在 Java SE 7 中引入了钻石操作员
的新功能,以避免在通用技术中不必要的类型定义。
1Map<String,List<Customer>> customerInfoByCity = new HashMap<>();
在这里,我们没有在右侧定义类型信息,简单地定义了Java SE 7的钻石操作员。 Java SE 8: Oracle Corporation在Java SE 8中大大增强了这种类型引用概念。
1ToIntBiFunction<Integer,Integer> add = (a,b) -> a + b;
在这里,Java Compiler观察了左侧可用的类型定义,并确定了Lambda表达式参数a和b的类型作为Integers。这就是关于Java 8访谈问题。我已经讨论了这个帖子中的一些Java SE 8访谈问题,并将在我即将到来的帖子中讨论一些Java SE 8访谈问题。