记录一次阿里的电话面试

本文总结了一次技术面试的内容,包括TCP三次握手的过程、hash_map与map的使用场景对比、HTTP1.0与HTTP2.0的区别等。还讨论了auto关键字的作用、shared_ptr的概念及循环引用问题、进程间通信的不同类型及其区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        上周日,和钉钉团队的服务器组有一次电话面试。面试的知识点都很细,虽然之前都有深入了解过,但项目中没有使用,有些没能有效的回答出来。

现在把面试内容做一次记录,方便下次面试前准备下。。。

        1、tcp的三次握手详细过程。

             

  (1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=x,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
  (2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
  (3)第三次握手:Client收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给Server,Server检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

     备注:面试官会问,各过程的各标记为的使用情况。最好能把整个过程记住。

 

    2、hash_map 与map的使用场景。

        总 体来说,hash_map 查找速度会比map快,而且查找速度基本和数据量大小无关,属于常数级别;而map的查找速度是log(n)级别。hash还有hash函数的耗时。当有100w条记录的时候,map也只需要20次的比较,200w也只需要21次的比较!所以并不一定常数就比log(n) 小!

    hash_map对空间的要求要比map高很多,所以是以空间换时间的方法,而且,hash_map如果hash函数和hash因子选择不好的话,也许不会达到你要的效果,所以至于用map,还是hash_map,从3个方面来权衡:查找速度, 数据量, 内存使用,还有一个就是你的经验!没有特别的标准

 

    3、http1.0 与http2.0的区别

        1) 多路复用

        2)头部压缩与二进制格式

        3)服务端推送

 

    4、auto的作用

 

    5、share_ptr的介绍与循环引用

 

    6、进程间通信的种类与区别

 

     7、select、poll和epoll的区别

 

      8、假设现在一个服务器的cpu 100% 如何排查。

           我回答到了windbg,面试官又问windbg如何查看堆栈。 

转载于:https://www.cnblogs.com/xuhuajie/p/8607926.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值