笔试强训(三十七)

一、选择题

(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);
  }
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值