百度现场一面

2018-09-15  本文已影响0人  cmyin

早上去洪广大酒店去面了百度现场一面,C++研发岗。
我前一个室友面了1个小时多,结果我只面了40分钟,有点奇妙。

僵尸进程和孤儿进程,怎么解决的?

正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。

信号有哪些,kill发送的是什么信号?

https://www.cnblogs.com/niupan369/p/4119607.html
感觉有点太偏了。

TCP模型画一下,分别描述。

https://blog.csdn.net/u012501459/article/details/48178065

image.png image.png image.png

TCP和UDP的区别。

拥塞算法描述。

  1. 慢启动
    当新建连接时,cwnd初始化为1个报文段(MSS)大小,发送端开始按照拥塞窗口大小发送数据,每当有一个报文段被确认,cwnd就增加1倍。这样cwnd的值就随着网络往返时间RTT呈指数级增长.
    这里设置了一个慢开始门限ssthresh。
    cwnd < ssthresh时,进行慢开始算法。
    cwnd>ssthresh时,进行拥塞避免算。
    cwnd = ssthresh时,两者皆可。

  2. 拥塞避免
    每个轮次结束都让cwnd增加一个,而不是一倍,增加的更加缓慢。
    不论是慢开始还是拥塞避免只要网络出现拥塞(没有按时到达)时,就把ssthresh的值置为出现拥塞时的拥塞窗口的一半,以及cwnd置为1,进行慢开始

  3. 快重传
    发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。

  4. 快恢复
    不从慢启动重新开始,门限设置为窗口的一半,从门限开始拥塞避免

快重传和快恢复往往配合一起使用。了解的不够精确,再看一下。

char * p = 0xFFFFFFFF;
long long a ;
try{
  a = *(long long *)p;
}
catch(long long ){
  cerr << "32 bit machine" << endl;
}

看网上还有0xFFFFFFFF+1来跟~0比较的,感觉应该是不行的。

后来同学说无法访问程序地址空间外的地址,因为没有页表。
不用sizeof的话可以类似输出指针的地址差值?

说对我项目不熟,聊了一下redis。

redis的sorted_set底层是怎么实现的,然后引申到跳表,讲了一下跳表的实现,查找,插入等复杂度。最后问了跳表如何增加层数,我说是概率p,redis是0.25,指针数量每个就是1.33,具体怎么算忘记了。

了解一下跳表怎么增加层数的。

写二分查找。

挑了我溢出的刺,(left + right)可能溢出int 还有单个元素的时候考虑不周。

上一篇 下一篇

猜你喜欢

热点阅读