笔试强训(四十三)

一、选择题

(1)下列关于synflood攻击的说法错误的是(B)
A.服务端由于连接队列被占满而不能对外服务
B.不但能攻击TCP服务,还能攻击UDP服务
C.大量连接处于SYN_RECV状态
D.使用硬件防火墙可以一定程度上抵御攻击

synflood是syn泛红攻击,恶意客户端伪造IP发送大量SYN给服务器,但是不进行第三次握手,是服务器连接队列爆满无法对合法请求进行处理

(2)A,B两台机器都正常工作,B机器未监听任何端口,如果A机器向B机器80端口发送SYN包,会收到何种类型的回包(D)
A.ACK包
B.FIN包
C.不会收到回包
D.RST包

RST用于重置因为某种原因导致的错误连接,以及拒绝非法的数据和请求

(3)假设在x86平台上,有一个int型变量,在内存中的内部由低到高分别是0x12,0x34,0x56,0x78当通过网络发送该数据时,正确的发送顺序是(B)
A.0x12,0x34,0x56,0x78
B.0x78,0x56,0x34,0x12
C.0x34,0x12,0x78,0x56
D.0x56,0x78,0x12,0x34

在x86平台上采用的是小端存储(低位存低地址)
但网络传输使用大端字节序,并且从低地址开始发送,因此需要先将小端存储转换成大端存储后,从低地址开始发送
在这里插入图片描述

(4)当我们在局域网内使用ping www.newcoder.com时,哪种协议没有被使用(D)
A.ICMP
B.ARP
C.DNS
D.TCP

ping用于探测网络状况的,进行域名解析之后获取到服务器IP地址,然后目标主机发送ICMP请求,ping使用的时ICMP报文,只涉及网络层以下,因此直接就是IP,ARP用于获取相邻设备的MAC地址,域名解析使用DNS(DNS一般使用UDP)

(5)从浏览器打开 www.sohu.com,TCP/IP协议簇中不会被使用到的协议是(A)
A.SMTP
B.HTTP
C.TCP
D.IP

SMTP是邮件传输协议
浏览器打开一个网站,经历的阶段

  1. 域名解析得到服务器IP地址
  2. 搭建TCP客户端连接服务器
  3. 组织HTTP请求,通过搭建的客户端发送请求给服务器

二、编程题

2.1 电话号码

2.1.1 题目

在这里插入图片描述

2.1.2 题解

代码:



import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Map<Character,Integer> map=new HashMap<>();
        map.put('A',2);
        map.put('B',2);
        map.put('C',2);
        map.put('D',3);
        map.put('E',3);
        map.put('F',3);
        map.put('G',4);
        map.put('H',4);
        map.put('I',4);
        map.put('J',5);
        map.put('K',5);
        map.put('L',5);
        map.put('M',6);
        map.put('N',6);
        map.put('O',6);
        map.put('P',7); map.put('Q',7); map.put('R',7); map.put('S',7);
        map.put('T',8); map.put('U',8); map.put('V',8);
        map.put('W',9); map.put('X',9); map.put('Y',9); map.put('Z',9);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            Set<String> set = new HashSet<>();
            for (int i = 0; i < n; i++) {
                String str=scanner.next();
                StringBuffer sb = new StringBuffer();
                for (int j = 0; j < str.length(); j++) {
                    if(str.charAt(j)>='0' && str.charAt(j)<='9'){
                        sb.append(str.charAt(j));
                    } else if(str.charAt(j)>='A' && str.charAt(j)<='Z'){
                        sb.append(map.get(str.charAt(j)));
                    }
                }
                set.add(sb.toString());
            }
            String[] ss=set.toArray(new String[0]);
            Arrays.sort(ss);//题目要求按照字典序输出,所以要进行排序
            for(int i=0;i<ss.length;i++){
               for(int j=0;j<ss[i].length();j++){
                   if(j==2){
                       System.out.print(ss[i].charAt(j)+"-");
                   }else {
                       System.out.print(ss[i].charAt(j));
                   }
               }
                System.out.println();
            }
                System.out.println();
        }
    }
}

2.2 求和

2.2.1 题目

在这里插入图片描述

2.2.2 题解

思路:递归+回溯

代码:

import java.util.*;
public class Main{
  
  public static void main(String[] args){
     Scanner scanner=new Scanner(System.in);
     while(scanner.hasNextInt()){
       int n=scanner.nextInt();
       int m=scanner.nextInt();
       ArrayList<Integer> list=new ArrayList<>();
       dfs(1,0,m,n,list);
     }
  }
  public static void dfs(int pos,int curSum,int m,int n,List<Integer> queue){
      if(curSum>m) return;
    if(curSum==m){
        for(int i=0;i<queue.size()-1;i++){
          System.out.print(queue.get(i)+" ");
        }
         System.out.println(queue.get(queue.size()-1));
      return;
    }
    
   for(int i=pos;i<=n;i++){
       queue.add(i);
        dfs(i+1,curSum+i,m,n,queue);
       queue.remove(queue.size()-1);
   }
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值