问答题
问答题1:A,B 两台机器都正常工作, B 机器未监听任何端口.如果 A 机器向 B 机器 80 端口发送SYN包,会收到何种类型的回包?
A: ACK包
B: FIN包
C: 不会收到回包
D: RST包
提示:因为 B 机器 80 端口未打开,所以会发送一个 RST 包,另外请求超时 、提前关闭 、在一个已关闭的 socket
上收到数据也会发送RST 包,RST 是TCP 首部的标志位之一,具体含义是复位连接,也可表示拒绝连接.
问答题2:某学校获取到一个B类地址段,要给大家分开子网使用,鉴于现在上网设备急剧增多,管理员给每个网段进行划分的子网掩码设置为255.255.254.0,考虑每个网段需要有网关设备占用一个地址的情况下,每个网段还有多少可用的主机地址?
提示:由于网关设备占用一个地址,所以可用主机地址数为 29 -2 -1 = 509,其中 2 代表的是主机地址全是0和1的地址,这两个地址不能作为主机地址,全为 0 表示一个网段,全为 1 表示网络广播
问答题3:当我们在局域网内使用ping www.nowcoder.com时,哪种协议没有被使用?
A: ICMP
B: ARP
C: DNS
D: TCP
提示:因为 ping 后面跟的是域名,所以要先将域名转换为 IP 地址,即用到了 DNS 协议,获取到 IP 地址,在数据链路层时根据 MAC 地址传输的,所以要用到 ARP 解析服务,获取 MAC 地址;ping
功能是测试另一台主机是否可达,程序发送一份ICMP
回显请求给目标主机,并等待返回ICMP
回显应答(ICMP主要是用于 IP 主机、路由器之间传递控制信息,控制信息是指网络通不通,主机是否可达),并没有用到TCP
传输协议.
问答题4:某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有 26 台计算机,每个子公司在一个网段中,则子网掩码应设为?
提示:最大的子公司有 26 台计算机,可确认主机位数为 25,C 类默认的网络号为24位,27 - 24 = 3 位为子网号,23 = 8,除过全 1 和全 0 的子网号不能用,则可用的子网有 6 个,满足条件,所以子网掩码应设为 255.255.255.224
编程题
编程题1:电话号码
上图是一个电话的九宫格,如你所见一个数字对应一些字母,因此在国外企业喜欢把电话号码设计成与自己公司名字相对应,例如公司的Help Desk 号码是 4357,因为 4 对应 H 、3 对应 E、5 对应 L、7 对应 P,因此 4357 就是 HELP,同理,TUT-GLOP 就代表 888 - 4567、310 - GINO 代表 310 - 4466
NowCoder 刚进入外企,并不习惯这样的命名方式,现在给你一串电话号码列表,请你帮他转换成数字形式的号码,并去除重复的部分
输入描述:输入包含多组数据
每组数据第一行包含一个正整数 n(1≤n≤1024)
紧接着 n 行,每行包含一个电话号码,电话号码仅由连字符“-”、数字和大写字母组成。没有连续出现的连字符,并且排除连字符后长度始终为7(美国电话号码只有7位)
输出描述:对应每一组输入,按照字典顺序输出不重复的标准数字形式电话号码,即 “xxx-xxxx” 形式,每个电话号码占一行,每组数据之后输出一个空行作为间隔符
示例1:
输入
12
4873279
ITS-EASY
888-4567
3-10-10-10
888-GLOP
TUT-GLOP
967-11-11
310-GINO
F101010
888-1200
-4-8-7-3-2-7-9-
487-3279
输出:
310-1010
310-4466
487-3279
888-1200
888-4567
967-1111
案例2:
输入
4
UTT-HELP
TUT-GLOP
310-GINO
000-1213
输出
000-1213
310-4466
888-4357
888-4567
#include <iostream>
#include <unordered_map>
#include <string>
#include <set>
using namespace std;
int main(){
unordered_map<char, char> dic;
//可以用下标插入
dic['A'] = '2';
// 也可以使用 emplace 函数
dic.emplace('B',