百度一面 JAVA后段
一面(1h20min) 首先就是根据简历自我介绍了,最后问了一句为什么不是学计算机的想搞这个,随便扯了一下,然后介绍了自己自学的内容。 介绍下stl里面有多少种容器,各自的特点是什么? 答:说了vector、list、deque、map、栈和队列、哈希表,然后分别说了它们的存储特点,在内存中是怎么实现增加、删除操作的,主要是说下扩容的时候怎么处理,以及新元素进入之后的存储方式。 刚才说了map和哈希表,介绍一下怎么实现的? 答:然后就说了底层是有两种方式,一是红黑树、然后还有就是哈希表,哈希表使用开链存储的方式解决冲突的,说了红黑树的基本特性,然后问一下红黑树怎么保持平衡,写了一下红黑树的四种旋转的代码中最简单的一个(让我自己选得,哈哈),然后问了红黑树和二叉平衡树有什么区别,然后说了二叉平衡树的要求,然后平衡严格度高于红黑树,写了二叉平衡树的节点结构,写了二叉平衡树的左旋代码。 介绍一下CNN、LSTM?(因为提过自己做过一些相关的) 答:然后就说了一下CNN的卷积层、池化层,说了一下怎么分类,然后介绍了LSTM的记忆单元和作用。 介绍一下排序算法? 答: 然后把所有的排序算法都说了一遍,然后让我写了一个快速排序,问我怎么保证选择的数字比较优秀,这个刚好之前看过,就说了一下三个数选择中位数的那个优化办法,然后又写了一下swap函数。 介绍一下图和图的遍历? 答:然后就说了图有领结矩阵和邻接表两种方式,然后说了深度优先遍历和广度优先遍历。 问了一些计算机网络和操作系统和设计模式的? 答:当然有鼎鼎大名的三次握手和四次挥手,还问我各个环节出现各种情况,计算机是怎么处理的,比如第几次握手的时候失联,问了一些http的内容。问了设计模式单例模式(我自己说的我只对这个了解),说了一些线程和进程,两者怎么通信。 一面基本就到这里了。