2018百度校招面试总结
- 目前走流程到二面, 写一波面经希望能够收到三面通知, 上天请赐予我运气和力量吧;
- 校招走流程的两个面试官都很nice, 比较随和, 面试体验非常好;
百度一面
- 在酒店一楼等面试官通知, 叫到名字就坐电梯去对应房间号面试;
- 交完简历, 面试官会安静的浏览简历(这时候比较尴尬, 只有静静的等), 然后面试官会让你简单的自我介绍;
- 面试官后面会对感兴趣的项目进行细节询问, 大致包括:
- 解决一个什么问题;
- 项目的背景;
- 数据处理流程;
- 大概的项目框架;
- 自己对整个项目的理解;
- 涉及到的问题, 怎么决绝的;
- 在交流过程中, 面试官透露他是无人驾驶团队的, 还给我说了估计百度来的面试官只有他能听懂我的项目, 如果我去面后台开发很悬;
- 结果4点的时候去面百度云的时候, 真的是被问成SB了, 就差点点就哭出来了, 自己后台开发的基础太差, 而且没有相关的项目经历, 很难;
- 后面聊着聊着, 面试官画风一转, 我们写两个程序吧, 接下来就开始手撕代码了;
- 第一题, 他说先来个简单的吧, 把随机数组的奇数放数组的前面, 时间复杂度为O(n), 空间复杂度为O(1);
- 刷过题的同学, 肯定都知道怎么做吧, 我是用双指针的方式来解的, 如果是奇数就交换, 但这种方法不能保证原来的顺序;
- 牛客网的剑指offer是用堆排序的思想来做的吧;
- 第二题, 求两个单链表的交叉点, 我理解题意有点问题, 我开始以为只有一个交点, 后面面试官说相交后的节点就全部相同了;
- 如果刷题多的同学, 应该看一下就知道答案了吧;
- 我是用差值来做的, 找到第一个链表的长度, 找出第二个链表的长度, 求出其差值;
- 长的先走差值这么多步, 然后长的和短的一起走, 相遇的第一个结点就是交叉点;
- 如果不相交的话, 就直接返回空即可;
- 一面面试官真的很nice, 当时自己水落下了, 回去还找他拿水了, 反正给我的感觉他很好;
百度二面
- 百度二面, 最开始自己还是很紧张的, 因为自己真的很菜(哭泣), 但面试官人很好, 随时笑呵呵的, 特别随和, 好像是做手机百度的内核大佬;
- 开始的时候都是差不多, 先浏览简历, 然后自我介绍, 再然后就是问一些技术细节, 这次面试, 细节问得比较多, 已经完全深入到了内核实现原理什么的了;
- 最开始看我带了一个可穿戴的表过去, 就问了实现了那些功能, 具体怎么通信, 线程的调度, 锁的实现, 事件的实现;
- 然后听到我说后台数据是用python来分析, 就问我是不是对python是不是特别熟悉;
- 这里一定要实话实说, 我说我没有可以的学习python的一些语法和用法, 只是当时用python的pandas的库来做数据的处理;
- 然后他就问我小文件怎么处理的;
- 正则表达式怎么用的;
- 然后问我怎么实现一个tail的功能, 即读文件的时候实时地只显示后5行;
- 我开始说用队列来做么? 他说是实现这个功能的大致流程, 不是具体实现;
- 然后问我知道文件的换行符不?
- 我说'\n', '\r\n';
- 然后面试官很nice的给我解释, 一般Linux系统下都用'\n', window下才会用'\r\n'做换行符;
- 然后我补充到文件的结束符为'EOF';
- 面试官看我项目中用到了epoll机制, 就问我还知道除了epoll的其他机制;
- 我就讲了一下epoll, poll, select的来历, 作用和区别;
- 还讲了内核实现epoll的大致流程;
- 面试中发现, 回答面试官问题的时候, 如果不主动的去扩展知识点的话, 会显得很被动, 会被面试官带着走, 那样的话基本算是一次失败的面试;
- 然后看了看我简历上还写了内存管理和Linux的IPC, 就叫我讲讲;
- 然后我就讲了一下, Linux内核的分段和分页, buddy子系统, slab分配器(高速缓存), kmalloc, vmalloc;
- 进程地址空间的分配;
- IPC通信大致讲了, 为什么需要IPC, 有哪些IPC, 选了一个消息队列, 说了一下他的内核具体是怎么实现的;
- 后面面试官看了一下时间, 说那行吧, 我问问你算法吧;
- 出了一道大数相加的题目, 叫我实现时间复杂度尽可能地小;
- 我的思路大致是找到最长的字符串;
- 每次只循环短字符串的长度, 相加, 算进位标志;
- 如果进位为1, 继续相加到不为1;
- 面试官还给我说了另外一种解法, 短的字符串补0, 来做;
posted @
2018-09-18 15:10
coding-for-self
阅读(
1136)
评论()
编辑
收藏
举报