我的博客

interview_topics

目录
  1. 网络
    1. TCP
      1. 三次握手
      2. 四次挥手
      3. CLOSE_WAIT 状态
  2. 算法题

网络

TCP

全双工,

三次握手

A 向 B 请求建立连接:A 发送 (SYN = 1, seq = x),B 返回(SYN = 1,ACK = 1,seq = y, ack = x+1),A 再返回(ACK = 1, seq = x+1,ack = y + 1)

四次挥手

A 希望关闭与 B 的连接:A 发送(FIN = 1, seq = x),B 回复(ACK = 1, seq = y, ack = x + 1),此时 A 不再向 B 发送数据,但 B 仍可发送数据。B 待数据发送完毕后,再向 A 发送(FIN = 1, seq = z) 回复(ACK = 1, seq = x + 1, ack = z + 1)至此连接关闭。

CLOSE_WAIT 状态

四次挥手中,A 向 B 发送了 FIN 后,B 回复 ACK,此后 B 进入 CLOSE_WAIT 状态,B 仍可以向 A 发送数据。直到 B 发送完数据,B 向 A 发送 FIN,B 的 CLOSE_WAIT 状态结束。

算法题

输入正整数 N,然后对 1 ~ N 组成的序列做如下处理:

  1. 从左往右,删除第一个元素,之后隔一个元素删除一个元素
  2. 从右往左,删除第一个元素,之后隔一个元素删除一个元素
  3. 重复 1,2直到仅剩余一个元素

输出最后剩余的一个元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def solve(n):
   cnt = n
   l = 1
   r = n
   f = 1
   step = 1
   while cnt > 1: # l + step < r:
       if f == 1:
           if cnt % 2 == 1:
               r -= step
           l += step
       else:
           if cnt % 2 == 1:
               l += step
           r -= step
       f *= -1
       step *= 2
       cnt >>= 1
   if f == 1:
       return r
   else:
       return l

评论无需登录,可以匿名,欢迎评论!