zoukankan      html  css  js  c++  java
  • 记录一次阿里的电话面试

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

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

            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如何查看堆栈。 

  • 相关阅读:
    用Struts2框架报错:The Struts dispatcher cannot be found
    Struts2.0笔记二
    [转]使用Struts 2防止表单重复提交
    Struts配置文件报错"元素类型为 "package" 的内容必须匹配"
    Java基础知识
    Struts笔记二:栈值的内存区域及标签和拦截器
    [转]迭代器
    Struts笔记一
    账户注册激活邮件及登入和注销
    EL表达式获取对象属性的原理
  • 原文地址:https://www.cnblogs.com/xuhuajie/p/8607926.html
Copyright © 2011-2022 走看看