一台刚刚接入互联网的WEB服务器第一次被访问到时,不同协议的发生顺序是下面中的()
A. ARP -> DNS -> HTTP
B. ARP -> HTTP -> DNS
C. DNS -> HTTP -> ARP
D. HTTP -> ARP -> DNS
答案:A
办公室的一台计算机只能使用IP地址而无法使用域名访问外部网站,造成这种情况的原因不可能是() A. 该计算机设置的DNS服务器没有提供正常域名解析服务
B. 该计算机与DNS服务器不在同一子网
C. 提供被访问服务器名字解析的DNS服务器有故障
D. 该计算机发起的目的端口为53的访问请求被限制
答案:B
对于IP地址为200.5.6.3,属于()类
A. A
B. B
C. C
D. D
答案:C
下列哪些功能使TCP准确可靠地从源设备到目地设备传输数据()
A. 封装
B. 流量控制
C. 无连接服务
D. 编号和定序
答案:D
tcp三次握手创建连接,双方交互的报文中SYN和ACK的序列是什么样的()
A. SYN,SYN+ACK,ACK
B. SYN,ACK,SYN,ACK
C. SYN+ACK,ACK,SYN
D. SYN,SYN,ACK
答案:A
下列关于地址转换的描述,错误的是()
A. 地址转换解决了因特网地址短缺所面临问题
B. 地址转换实现了对用户透明的网络外部地址的分配
C. 使用地址转换后,对"IP包加长","快速转发"不会造成什么影响
D. 地址转换内部主机提供一定的”隐私”
答案:B
某主机的IP地址202.117.131.12/20,其子网掩码是()
A. 255.255.248.0
B. 255.255.240.0
C. 255.255.252.0
D. 255.255.255.4
答案:B
HTTPS采用()实现安全网站访问
A. SSL
B. IPsec
C. PGP
D. SET
答案:A
网段地址 154.27.0.0 的网络。若不做子网划分,能支持()台主机
A. 254
B. 1024
C. 65534
D. 16777206
答案:C
下列关于网络编程错误的是?
A. UDP是不可靠服务
B. 主动关闭的一端会出现TIME_WAIT状态
C. 服务端编程会调用listen(),客户端会调用bind()
D. TCP建立和关闭连接都只需要三次握手 E. linux通过提供socket接口来进行网络编程 F. 长连接相对短连接可以节省建立连接的时间
答案:D
数组中出现次数超过一半的数字
题目描述:给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
数据范围:n<=50000,数组中元素的值0<=val<=10000
要求:空间复杂度:O(1),时间复杂度O(n)
public class Solution6 {
public int MoreThanHalfNum_Solution(int[] array){
HashMap<Integer,Integer> mp=new HashMap<>();
for (int num:array) {
//统计num的次数
if (mp.containsKey(num)){
mp.put(num,mp.get(num)+1);
}else {
mp.put(num,1);
}
//判断num的次数是否超过一半
if (mp.get(num) > array.length/2){
return num;
}
}
return 0;
}
}
简单错误记录
题目描述:开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
处理:
1、 记录最多8条错误记录,循环记录,最后只用输出最后出现的八条错误记录。对相同的错误记录只记录一条,但是错误计数增加。最后一个斜杠后面的带后缀 名的部分(保留最后16位)和行号完全匹配的记录才做算是“相同”的错误记录。
2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;
3、 输入的文件可能带路径,记录文件名称不能带路径。也就是说,哪怕不同路径下的文件,如果它们的名字的后16个字符相同,也被视为相同的错误记录
4、循环记录时,只以第一次出现的顺序为准,后面重复的不会更新它的出现时间,仍以第一次为准
数据范围: 错误记录数量满足1<=n<=100,每条记录长度满足 1<=len<=100
输入描述:每组只包含一个测试用例。一个测试用例包含一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。
输出描述:将所有的记录统计并将结果输出,格式:文件名 代码行数 数目,一个空格隔开,如:
public class Main76 { //简单错误记录 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); HashMap<String,Integer> mp=new HashMap<>(); ArrayList<String> arr=new ArrayList<>(); while (scanner.hasNext()){ //文件名 String curStr= scanner.next(); //行号 String num= scanner.next(); //文件名预处理 String[] strArr=curStr.split("\\\\"); //取最后一个反斜杠之后的内容 curStr=strArr[strArr.length-1]; //判断长度是否大于16 if (curStr.length()>16){ curStr=curStr.substring(curStr.length()-16); } //加上行号 curStr +=" "+num; //判断是否为第一次出现 if ( !mp.containsKey(curStr)){ //加入新的记录 arr.add(curStr); mp.put(curStr,1); }else { //累加 mp.put(curStr,mp.get(curStr)+1); } } //打印最后8条记录 int start=0; if (arr.size()>8){ start=arr.size()-8; } for (; start < arr.size(); ++start) { System.out.println(arr.get(start)+" "+mp.get(arr.get(start))); } } }
数组中出现次数超过一半的数字
题目描述:给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。
数据范围:n<=50000,数组中元素的值0<=val<=10000
要求:空间复杂度:O(1),时间复杂度O(n)
public class Solution6 { public int MoreThanHalfNum_Solution(int[] array){ HashMap<Integer,Integer> mp=new HashMap<>(); for (int num:array) { //统计num的次数 if (mp.containsKey(num)){ mp.put(num,mp.get(num)+1); }else { mp.put(num,1); } //判断num的次数是否超过一半 if (mp.get(num) > array.length/2){ return num; } } return 0; } }