前言
我参加的是VIVO合肥站校招,报的是VIVO杭州C++开发岗,VIVO今年貌似挺缺人的,听HR讲,他们的业务去年涨了170%,貌似明年布局更大,所以今年疯狂招人,研发岗全国范围内招了好几百。换言之,挺好进的。
原本压根都不知道VIVO校招的事情的,但是实验室的小伙伴推荐给了我,因为我想去杭州,而杭州C++岗位又贼少,VIVO居然在杭州招C++,于是报了一波,没想到最开始并不在意的企业,反而无心插柳,成了归宿。
应聘经过
笔试
VIVO的在线笔试系统用的自己的系统,题目挺简单的,25道选择题,10道填空,3道问答题,范围覆盖C++、Java、计算机网络、Linux、离散数学、数据结构、数据库等,相当全面,但是也比较简单,问答题中,一道题是Linux指令,两道编程题,分别是字符串处理和链表逆置查找共同结点,不是很难,但是时间比较紧,考试时间70分钟。
一面
VIVO的校招效率很高,第二天就给我面试通知了,包河万达富力威斯汀酒店,沃德天,我无数次从万达路过这个酒店,没想到居然能进去坐坐,还是蛮激动的,毕竟算是合肥比较顶级的酒店了。
进去之后先是一排HR小姐姐(emm……VIVO家的小姐姐颜值挺高的……),电子签到,之后进入排队系统,排队是在3楼的水木厅,面试地点是根据分配的面试官,直接带到面试官的房间,不得不说,五星级酒店,挺豪华的……
首先还是万年不变的介绍自己,我先把简历递了过去,然后按自己准备的说,很快就说完了。
面试官是个小哥哥,挺帅的,有点高冷,听我介绍完之后,直接把我简历放到了一遍,然后开始问问题——
Q:你说你是学软件工程的,你说一下你对软件工程这门课的理解吧?
A:有点意外,没想到他会问我这个问题,hold住,不能慌,我先跟面试官说“这门课过去好久了,我先回忆一下”,然后疯狂的组织语言,软工这门课,讲真,背的挺多的,但是都忘掉了,而且我学得也不好……怎么办呢?我觉得他应该不是考察我对某个章节,或者某个概念的理解,而是对整个软件开发过程方法论和工程化的理解,于是想了大概30秒,我就从需求分析、概要设计到详细设计等过程,完整描述一款软件从需求提出到产品上线的流程。可能某些词汇不怎么专业,但是貌似面试官还挺满意的。
Q:那你说一下你们是怎么做需求分析的吧?
A:握草……画风不太对,怎么一直问我这种概念,说好的手撕代码呢?这下真的懵逼了,其实在实验室不怎么做需求分析的,基本上不都是大老板一句话的事嘛。但显然不能这么交代,于是我大致回忆了一下需求分析了内容,然后发挥想象力,说我们先会和项目甲方进行沟通,先用自然语言记录甲方需求,然后小组讨论,对需求进行建模,问题具体到细节,同时定义软件开发的相关模式和流程……blahblahblah说了一堆,面试官也没挑刺,不置可否。
Q:(看着我的成绩单)人工智能考得挺高的,你们学人工智能都是学些什么?
A:继续懵逼……根据回忆说了一下人工智能的课堂内容,其实这门课是导论形式的课,并没有什么干货。当时贼怕他问我具体细节,不过好在后面没继续问。
Q:说一下struct和class的区别?
A:终于变得正常了,就怕你不问我编程语言……从访问权限、友元、继承、虚函数表等说了一下两者的区别。
Q:一个空类,会生成哪些成员?
A:构造函数、析构函数、拷贝构造函数、以及拷贝赋值函数。
Q:必须在构造函数初始化式里进行初始化的数据成员有哪些?
A:常量成员、引用类型、对象成员
Q:说一下虚函数吧?
A:简单说了一下虚函数表在C++类继承中的语法规则,函数重写,以及如何体现多态等。
Q:说一下static的用法?
A:简单的说了一下static在局部变量、全局变量、类成员变量的不同作用。
Q:如何防止重复引用头文件?
A:预编译指令#ifndef和#endif,然后还说了一下#pragma once
Q:说一下两者的区别?
A:#ifndef是C++支持的正式标准,可以对文件或者代码块进行检查,根据宏名判断,防止重复包含,而#pragma once不是C++正式标准,防止物理意义上同一份文件被多次编译,效率高,兼容性略差。可能答得不是很准确,但是面试官没有提出异议,还算可以吧。
Q:(递过来一张纸)写一下二分查找
A:这个挺简单的,很快就写好了。
Q:写一下快速排序
A:也不难,回忆了一下快排的流程,然后写出一个递归版的。面试官看了之后,问我能不能不用递归,然后我写了一个基于循环的快排。
Q:给你一个双向链表,做一下链表逆置
A:也挺简单的,很快就写完了,但是他似乎不满意,因为我用了两个临时指针,分别指向一前一后,他让我只用一个临时指针,我想了想,其实也好做,毕竟是双向的,想清楚关系之后,写了出来。
Q:(拿起简历,开始问项目)讲一下你第一个项目吧?
A:进入擅长领域,窃喜。按准备好的套路讲了一下自己的项目,并适当展示了一下项目中的亮点。
Q:项目中使用的这些算法都是你自己独立实现的吗?
A:大部分是OpenCV提供的API,一部分是自己独立实现的。
Q:那你说一下高斯金字塔吧
A:大致讲了一下图像金字塔的过程,下采样和高斯滤波,以及这样做的物理意义。感觉他其实并不懂这些, 只是确认这个项目是不是我做的,掌握的有多深。
Q:谈一谈你项目中的FFMPEG转码算法
A:其实对这个算法了解不算太深入,但是麻烦的是,面试官挺懂FFMPEG的,我大致说了一下转码流程,从读视频、解码,转码,编码,把整个流程说了一遍,包括其中大概调用了哪些函数,但是面试官并不满意,他想让我从原理上解释转码算法,而不是我调用了哪些FFMPE函数,这我就有点懵逼了,说我们项目的重点不是做转码的,只是为了视频读取的健壮性才使用了FFMPEG,blashblash解释了一堆,目的是告诉面试官,这块我真不熟,大佬你别问我了……
Q: 那你们项目中视频编码是什么?解释一下这个格式有啥特点
A:MJPEG和H.264,但我其实不是特别懂两者的区别,只知道MJPEG的压缩率不是很高,但兼容性好,H.264适合网络流媒体的传输,等等……显然面试官并不满意,但也没有继续追问。可能他认为我既然做了这一块,就应该掌握的更深入一点吧。
然后一面算是结束了,过程也就20分钟左右,感觉这个小哥哥比较看重基础,以及对项目掌握的深度,然后问我有啥想问的没,因为感觉他对FFMPEG特别看重,我就问他,VIVO的C++岗都是干啥的,是否FFMPEG比较重要,他说具体看部门,不过FFMPEG确实会用到,主要是做基础框架研究的。然后我还问,VIVO杭州招人多吗?他说他是深圳的,深圳招人多一点,杭州不是很清楚,推荐我来深圳,工资会高一点(纳尼?这算是认可我了?)。
二面
一面结束之后去大厅等了不到5分钟,就是二面了,二面是HR面,HR的小姐姐,特别好看(VIVO是看颜值招人的吗?那我岂不是……)聊得内容挺常规的,先是问了一下在校履历,平时在实验室都是做什么,项目经历,做这个项目学到了什么,如何看待加班……全程也就20分钟吧。
然后问我期望工作地点和薪资,我说杭州,她说杭州不怎么招人,南京可以考虑吗?我说我女朋友拿的杭州的offer,不太想去别的地方,结果HR小姐姐极力劝我去南京,说了一堆南京的好处……emmm,说好的推荐去深圳呢?我说,南京挺好的,我其实都行,回去跟我家老大请示一下,HR小姐姐噗嗤笑了,算是默认我同意调剂南京吧。
值得一提的是,VIVO的HR面,真的挺仔细的,比如我简历上写的是本科毕业,上的研究生,她问我这一年干嘛去了,我说我最开始是选择工作了,后来发现还是读研好一点,就开始考研。然后她说,考上工大感觉怎样,开心吗?我说我是调剂过的,她就问一志愿考的哪里,我说T大。然后就紧接着问,为什么会选择T大,我说,当时是想着给自己一点挑战吧,不过后来失败了,然后又紧接着问研究生的经历……感觉就像是人物访谈,每个细节都问的特别细。
Offer
VIVO的offer发放的挺快的,我是9月16号参加的面试,20号晚上就拿到Offer邮件了,当时在做百度的在线笔试题,结果弹出来一个这个,吓我一跳……给的白菜价,没想到他们家是低base高年终的体系,13.5K每月,转正之后开始算年终,26~36W的样子,不高不低吧,意外的是,工作地点既不是深圳,也不是南京,他们还是给我安排到了杭州,挺开心的。
VIVO不怎么逼签,我是9月20号拿到的Offer,虽然HR通知我们十一假期之后必须交三方,但实际上,一直拖到11月份,我才把三方给寄回去,这个考虑时间,真的挺充分了,点个赞。
原本没打算去的,但是后面,网易和阿里都相继凉了,华为杭州把我调剂到了上海,海康和H3C这些又不太想去……其他稍微小一点的互联网公司都没有C++岗,听VIVO的HR讲杭研院主要是做拍照算法和AI,感觉应该是算法落地,或者是手机基础框架研究,和我研究生阶段的工作还挺搭的,于是最终选择了VIVO杭州。