2021 年 6 月份,TPLINK22 提前批网络安全算法工程师面试题 3 道
1、TCP和UDP的特点
- TCP:面向连接
TCP面向连接通信,所以握手过程会消耗资源,过程为可靠连接,不会丢失数据,适合大数据量交换 ;“面向连接”就是在正式通信前必须要与对方建立起连接。
TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。
TCP支持的应用协议:Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传输协议)。
- UDP:面向非连接的
UDP面向非可靠连接,会丢包,没有校验,速度快,无须握手过程;"面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。
UDP支持的应用协议:NFS(网络文件系统)、SNMP(简单网络管理系统)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。
总结:
- TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。
- UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。
2、25匹马 5个跑道,每次只能跑5匹,至少需要多少次才能选出最快的前3匹?
将马分成A、B、C、D、E五组。
- 第1-5次比赛:各组分别进行比赛,决出各组名次,取每组前三名
A1、A2、A3
B1、B2、B3
C1、C2、C3
D1、D2、D3
E1、 E2、E3
- 第6次比赛:A1、B1、C1、D1、E1,即每组的第一名进行比赛;
假设得到的排名结果是A1、B1、C1、D1、E1;其中A1是跑的最快的,那么A组A2、A3,B组的B1、B2以及C组的C1都是有机会进入前三的,C2没有希望冲进前3了,因为C1是比赛的名次已经是第3名了,此外D组E组都没有希望进入前3。现在已经知道A1肯定是第1名,剩下A2、A3、B1、B2、C1是有希望冲进前三的,那么让他们再进行一场比赛即可;
- 第7次比赛:A2、A3、B1、B2、C1比赛求出第2,第3即可。
所以公共需要7厂比赛,就可以选出最快的前3匹马;
3、用rand5实现rand7
rand5(5):等概率生成整数[1, 2, 3, 4, 5]
rand5(7): 等概率生成整数[1, 2, 3, 4, 5, 6, 7]
思路:
- 用(rand5(5) - 1)构造等概率整数数组:[0, 1, 2 , 3, 4],
- 用(rand5(5) - 1)*5构造整数数组:[0, 5, 10, 15, 20],
- 上面的两个整数组可以构造等概率的新数组:[0, 1, 2, 3, 4, 5, 6, 7, .... , 24];
(如果第2个数组选择2倍或者3倍,4倍则无法构造新的等概率数组)
- 选择新数组[0, 1, 2, 3 .... , 20]21个元组即可构造等概率的数组[1, 2, 3, 4, 5, 6, 7]
参考代码:
import random
def rand5():
return random.randint(1, 5)
def rand7():
while True:
tmp_num = (rand5() - 1)*5 + (rand5() - 1)
if tmp_num <= 20:
break
return tmp_num % 7 + 1
# 随机生成10000个1~7的整数,验证0~7各个数字生成的概率;
ls = []
for _ in range(10000):
ls.append(rand7())
for i in range(1, 8):
print(ls.count(i)/len(ls), end=" ")
# out:0.144 0.1459 0.14 0.1438 0.1444 0.1373 0.1446
# 观察可知0~7各个数字生成的概率是
七月在线品牌月
福利:每天1 门 AI 爆款课 1 分秒杀!
时间:7 月 1 日-7 月 31 日
时长:每个课秒杀时长为 24h !