华为校招 C++岗面试经历总结【笔试+一面+二面+Offer】
沈塘大懒喵
前言
我报的是华为IT应用软件工程师,方向是C++研发岗,参加的合肥站的面试。总的来讲华为校招是我参加所有校招里面服务最好的,HR很贴心,业务很专业。
应聘经过
笔试
华为校招软开岗是3道编程题(用的牛客网的考试系统),我运气比较好,遇到的三道题都很水,PAT乙级水题的水平,第一道题是进制转换(10进制与26进制转换,然后加减)、第二道是超大数运算(直接使用string处理加减)、第三道题是图的遍历(DFS即可),一个多小时就做完了,3道题全AC。
笔试难度存在运气成分,听一个北京的同学讲,他做的就挺难的,一道Dijkstra算法应用,一道IP分组问题,直接崩溃……不知道是否和地域有关(可能是北京的大神太多了,出题难一点?),或者和个人运气有关,我和实验室的小伙伴,遇到的问题都挺简单的,几乎没有遇到什么高级数据结构的问题。
最后强调一点——千万别作弊!!!。我们学院其他实验室有个同学使用的场外助攻3道题都AC了,但是最后却没有收到面试邀请的同学,听华为内部的学长讲,大概率是代码被判定抄袭,一旦判定作弊,就一定会被拉黑,以后就很难进华为了。
如果题目很难,哪怕只做出来一道题,也有面试机会,所以最好还是不要投机取巧。
一面
笔试过了之后,大概一周之内,就会收到面试通知(短信+邮箱),面试时间距离通知时间一般1~2天。合肥站的面试通常在高速开元大酒店,华为财大气粗,场景布置的还是蛮好的,面试大厅外有休息场地,有零食吃……
进去之后先是一排HR小姐姐,刷身份证,然后自动排号,人挺多的,另外一个大厅是面试大厅,有几十个技术面试官,到后面会发现华为的校招体系,成熟而专业(顺便吐槽一下,百度的弱爆了……)。我运气比较好,遇到的技术面小哥哥帅气而贴心,问的问题都是我能够答上来的,下面根据当时的回忆整理一下。
Q:先介绍一下自己吧
A:我把简历递过去,然后自己简单介绍了一下自己,主要包括自己的专业技能、项目经历、获奖情况等。
Q:(似乎对项目比较感兴趣,边看简历边问)你先谈一谈你的项目吧
A:我的项目都是硕士期间依托实验室基金做的软件产品(一个Windows客户端,一个Android APP),因为大部分都是自己独立完成的,所以很熟悉,进入自己擅长的领域了,开心…我就简单的介绍一下基于欧拉放大(EVM)原理的心率检测技术的算法原理,以及对应的实现细节,着重讲项目用到的开源库OpenCV、Qt和FFMPEG等,以及在Android中使用NDK做C++的开发技术,把一些我认为是亮点的部分都详细说了一下,全程大约5分钟,由于提前准备过,所以说的很全面。
Q: 我是做C开发的,对C++不是特别熟悉,简单问你几个问题吧,说一下C和C++的区别?
A:从类、异常、友元、模板、STL等方面展开论述C++的高级特性,并适当举证,然后还说了一下面向对象思想。
Q:那你说一下C++的多态是如何体现的?
A:说了一下C++动态联编,函数重载和虚函数表等。
Q:谈一下你刚才算法中谈到的傅里叶变换原理?
A:我简单的说一下傅里叶变换以及项目中使用傅里叶变换做频域滤波,其实我说的不是特别详细,因为我本科是学计算机的,没学过信号系统,对傅里叶变化不是特别熟悉,但是我能感觉到面试官其实也不懂,所以说的就比较自信,他也没怎么从中挑刺,只是考察我对理论掌握的深度吧。
Q:你的项目中如何使用OpenCV库,都用到了哪些?
A:简单说了一下OpenCV中的高斯金字塔、理想带通滤波等,以及OpenCV提供的矩阵运算,相比于用数组或者Vector来实现图像矩阵运算,OpenCV的Mat类提供了更多功能。
Q:为什么测心率,会用到FFMPEG库?你用FFMPEG库做了什么?
A:因为Android平台支持的多媒体解码仅包括V8 V9 H.264等,OpenCV在Android平台上支持的视频编码格式比较少,MJPEG效果最好,需要使用FFMPEG把H.264转换成MJPEG等,然后我还主动说了一下MJPEG和H.264的区别,感觉面试官还是挺满意的。
Q:你这个项目中遇到的最大的挑战是什么?
A:讲了一下算法复现的遇到的问题,理想带通滤波处理视频的时候,视频是一个四维信号,MatLab里面是支持直接对四维信号做滤波的,但是OpenCV仅支持二维信号,MatLab中的fft函数与OpenCV的dft函数也不尽相同,然后从公式上验证对视频帧做像素平均的方案可行,就通过该方法进行降维,最后得到理想效果。
Q:为什么不考虑手动实现一个支持四维矩阵运算的快速傅里叶变换算法?
A:考虑过,但是因为项目当时比较紧,老板要求时间节点,所以就怎么快怎么来了……(面试官笑了一下)。
然后一面就结束了,让我问两个问题,我就问了一下,C++岗具体会做些什么工作,他说部门很多,每个部门都不太一样,他们部门是做底层驱动的,所以C语言用的多一点。
然后我又问,工作地点的问题,我报的杭州华为,但是之前上海华为给我打电话让我改投上海,是否意味着被调到上海了,他说这个问题可以留到HR面的时候再问,他也不是很清楚,但是上海比较缺人。
二面
二面是综合面,也有人说是HR面,但是我遇到的面试官,是个大妈,感觉更像是个PM,疯狂的问我产品功能,提需求……说话语气很不友好,有点压力面的感觉。说好的聊家常呢???
Q:(上来还是介绍自己+介绍项目)
A:和技术面差不多,和一面差不多。
Q:你这个算法的创新点在哪里?
A:一脸懵逼,握草,大姐,我是做产品研发的,不是搞算法的啊……但我还是说了说,把师兄的论文创新点说了一下,特征点跟踪+视频追踪获取更精准的ROI区域,等等……专业词汇比较多,我尽可能说的形象通俗一点。
Q:然后开始疯狂的问这个特征点跟踪……
A:简单的说了一下 特征点跟踪,这个其实是CVPR2013的一片论文,大改解释了一下其中的作用。
Q:你这个心率检测,为什么要用面部视频作为输入,腕部不行吗?脖子不行吗?
A:这个问题不太好解释,感觉是产品需求的问题吧,其实腕部和脖子也可以的,但是面部的特征点更好找,目前市场上的手环检测心率就是基于腕部的,大概这样解释了一下。
Q:那面部和腕部,相比,有何优势?
A:大致说了一下应用场景不同,但是面试官似乎不太满意,又追问了我既然腕部也能做这么好,为什么还要脸部,意义何在?我一脸懵逼,心里发虚,因为这个问题挺关键的,面部和腕部还有指尖比,确实没啥优势,但是这是实验室的项目,我决定不了怎么做啊,又不能就这么和HR说,停顿了一下,组织了一下语言,答脸部是比较热门的研究方向,在未来的研发中有更多可扩展的可能,腕部虽然比较成熟,但没啥可以突破的等等,说了一堆。但是不得不承认,HR这个问题一针见血,确实指出了这个产品的瓶颈所在。
然后下面就是聊家常了,问在校履历,成绩单,奖学金,期望工作地点和薪资,如何看待压力,如何看待加班等等……Nothing Special.
这里提一句,本科履历挺重要的,我本科过的比较一般,成绩平平,没拿过奖学金,也没参加过省级以上的比赛,太平庸了,研究生阶段的奖学金和比赛,又没啥说服力。感觉这是我只开到16K的重要原因之一吧。用人单位还是很看重本科时期的表现的。
然后就是回去等开奖了,整体来说,从笔试到一面到HR面,都挺顺利的,但或许只是自我感觉良好,因为最后并没有给出很高的Offer。
offer
华为开奖还是挺晚的,我是9月13号面完的,但一直到9月26号才进入备胎池,10月19号收到正式Offer,上海华为,白菜价16K,果不其然,还是把我从杭州调剂到上海了,工资评级不够高也就算了,毕竟我也不怎么厉害,但是工作地点反复强调不服从调剂,还是强行调到了上海,有点失落,遂拒。不过华为HR那种拼命三郎的敬业精神着实令人感动,我没去签约会,HR前前后后给我打了好几个电话,emmm……先说可以开18K问我去不去,我说我想去杭州,他们又说和杭州那边沟通过了,十分遗憾那边不缺人,然后就没有然后了……
总结
1. 总的来讲,华为软件开发岗不怎么难进,除非运气很差,遇到的面试官提问巨难,表现的不好,否则一般都能以白菜价拿到Offer;
2. 提前批比正式秋招要有优势,如果想去杭州、南京这种招人很少的非一线城市,建议早点准备参加提前批,有个小伙伴拿到了杭州华为的Offer,18K,就是提前批进去的,目前我还没有遇到正式秋招进杭州华为的,招人确实不多。如果有条件参加实习就早点去实习,大概率SP;
3. 技术水平+学历背景决定能否拿到高水平的Offer,相对而言,好学校的硕士生,拿到SP/SSP会容易一点,我认识很多双985硕士,技术水平没啥特别优势,但是基本上都上20K了,而一些双非技术大神,白菜价的多一点……说不看学校,那是自欺欺人……
4. 拿到Offer之后,华为会逼签三方,我们这边都是通知拿着三方去谈薪资,否则免谈。听别的小伙伴讲,华为大概率不接受违约,尤其是如果你已经签了ZTE,HR明确表示不要。
5. 谈薪资也充满了无限可能,有个小伙伴把16K聊到了20K,也是蛮厉害的。