一面(1h3min)
- 自我介绍
- 面试官问我是想按照实习标准还是校招的标准来面试?(???我不是投递的是校招吗?)你想按照校招的标准也可以,那你如果面试通过可以提前来实习吗?
- 看了你的博客,既然是你写的那你应该比较熟悉,我就从里面找一些相关的问一下吧。
- 你哈希写的挺多,应该比较熟悉,那我就问一下哈希相关的。
- 在你的概念中,你是怎样理解哈希的呢?
- 面试官给我讲了一下他对哈希的理解。
- 哈希算法有什么限制吗?
- 哈希冲突是啥?那你是如何进行解决的呢?
- 一次/二次探测中的 i 具体是个什么呢?i 每次都会递增是吗?i 具体是怎么变化的?i 是对于整个结构来说还是对于每个冲突元素来说?
- 如果第一次冲突在0位置后放在了1位置,如果下次1位置再冲突了会对零位置上的i进行递增吗?
- 二次探测相比较于一次探测它的优点是啥呢?
- 哈希表中每一个元素存的是啥呢?如果在查找的时候,本来映射在0位置,但是0位置冲突了,接下来会怎么去找呢?通过哈希函数映射在0位置的时候,它是怎么知道此时这个0位置冲突了该去下一个位置去查找呢?
- 哈希中如果想删除某个元素有什么限制和条件吗?enum State{EMPTY, EXIST, DELETE};
- 哈希表触发扩容的条件是什么?是存满了就会触发扩容吗?扩容每次是怎么增加的?
- 1.5倍和2倍你觉得那个更好,它们各自有什么优势吗?
- 哈希表中每次扩容进行重新哈希映射的时候消耗比较大,如何解决?(面试官提示我用位运算)
- 如果我想在扩容的时候简化哈希的运算步骤,不需要重新对每一个key进行重新哈希运算,而是直接想要找到它在某个位置具体怎么做呢?(面试官提示我想想位运算和哈希的扩容机制)
- 哈希的优化有很多种方式,你有兴趣下去多研究一下。
- 冒泡排序的实现,如何进行优化?
- 归并排序说一下,如何实现?归并的时间复杂度是多少?复杂度是怎么算出来的?
- TCP的头部格式是怎么样的你给我说一下?然后面试官给我详细的说了一下?
- 你了解ACK,它是干啥用的?如何进行回复的,怎么判断的呢?
- 你博客提到了三次握手、四次挥手说一下吧。
- 三次握手中序号、确认序号了解吗,它们各自是怎么生成的呢?TCP中设计这两个的原因是什么呢,是为了解决什么问题呢?是怎么确认是否丢包的呢?
- 由于网络的波动导致数据包有的早到有的晚到,假设客户端它应该收到应该是 100+1,但是确收到了90+1,这个时候客户端应该怎样处理呢?
- TCP和UDP的区别?
- 在TCP面向连接过程中,一台主机能建立TCP连接肯定是有数量限制的,但是一台主机最多能够建立多少个TCP连接?
- 一个客户端的端口号最多是2^16个,ip最多是 2 ^32个,如果一个服务器的最大连接数可以超过这两个数的乘积吗?
- C++当中的多态实现方式有几种?
- C++中的静态类相对于普通类有什么限制呢?
- 静态成员相对于非静态成员有什么区别呢?
- 非静态成员函数调用静态成员函数时是采用什么方式来调用?
- 国家都有省,市,区,镇,街道这些划分,如果我现在想让你设计一个类,你大概是怎么设计这个类,你说一下你的思路。
- 我感觉我问的挺多了,你有什么想问我的,或者想说一下我没问到的东西吗?
二面(39min)
- 你简历上的都熟悉是吗?
- 给我讲讲TCP/IP的五层模型吧。
- 这个五层模型和七层模型、四层模型有啥区别?
- 你在访问“www.baidu.com”的时候,这些网络数据报具体都是怎么传送的,都具体做了什么?
- 你在学校用的内部网络对吧,一般来说内部网络是没有公网ip的,假设你现在处于这个内部网络里面,这个时候你这个数据包是怎么发给百度的,百度是怎么响应你的?
- 数据包从百度返回给你电脑的过程,哪些步骤会更改你数据报文当中的地址呢?
- 在数据报文传输的过程中,mac地址会发生改变吗?具体是怎么改变的呢?数据报文从百度回来的时候会发生这个过程吗?这个时候是谁在发送ARP请求呢?
- http和https有啥区别呢?
- https加密的数据在中转的时候会被第三方捕获吗?
- 那你知道中间人攻击吗?
- 你是研究生毕业还是本科毕业?平时写语言C++多还是C语言多?
- 操作系统当中的页是用来干嘛的?
- 知道什么是虚拟内存吗,你给我讲一下?虚拟内存有啥好处呢?
- 你这个高效内存池里边有没有什么高效的替换算法呢?无论如何内存都是有限的,当内存满了以后你是怎样进行释放的?
- 你知道LRU算法吗?
- 假设让你做一个遍历出有序的map的话,你会怎样做呢?
- map和hashMap他们的区别是怎么样子的。
- 你能实现一个hasMap,使它遍历出来有序吗?
- 你对分布式的东西有了解吗?了解数据库吗?
- 当我们进行函数调用的时候,操作系统帮我们做了哪些事你知道吗?函数调用发生了什么?函数的参数是咋传进去的?实参是怎么传递给形参?实参是形参的一份临时拷贝,那是谁从哪里拷贝的?函数调用完毕以后是咋回到原来的地方继续执行的呢?
- 消息队列用过是吗?说一下
- 你知道跳表是啥吗?(面试官提示我这是一种数据结构,我以为是路由器当中的跳表说错了)
- 那你知道优先级队列吗?它的实现具体是怎样的呢?实现的优先级队列的时间复杂度是多少知道吗?
- 你觉得你还有没有比较优势的地方我没问到呢?
- 反问
- 如果不给你校招offer的话你是不是就不会来实习了?学校允许你们提前出来实习吗?(后面说先给实习offer,去公司以后再发正式offer,感觉有点坑拒了)