渣硕面试经历
标签(空格分隔): 学习笔记
一直在犹豫要不要写个面经,毕竟不是dalao,但是感觉我的情况应该是大多数人的状况,写出来还是值得一丢丢参考价值的。
先说一下自己的背景,本科在西电读的英语专业,拿了文学学士..大三的时候心血来潮考了个硕士,考了西电的电院,硕士期间主要做的方向是图像处理,到研二下开始入了深度学习的坑,用tf搭网络,跑跑数据集什么的。
总结起来就是,硕一的时候就是个连hello word都能写出bug的渣渣,然后自己学了c++,做了一个项目(代码量在2W行左右),稍微懂一些图像算法,最后又写了些python和tf。勉强能达到中等水平吧。
第一次面试: vivo公司,岗位是图像算法岗,结果是给了sp。
vivo的提前批是真的早,在5月20多号就来了,记得当时是班长在班里的群里面发了一个招聘vivo的招聘广告,打开还是个word,更别说什么招聘海报了。我也就扫了一眼,填了个软件开发c++岗就投了个简历。过了一个礼拜左右收到了笔试通知,慌的一匹,啥都没准备,点开答题页面,小伙伴一边帮我百度,我一边填。最后只有一道编程题,求鞍点,写了个3重循环就交上去了。vivo效率是真高,晚上12点左右收到了第二天下午面试的通知,啥都没准备,我就抱着试一试的态度就过去了。第一面是技术面,一上去我就开始讲我的项目,说在研究生期间做了一个图像综合质量提升的软件,软件的架构是怎样的,图像提升用了什么算法,然后开始讲算法了,5分钟左后,面试小哥哥打断我,问我以后想做什么方面的软件开发,是移动应用的软件开发?还是关于图像处理的软件开发?我说做图像软件,他说我的知识背景和他的不太match,然后推荐我到图像算法岗。到了图像岗,发现面试小哥哥对我做的东西特别懂,我给他介绍了我做的HDR,做的图像超分,图像去雾,介绍了双边带滤波和导引滤波,还说了这两种滤波用c++的多线程实现。完事了,让我现场看了一篇scene parsing的论文,给了8分钟让我讲清楚论文说了啥,主要创新是什么,问我能不能用tf搭一个。应该算是聊的比较愉快,当场说有时间的话让我去实习。二面就是hr面了,很轻松,就是问我在项目里面最值得表现的是哪个模块,问工作城市什么的。在强调一遍,vivo效率是真高,当天晚上就说通过了,让第二天去签约两方。给了sp。
第二次面试:中兴公司,岗位是软件开发岗,结果是给了蓝剑。
中兴的提前批也很早,vivo刚收到sp中兴的面试通知就来了,一面聊项目,项目聊完了聊中兴的算法比赛。问了两个问题:
1)c和c++的主要区别,我就说了面向过程和面向对象。面向对象的三要素,面向过程的函数模块。
2)用c怎么实现c++的private变量功能。我不会,面试官给我解释了用c语言的结构体tag。
二面综合面,直接瞎扯,问为什么要留西安呀,说工作10年了没有工作激情怎么办呀,怎么处理刚到公司的自我认知问题呀什么什么的。估计是和面试我的那个大叔聊嗨了,大叔一直和我聊得特别嗨,说看到我就像看到年轻时的自己。
然后没几天通知三面了,面试官是两个年龄比较大的大叔,三面还是聊了聊项目,没问啥有营养的问题。莫名其妙的得了个中兴模拟招聘大赛的六强。然后就被通知进入蓝剑资源池了,然后就被中兴莫名其妙的安排了4场面试。这里真的想吐槽一下,老校区到中兴公司往返车程要2到3个小时,前提是不要堵车。每次都是早上打电话,问下午有没有时间安排面试,每次都自己挤916,跟友商和其他互联网公司对待应聘者的态度差太远了。这也是我不想去中兴的一个小原因。
第三次面试:华为公司,岗位是软件开发,结果给了sp(16)
参加了华为的优招,7月14号那一批。面试也就两面,很轻松。面试官也没考察基础,一直聊项目,问的很细,只要项目自己做了,回头再整理整理,应付他们还是很轻松的。值得强调的是一面面试官问了我专利,我讲了专利之后,他问我怎么证明别人侵犯了我专利,我的天,我怎么知道,我只管写,没想过还有人会侵犯我的渣渣专利,我就问他的专利是怎么证明的,他说他也写过图像算法专利,如果对图像检测特征点,如果所有特征点和他的专利处理后图像检查出来是一样的,并且特征描述也一样,就可以告别人侵犯专利了,我当时就说了,还有这种操作。感觉他挺不满意的,就说西电有个很厉害的学长叫林锐,出了一本c++编程规范,让我回去好好看看。二面是boss面,相当轻松,我说我本科是英语专业的,到研究生期间自学了很多东西,写过项目,有两万的代码量,之后就开始闲聊了,问我导师,问我们实验室团队。最后很开心的给我直接说,在我这,你肯定是过了,我帮你把工作地点选在西安呀。开心坏了。
强调几句:都说华为的面试状态可以看网页源码,有个mid_test是1的话就代表综合测评挂了,我一直是1,没有叫我重测,最后还是给offer了,所以这个是不准的。
关于华为提前批:参加提前批的时候,师兄们都说华为提前批会影响秋招,华为HR一直强调说不会影响。就我看来,什么屁提前批嘛,7月14号面试,9月22号给结果,提前批和秋招一起发offer。所以呀,我是觉得,能参加提前批还是参加吧,提前批总体薪资会高一点。在说几句,中兴华为不像前几年那样偏爱西电学生了,这两年招的西工大和西交大学生越来越多了,再加上华为这几年离职的人也少了,华为缩招不少,所以呀,别轻易说拿华为保底哦。
第四次面试:58同城,岗位是机器学习算法岗,结果通过。
58也报的提前批,印象最深刻的就是58的笔试,题量是真的大,20道填空,2道编程,5道简答,1道综合论述题,还不能粘贴复制。在小伙伴的助攻下,勉强按时间答完了题。通知视频面试,视频一面是一个东北小哥哥,也不问项目。问我熟悉哪些机器学习算法,由于第一次面机器学习算法岗,准备不是很充分,我就说机器学习我没有做过具体的项目,我做的项目有跟深度学习相关的,搭建resnet做图像重建什么什么的。然后提了一下k-means,knn,decision tree.估计也是看出来我不太会机器学习,就问我怎么解决过拟合问题。我回答了三点:增大数据量,提前终止,加正则项。追问正则项,我回答l1,l2正则,说了他们的特点和优缺点。然后又问工业界是怎么解决正则化的, 给提示说集成学习。当时真没复习到这,我就扯了点深度学习里面的dropout。它又问了boosting和bagging的代表算法,还好我记得adaboost和随机森林(我不知道这就是他说的集成学习),问随机森林怎么保证每棵树的多样性的,我的天,又不会。之后问了机器学习模型的评价标准,我回答了PR曲线,然后他问我ROC曲线和AUC,以及AUC的物理意义。照样不会,我的天,真的是菜。本以为会挂,结果3小时之后,说让我准备第二天的二面,二面的面试官是个大叔,还是视频面,先聊项目,项目聊完了问我熟悉哪些机器学习算法,我说了好几个,他从我说的里面挑了SVM让我推导,刚好一面之后我连夜把李航的机器学习从头看了个遍,哗哗的列了一堆公式,在视频面前指着给他讲完了。好像他还比较满意,后面也没继续问SVM。就考了一个题,有10亿的用户浏览记录,每个用户对应一个32位无符号ID,问怎么快速找出连兰次数最多的前100位用户,说实话,我是很懵的,就说用hash,这一类题建议大家还是去百度一下,我当时答得很差,就两种方法(hash和bitmap)。之后问我深度学习用的什么框架,我说tf。hr面就很简短,我也没想去58,就直接跟hr说了。
第五次面试百度,岗位是软件开发,结果是二面跪。第六次面试腾讯,岗位是PC端应用开发,结果是一面就跪了。
这里没啥多的要分享的,面试之前我把数据结构(链表和树的代码要相当熟悉,1分钟写出来不带bug的那种熟悉),基本算法(二分查找,快排,归并,堆排),c++基础(多态,动态绑定,内存管理,智能指针,static,引用),还有进程线程模型,特别是多线程(生产者消费者模型)都记的很清楚了。百度3到代码题,第一道翻转二叉树,第二道数组去重,第三道c++的shuffle。腾讯问了我内存管理,问了堆申请的是虚拟内存还是物理内存,问了栈为什么小,问了生产者消费者模型的lock free解决方案,还问了map和unorderd_map的原理。看出差别来没有,面试BAT之前一定要做好充分准备。
最后推荐一下:
如果你想面机器学习算法岗:推荐李航的《统计学习方法》,周志华的《机器学习算法》就是西瓜那本书,刷一刷kaggle的数据挖掘的题,面试的时候要讲清楚你是怎么清洗数据的,怎么构建算法的,连续数据是怎么离散化的,用了哪些过拟合和欠拟合策略,最后再说说你是怎么评价的。
如果你想面试软件开发岗:数据结构(秒写代码),操作系统(进程线程),c++/java(oop思想),多线程(lock free多线程,lock)。
希望对你有点帮助!