目录
- 一、选择题
- 二、编程题
- 2.1 mkdir
- 2.1.1 题目
- 2.1.2 题解
- 2.2 数据库连接池
- 2.2.1 题目
- 2.2.2 题解
一、选择题
(1)下面关于源端口地址和目的端口地址的描述中,正确的是(A)
A.在TCP/UDP传输段中,源端口地址和目的端口地址是不可能相同的
B.在TCP/UDP传输段中,源端口地址和目的端口地址必须是相同的
C.在TCP/UDP传输段中,源端口地址和目的端口地址可以相同
D.以上描述都不正确
数据五元组信息:源IP,目的IP,源端口,目的端口,协议
(2)网段地址154.27.0.0的网络,若不做子网划分,能支持(C)台主机
A.254
B.1024
C.65534
D.16777206
该地址属于B类地址,有16位主机号
故主机号个数为2^16=65526
去掉广播地址和网络地址,剩余65534
(3)以下说法不正确的是(D)
A.HTTP是一种请求/响应式的协议
B.HTTP请求信息中Accept表示浏览器可接受的MIME类型
C.HTTP请求中Accept-Encoding表示浏览器能够进行解码的数据编码方式
D.HTTP请求消息中Css表示初始URL中的主机和端口
MIME多用途互联网邮件扩展类型,是设定某种扩展名的文件用一种应用程序来打开的方式类型,当改扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开
(4)关于计算机网络,下列描述正确的是(C)
A.在同一信道上同一时刻,可进行双向数据传送的通信方式是半双工
B.TCP协议是无连接的,UDP协议是面向连接的
C.假设一个主机的ip地址为192.168.8.123,而子网掩码为255.255.255.248,那么该主机的网络号是192.168.8.120
D.计算机网络中的OSI结构分别是:物理层,数据链路层,传输层,会话层,表示层,应用层
网络号=主机号 & 子网掩码
二、编程题
2.1 mkdir
2.1.1 题目
2.1.2 题解
思路:将前缀字符串路径和相同的路径剔除掉,mkdir -p 最长或唯一的路径
具体步骤:
step1:对输入的路径按照字典序排序
step2:遍历字符串数组,
情况1:i位置的字符串和i+1字符串相等,则将i位置的字符串剔除掉(并不是真正的删除而是使用标记位),
情况2:是i位置的字符串是i+1的子路径,例如/a是/a/b的子路径,该情况还要满足一个条件就是i+1位置的字符串的path[i].length位置必须是/,例如
/a 和/abc/d,此时/a就不是/abc/d的子路径step3:遍历字符串数组,输出未被剔除的字符串
代码:
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext()){
int n=scanner.nextInt();
//scanner.nextLine();
String[] path=new String[n];
for(int i=0;i<n;i++){
path[i]=scanner.next();
}
Arrays.sort(path);
boolean[] flag = new boolean[n];
for(int i=0;i<n-1;i++){
if(path[i].equals(path[i+1]) ||
path[i+1].contains(path[i]) &&
path[i+1].charAt(path[i].length()) == '/'){
flag[i]=true;
}
}
for(int i=0;i<n;i++){
if(!flag[i]){
System.out.println("mkdir -p "+path[i]);
}
}
System.out.println();
}
}
2.2 数据库连接池
2.2.1 题目
2.2.2 题解
思路:遍历字符串数组,count保存当前可用的连接数,ret保存最少需要创建的连接数,如果s[i]为disconnect,则count++,如果s[i]为connect,则判断count是否大于0,如果count大于0,则另count–,如果count小于等于0,则代表当前没有可用的连接,需要新创建连接ret++
代码:
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();
scanner.nextLine();
String[] s=new String[n];
int ret=0;
int count=0;
for(int i=0;i<n;i++){
s[i]=scanner.nextLine();
if(s[i].contains("disconnect")){
count++;
}else {
if(count<=0){
ret++;
}else{
count--;
}
}
}
System.out.println(ret);
}
}
}