[ Java面试题 ]Java 开发岗面试知识点解析 (7)

[ Java面试题 ]Java 开发岗面试知识点解析

Java 8 相关知识

关于 Java8 中新知识点,面试官会让你说说 Java8 你了解多少,下边主要阐述我所了解,并且在面试中回答的 Java8 新增知识点。

0.1 HashMap 的底层实现有变化:HashMap 是数组 + 链表 + 红黑树(JDK1.8 增加了红黑树部分)实现。

02. JVM 内存管理方面,由元空间代替了永久代。

区别:

1. 元空间并不在虚拟机中,而是使用本地内存;

2. 默认情况下,元空间的大小仅受本地内存限制;

3. 也可以通过 -XX:MetaspaceSize 指定元空间大小。

03. Lambda 表达式(也称为闭包),允许我们将函数当成参数传递给某个方法,或者把代码本身当做数据处理。

04. 函数式接口:指的是只有一个函数的接口,java.lang.Runnable 和 java.util.concurrent.Callable 就是函数式接口的例子;java8 提供了一个特殊的注解 @Functionallnterface 来标明该接口是一个函数式接口。

05. 引入重复注解:Java 8 中使用 @Repeatable 注解定义重复注解。

06. 接口中可以实现方法 default 方法。

07. 注解的使用场景拓宽: 注解几乎可以使用在任何元素上:局部变量、接口类型、超类和接口实现类,甚至可以用在函数的异常定义上。

08. 新的包 java.time 包

包含了所有关于日期、时间、时区、持续时间和时钟操作的类。(Java 8 的日期与时间问题解决方案)

这些类都是不可变的、线程安全的。

小结:Java8 的一些新特性,面试官一般情况下不要求你有多么精通,主要是看看你有没有一些了解。

网络协议相关

网络协议方面,考察最多的包括服务器和客户端在三次握手、四次挥手过程中的状态变化;还有网络拥塞控制,及其解决办法等。

01. 三次握手、四次挥手示意图:

[ Java面试题 ]Java 开发岗面试知识点解析

总共有四种状态:主动建立连接、主动断开连接、被动建立连和被动断开连接

两两组合还是 4 种组合:

主动建立连接、主动断开连接会经历的状态:
SYNC_SENT——ESTABLISHED—-FIN_WAIT_1—-FIN_WAIT_2—-TIME_WAIT

主动建立连接、被动断开连接会经历的状态:
SYNC_SENT——ESTABLISHED—-CLOSE_WAIT—-LAST_ACK

被动建立连接、主动断开连接会经历的状态:
LISTEN—-SYN_RCVD—-ESTABLISHED—-FIN_WAIT_1—-FIN_WAIT_2—-TIME_WAIT

被动建立连接、被动断开连接会经历的状态:
LISTEN—-SYN_RCVD—-ESTABLISHED—-CLOSE_WAIT—-LAST_ACK

02. 滑动窗口机制

由发送方和接收方在三次握手阶段,互相将自己的最大可接收的数据量告诉对方。

也就是自己的数据接收缓冲池的大小。这样对方可以根据已发送的数据量来计算是否可以接着发送。

在处理过程中,当接收缓冲池的大小发生变化时,要给对方发送更新窗口大小的通知。

03. 拥塞避免机制

拥塞:对资源的需求超过了可用的资源。若网络中许多资源同时供应不足,网络的性能就要明显变坏,整个网络的吞吐量随之负荷的增大而下降。

拥塞控制:防止过多的数据注入到网络中,使得网络中的路由器或链路不致过载。

拥塞控制方法:

慢开始 + 拥塞避免;

快重传 + 快恢复。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwxfyf.html