2017年Java最新笔试题(附详细答案)范例

来源:范文网 1W

下述二叉树中,哪一种满足性质:从任一结点出发到根;本题主要考查了选项中出现的几种树的结构特点;下面关于线程的叙述中,正确的是();一条tcp连接,主动关闭的一方不可能出现的连接状;CLOSE_WAIT;FIN_WAIT2;TIME_WAIT;FIN_WAIT1;1)当客户端没有主动close的时候就断开连接,;1:这时候若客户端断开的时候发送了FIN包,则服

2017年Java最新笔试题(附详细答案)范例

下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序():

本题主要考查了选项中出现的几种树的结构特点。对于选项A,根据二叉排序树的结构特点我们可以知道,二叉排序树的中序遍历结果是一个有序序列,而在中序遍历中,父结点并不总是出现在孩子结点的前面(或后面),故该选项不正确。例如我们用关键字5,2,3建立一棵二叉排序树,则从结点3出发到根的路径上所经过的结点序列为3,2,5,并不是一个有序的序列。对于选项B,赫夫曼树在后续的章节中会介绍,根据赫夫曼树的结构特点我们可以知道,在赫夫曼树中所有的关键字只出现在叶结点上,其非叶结点上并没有关键字值,显然不正确。对于选项C,AVL树其本质上也是一种二叉排序树,只不过是平衡化之后的二叉排序树,故该选项也是不正确的。例如我们用序列5,1,8,6,9建立一棵AVL树,从结点6出发到根的路径上所经过的结点序列为6,8,5,也不是一个有序的序列。对于选项D,堆的概念我们会在堆排序中给大家介绍,根据建堆的过程,不断地把大者"上浮",将小者"筛选"下去,最终得到的正是一个从任一结点出发到根的路径上所经过的结点序列按其关键字有序的树状结构,故D是正确的。 本题中的A和C同时出现,没有起到干扰的作用,因为AVL树和二叉排序树只是在平衡性上有区别,在结点的排列方式上没有区别。

下面关于线程的叙述中,正确的是()。 正确答案: C 你的答案: D (错误) 不论是系统支持线程还是用户级线程,其切换都需要内核的支持 线程是资源的分配单位,进程是调度和分配的单位 不管系统中是否有线程,进程都是拥有资源的独立单位 在引入线程的系统中,进程仍是资源分配和调度分派的基本单位 A:用户级线程,切换时不需要内核的支持 B:线程是资源调度和分配的单位,进程是资源拥有的单位 C:对 D:引入线程后,线程才是资源分配和调度分派的基本单位 在引入线程前,进程的两个基本属性是:1.可拥有资源的独立单位。2.可独立调度和分配的基本单位。 后来为了使多个程序更好的并发执行,人们把上述两个属性分开,引入线程作为可独立调度和分配的基本单位。

一条tcp连接,主动关闭的一方不可能出现的连接状态是() 正确答案: A 你的答案: A (正确)

CLOSE_WAIT

FIN_WAIT2

TIME_WAIT

FIN_WAIT1

1)当客户端没有主动close的时候就断开连接,即客户端发送的fin丢失或者失败:

1:这时候若客户端断开的时候发送了FIN包,则服务端将会处于CLOSE_WAIT状态;2: 这时候若客户端断开的时候未发送FIN包,则服务端处还是显示ESTABLISHED状态

2) 当client想要关闭它与server之间的连接。client(某个应用进程)首先调用 close 主动关闭连接,这时TCP发送一个FIN M;client端处于 FIN_WAIT1 状态。

3) 当server端接收到FIN M之后,执行被动关闭。对这个FIN进行确认,返回给client ACK。当server端返回给client ACK后,

client处于 FIN_WAIT2 状态,server处于 CLOSE_WAIT 状态。它的`接收也作为文件结束符传递给应用进程,因为FIN的接

收 意味着应用进程在相应的连接上再也接收不到额外数据;

4) 一段时间之后,当server端检测到client端的关闭操作(read返回为0)。接收到文件结束符的server端调用close 关闭它的socket。这导致server端的TCP也发送一个FIN N;此时server的状态为last??ack .

5)当client收到来自server的FIN后 。 client端的套接字处于 TIME_WAIT 状态,它会向server端再发送一个ack确认,此时server端收到ack确认后,此套接字处于CLOSED状态。

介绍一下TCP连接建立与关闭过程中的状态。TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用、特定数据包以及超时等,具体状态如下所示:

1. CLOSED :初始状态,表示没有任何连接。

2. LISTEN : Server 端的某个 Socket 正在监听来自远方的 TCP 端口的连接请求。

3. SYN_SENT :发送连接请求后等待确认信息。当客户端 Socket 进行 Connect 连接时,会首先发送 SYN 包,随即进

入 SYN_SENT 状态,然后等待 Server 端发送三次握手中的第 2 个包。

4. SYN_RECEIVED :收到一个连接请求后回送确认信息和对等的连接请求,然后等待确认信息。通常是建立TCP 连接的三次握手过程中的

一个中间状态,表示 Server 端的 Socket 接收到来

自 Client 的 SYN 包,并作出回应。 ESTABLISHED :表示连接已经建立,可以进行数据传输。

5. FIN_WAIT_1 :主动关闭连接的一方等待对方返回 ACK 包。若 Socket 在 ESTABLISHED 状态下主动关闭连接并向对方发送 FIN 包(表示己方不再有数据需要发送),则进

入 FIN_WAIT_1 状态,等待对方返回 ACK包,此后还能读取数据,但不能发送数据。在正常情况下,无论对方处于何种状态,都应该马上返回 ACK包,所以 FIN_WAIT_1 状态一般很难见到。

6. FIN_WAIT_2 :主动关闭连接的一方收到对方返回的 ACK 包后,等待对方发送 FIN 包。处于 FIN_WAIT_1 状态下

的 Socket 收到了对方返回的 ACK 包后,便进

入 FIN_WAIT_2 状态。由于 FIN_WAIT_2 状态下的 Socket需要等待对方发送的 FIN 包,所有常常可以看到。若

在 FIN_WAIT_1 状态下收到对方发送的同时带有 FIN 和ACK 的包时,则直接进入 TIME_WAIT 状态,无须经

过 FIN_WAIT_2 状态。

7. TIME_WAIT :主动关闭连接的一方收到对方发送的 FIN 包后返回 ACK 包(表示对方也不再有数据需要发送,此后不能再读取或发送数据),然后等待足够长的时间( 2MSL )以确保对方接收到 ACK 包(考虑到丢失 ACK 包的可能和迷路重复数据包的影响),最后回到 CLOSED 状态,释放网络资源。

热门标签