1)tcp三次握手的过程,accept发生在三次握手哪个阶段?
2)Tcp流, udp的数据报,之间有什么区别,为什么TCP要叫做数据流?
3)const的含义及实现机制,比如:const int i,是怎么做到i只可读的?
4) valitale的含义。
5)OFFSETOF(s, m)的宏定义,s是结构类型,m是s的成员,求m在s中的偏移量。
6)100亿个数,求最大的1万个数,并说出算法的时间复杂度。
7)设计一个洗牌的算法,并说出算法的时间复杂度。
socket在什么情况下可读?
9)流量控制与拥塞控制的区别,节点计算机怎样感知网络拥塞了?
1)三次握手之后
第一次握手:客户端发送syn包(syn=j)到服务器。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。
三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。
2)tcp是数据流,udp是数据报,流无边界,数据报有边界.TCP是先进先出的,并且可靠.
3)编译器相关,优化可能让其直接转为一常量代入.(编译期间完成,可以用常数直接替换)
4)volatile吧,告诉编译器此处必须得从地址去取,不得作相关优化。千万注意,这里与硬件cache可不是一回事。
5)#define OFFSETOF(s, m) ({s s1;(void*)(&s1)-(void*)(&s1->m);}) /*gcc*/
#define OFFSETOF(s, m) ((size_t)&(((s*)0)->m))
6)建一个堆,先把最开始的1万个数放进去。以后每进一个,都把最小的赶出来。(考虑存储空间的限制)
7)产生2*54+rand()%2次交换,所有序列已经很接近平均分布(只要rand()满足均分),并且比较快。否则会是复杂度比较高的算法。我统计过。
不知道想问什么。
9)拥塞控制是把整体看成一个处理对象的,流量控制是对单个的。感知的手段应该不少,比如在TCP协议里,TCP报文的重传本身就可以作为拥塞的依据。依据这样的原理,应该可以设计出很多手段。(流量控制:控制连接的两端发送数据不要太快;
拥塞控制:控制连接所经过的路由器别超负荷;
感知拥塞应该是受到了ICMP抑制报文)
第8个问题就是在议协层来说,比如当缓冲区数据达到一定数量socket就可读了,除此之外还有对方把链接关闭了也可读。
2)Tcp流, udp的数据报,之间有什么区别,为什么TCP要叫做数据流?
3)const的含义及实现机制,比如:const int i,是怎么做到i只可读的?
4) valitale的含义。
5)OFFSETOF(s, m)的宏定义,s是结构类型,m是s的成员,求m在s中的偏移量。
6)100亿个数,求最大的1万个数,并说出算法的时间复杂度。
7)设计一个洗牌的算法,并说出算法的时间复杂度。
9)流量控制与拥塞控制的区别,节点计算机怎样感知网络拥塞了?
1)三次握手之后
第一次握手:客户端发送syn包(syn=j)到服务器。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。
三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。
2)tcp是数据流,udp是数据报,流无边界,数据报有边界.TCP是先进先出的,并且可靠.
3)编译器相关,优化可能让其直接转为一常量代入.(编译期间完成,可以用常数直接替换)
4)volatile吧,告诉编译器此处必须得从地址去取,不得作相关优化。千万注意,这里与硬件cache可不是一回事。
5)#define OFFSETOF(s, m) ({s s1;(void*)(&s1)-(void*)(&s1->m);}) /*gcc*/
#define OFFSETOF(s, m) ((size_t)&(((s*)0)->m))
6)建一个堆,先把最开始的1万个数放进去。以后每进一个,都把最小的赶出来。(考虑存储空间的限制)
7)产生2*54+rand()%2次交换,所有序列已经很接近平均分布(只要rand()满足均分),并且比较快。否则会是复杂度比较高的算法。我统计过。
9)拥塞控制是把整体看成一个处理对象的,流量控制是对单个的。感知的手段应该不少,比如在TCP协议里,TCP报文的重传本身就可以作为拥塞的依据。依据这样的原理,应该可以设计出很多手段。(流量控制:控制连接的两端发送数据不要太快;
拥塞控制:控制连接所经过的路由器别超负荷;
感知拥塞应该是受到了ICMP抑制报文)
第8个问题就是在议协层来说,比如当缓冲区数据达到一定数量socket就可读了,除此之外还有对方把链接关闭了也可读。