校招告一段落,将这一年多来的面试经历做一总结。在求职过程中,我还算幸运的,也可能是自己比较懒,所以面试的公司比较少,本篇先总结实习的求职经历。
其实在研一下学期还比较迷茫,没想清楚自己毕业到底要去做什么,互联网?国企?银行?读博?有很多选择,也想过很多。后来想,不管以后做什么,计算机专业的基本功还是要打牢,于是开始刷题、学C++基础知识;学了一段时间,听了一些师兄师姐的求职分享会,又想不论以后去哪个行业,有一段好的互联网实习经历都是加分的,于是准备投入精力找一份实习。
找第一份实习时大厂只面试3家,百度、滴滴、头条,很幸运前两家都通过了,头条由于方向不同面得不好挂了。百度的部门是垂直行业搜索部,滴滴的部门是滴滴研究院,后来考虑再三,第一份实习选择了百度,以下是面经。
1、TCP三次握手、四次挥手,细节,解释SYN、ack等的状态分别是什么,四次挥手若客户端一直不释放,服务器端会怎么样?
2、多线程、多进程,详细解释,解释物理地址和逻辑地址
3、算法:给定一个10^8的数组,求每一个元素后面第一个比它大的元素,复杂度要求O(n)
4、算法:实现最近最久未使用(LRU)的cache,并且可以快速查找值
一面
1、自我介绍,选一个项目介绍:我就介绍了一个,面试官说细节不用解释啦,反正我也听不懂,做题吧。。。
2、算法:求二叉树的宽度,一定要先说思路再写,重要!!!顺利写出
3、算法:一个N位的二进制数(011010),求它的前缀中1的个数比0的个数多的输出。前缀是指(010)的前缀有0,01,010三种,提示了依然不会。。。
二面
1、自我介绍
2、项目中用到的算法:我说排序,还问机器学习深度学习研究吗,我说了解一点
3、C++中的虚函数怎么实现?
4、构造函数的初始化方法?构造函数初始化列表中的变量初始顺序?
5、static数据成员如何定义?
6、菱形继承怎么解决?
7、多态是什么?怎么实现?
8、多态中使用父类的指针指向子类的对象,可以用父类的引用吗?
9、算法:一个m*n的矩阵,只能向下和向右走,从左上角的位置走到右下角的位置一共有多少条走法?(动态规划)
10、算法:上一个题的变形,一个m*n的矩阵,每一格中都有一个值,只能向下和向右走,从左上角的位置走到右下角的位置经过路径的最大和?(动态规划)
一面:
1、先自我介绍,介绍完问什么是3D shape partial registration
2、c++中值传递和指针传递的区别(没回答好)
3、什么是虚继承
4、什么是纯虚函数
5、带有纯虚函数的类能不能初始化
6、多态的实现原理(虚函数)
7、虚函数表是在类中,还是对象中?为什么?(没回答好)
8、算法: 分割字符串为回文串,输出所有分割方法(不会)
9、算法:字符串s按照单词进行反转(用栈实现)
10、会不会git?
11、实习时间
第二份实习是2018.04找的,也就是春招,今年春招算法岗真的是难找,我投了很多简历,一共面试了3家,滴滴、美团、微博,很幸运都通过了,最终选择了滴滴的智能出行部,以下是面经。
一面:
1、实习介绍,主要是实习期间的工作内容,我说他听,问题很少;
2、科研项目介绍,介绍了简历上第一个,面试官虽然不是领域的,但问得很到位;
3、Q:C++中的vector 是怎么实现的?
4、define和const 的区别,define是在什么阶段替换的
5、malloc()和new的区别
6、进程和线程,进程间通信方式
7、python多线程编程了解吗?不了解
8、Linux基本命令,除了ls cd之外
9、LR的损失函数
10、梯度下降的过程
11、SVM与LR的区别
12、学习率的选择对LR的影响
13、编程题:一个递增的数组,有负数,返回数组各数绝对值后的去重的数量,比如[-7,-5,-4,-2,-1,0,1,2],返回7
写出来之后,又给出了进阶版,如果数组是非递减的呢?比如[-7,-5,-4,-2,-2, -1,0,1,2, 2]呢?
二面
1、自我介绍
2、讲到学生工作,讨论如何平衡工作与学习(面试官觉得想要基础扎实,必定要投入大量的时间)
3、问我打基础时候最有成长的是哪段时间?为什么是那段时间?
4、个人优缺点
5、编程题:一个二维数组,从上到下是递增的,从左到右是递增的,给定一个整数,判断这个整数在不在数组中。
6、智力题:一杯红墨水,一杯黑墨水,拿一个小勺子将红墨水中舀一勺到黑墨水的瓶子里,搅匀后再从黑墨水瓶子里舀一勺到红墨水中,问最后两个杯子中红墨水的量和黑墨水的量的大小关系,用数学公式推导。
进阶:如果是10个红球和10个黑球,先取两个红球到黑球中,再从现在的黑球中取两个到红球中,最后红球和黑球的数量关系呢?
再进阶:墨水问题如果不搅匀呢?
以上三个问题的答案都是相等,面试官给了提示,但也限时。
7、Linux的基本命令,vim的基本命令
8、还有要问我的吗?问了转正和工作内容两个问题
一面:
1、实习经历
2、手写代码:一个字符串,删除“ab”和“c”两个子串,要求时间复杂度O(n),n是字符串长度。
用栈实现,判断栈尾是否是"a",判断当前元素是否是“b”,如果是,栈顶元素出栈;
否则判断当前元素是否是“c”,如果是不操作;
否则当前元素入栈,最后全部出栈反转就是结果。
3、LR手推过程
4、梯度下降的过程,alpha怎么确定,有什么影响
5、LR模型怎么评估,AUC是什么
二面:
1、三个科研项目介绍
2、手推SVM
1、项目介绍,实习经历
2、手推LR
3、笔试:题目比较多,涉及sql、算法等
4、介绍公司业务
总的来说,两份实习的面试过程还算是顺利,也可能是自己幸运的缘故,当然,也跟前期的准备有关系。