目录
- 一、选择题
- 二、编程题
- 2.1 查找兄弟单词
- 2.1.1 题目
- 2.1.2 题解
一、选择题
(1)IP数据报分片的重组通常发生在(D)
A.源主机和数据经过的路由器上
B.源主机上
C.数据报经过的路由器上
D.目的主机上
数据分片是网络层发现上层给的数据过大,大于链路层的MTU,因此在网络层进行的数据分片,将大报文分割成小报文封装ip报头发送,在目的主机的网络层进行分片重组
(2)IP地址10.1.8.0/24和10.1.9.0/24,下列哪个是正确的汇总网段(C)
A.10.0.0.0/8
B.10.1.0.0/16
C.10.1.8.0/23
D.10.1.10.0/24
10.1.8.0/24 -> 10.1.0000 1000.0
10.1.9.0/24 -> 10.1.0000 1001.0
两个地址的前23位相同,所以汇总网段为 10.1.0000 1000.0/23
(3)下列TCP连接建立过程描述正确的是(C)
A.服务端收到客户端的SYN包后等待2ml时间后就会进入SYN_SENT状态
B.服务端收到客户端的SYN包后进入SYN_RECV状态
C.当客户端处于ESTABLISHED状态时,服务器端可能处于SYN_RECV状态
D.服务端未收到客户端确认包,等待2ml时间后会直接关闭连接
D选项,服务端第三次握手失败,也就是超时没有等到ACK,服务端就会发送RST报文给客户端,然后关闭连接
(4)TCP建立连接的过程采用三次握手,已知第三次握手报文的发送序列号为1000,确认序列号为2000,请问第二次握手报文的发送序列号和确认号分别为(B)
A.1999,999
B.1999,1000
C.999,2000
D.999,1999
确认序号是对方发送请求的起始序号+1
(5)HTTP协议中,如果要告知所请求的网页已经永久跳转到了另一个地址,应该返回哪个状态码(A)
A.301
B.302
C.404
D.503
301 -> 永久重定向;302 -> 临时重定向 ; 404 -> 资源不存在;503 -> 服务器资源超载或维护暂时无法处理请求
二、编程题
2.1 查找兄弟单词
2.1.1 题目
2.1.2 题解
思路:对给出的字典中的单词进行排序,然后依次比较x和字典中的单词是否是兄弟单词,如果是count++,直到count=k,就说明在字典中找到了第k个与x互为兄弟的单词
代码:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while(scanner.hasNextLine()){
int n=scanner.nextInt();
String[] ss=new String[n];
for(int i=0;i<n;i++){
ss[i]=scanner.next();
}
String x=scanner.next();
int k=scanner.nextInt();
scanner.nextLine();
Arrays.sort(ss);
int count=0;
String kStr="";
for(String e: ss){
if(isBrother(e.toCharArray(),x.toCharArray())){
count++;
if(count==k){
kStr=e;
}
}
}
System.out.println(count);
if(count>=k) System.out.println(kStr);
}
}
private static boolean isBrother(char[] s1, char[] s2){
if(s1.length != s2.length ) return false;
String strA=new String(s1);
String strB=new String(s2);
if(strA.equals(strB)){
return false;
}
Arrays.sort(s1);
Arrays.sort(s2);
strA = new String(s1);
strB = new String(s2);
return strA.equals(strB);
}
}