笔试

贝贝使用的笔试平台当时出了点问题,编程题有两道题,但是保存了第二题的答案之后,第一题的答案也变成第二题的答案了。有时候运行代码会没有反应。当时F12进控制台发现前端报错具体啥错我也不懂→_→,Network里收到的response的各个字段不是”“就是null。后来微信群里说到时候可能会组织现场笔试。

18号晚上就接到电话,告诉我面试地点。华美达酒店(高端大气!)不过通知电话打了两遍,第一次是个女声,第二次是个男声。看来贝贝的HR在组织上可能存在一点点小瑕疵,不过也看出对面试者的尊重。

讲讲笔试的具体内容吧。

笔试的选择题都挺常见的,基础题较少,有些动脑的题目。但是动脑的题目都比较常见,比如两个容器,左边装米,右边装沙,用一个勺子从左边挖一勺到右边,然后右边弄均匀之后再从右边挖一勺到左边,问两边米哪边多。这道题早就听说过,所以直接选了答案。总的来说感觉虽然自己没有答得很好(笔试是弱项),但是也能一眼看出,这次笔试的难度算是挺小的。

因为题目都是题库里的,所以讲讲也是没关系的吧。

笔试第一道题是华夫饼问题。m块钱买巧克力,n块钱一个巧克力,买i个巧克力送一个。输入m,n,i的值,输出最后可以得到几个巧克力。然后我就顺着码了过去,我实在看不出难点在哪里,我觉得肯定是我没读懂题目,然而我搜华夫饼问题,搜出来的全是华夫饼,华夫饼的做法,链接链到卖华夫饼的网店啥的。

第二道题,判断一个数是不是质数,要求时间复杂度越低越好,最好是时间复杂度o(1)。

我想到的最符合要求的方法只有,枚举法,算出所有的质数,然后看输入的数字在不在这个集合里就行了。题目中说数字小于10的7次方。所以我就创建一个10^7+1大小的数组(因为数组从0开始),然后从2遍历到0.5X10^7,将合数置为1,之后,值为0的将为质数。

不知道这个方法是不是对的。但是这个是个简单的死办法。

面试

20日八点半,华美达酒店5楼。

一共两面,第一面技术面,第二面HR面。我面的是iOS开发

技术面

一面的面试官很年轻。看起来没什么压迫感,加上面试地点是很多人的一个大的厅里,然后一对一的面试,所以心理压力不太大。

技术面首先是自我介绍。虽然我面试的公司不多,但是基本上每次面试都是以自我介绍开头。自我介绍会奠定之后面试的基调,好的自我介绍也能给你的面试增色不少。然而,说是这么说,我每次介绍出了自报家门之外,就直接讲自己的经历,比如从何时开始接触web开发,又为何转到iOS的,比较千篇一律,没有什么特色。没有体现自己的优点或者特色。这是我该反省的地方,但是我一紧张,之前准备的东西都会忘掉。这算是我的弱点吧,所以准备面试的时候我就没有在自我介绍上花很多时间准备。面的是iOS岗位,但是我的iOS项目经历不多,基础也不是很扎实,接触的时间短。所以我自我介绍的重点在自己的快速上手iOS开发上,同时也有种打预防针的意思。

接下来就开始围绕项目经历进行提问。面试官最感兴趣的是我天猫的实习的经历。他问天猫的项目是不是基于cocoaPods分模块开发的,然后我说是的,于是让我讲讲大概是个什么划分,怎么分层的。我想,天猫如何分模块只要不涉及具体的模块内容,应该是不算泄密的。于是大概的讲了讲我记得的结构,例如大体上按业务分spec,然后每个业务spce依赖一些底层的spec,比如网络通信,图片显示,第三方sdk例如支付宝和旺信等等。然后给我一张纸,让我大概画画结构啥的。但是我也不太记得具体如何分的spec,所以我就按照自己的理解大致画了画,标注了业务层,基础架构层和第三方库,画了几个剪头,大概讲了讲。心理比较虚,因为当时的spec太多了,我没有仔细看,也只是好奇,顺眼瞅了瞅,然后略微思考了一二。没想到居然问了这个问题。

之后又问了一些问题,印象比较深的是,他问我有没有接触webview,我说没怎么接触,然后他苦口婆心的说,你对iOS有兴趣应该会学习一些额外的东西,webView就是你应该了解的东西,然后他问我,在h5页面上点一个按钮,怎么才能跳转到原生的页面。然后我突然联想到之前天猫做过统一跳转接口相关的东西,然后回答说,h5页面和原生的页面的schema不一样。可以通过schema来识别是否跳转到页面还是原生界面。面试官继续问我,那他是如何识别的呢?我回答说我不知道,但是我推测应该是Js操作的吧。面试官问,为什么说是js?js可以这样用么? 我说,我记得我见过JsBridge的spec,可能是用了这个,至于如何实现的,我不太清楚。然后围绕着这个继续问了几个问题,但是我确实不会。这个地方面试官咬的比较紧,感觉真是跪了。

接着问我用过collectionView没有。我如实回答:没有!面试官就说,这个也是我之前说的,你应该在实习期间额外学习的东西,像刚才的webview,现在的collectionView,如果你感兴趣,其实都应该有所接触的才对,比如autolayout你也应该接触(为什么突然跳转到这个话题了?)你其实也应该接触。然后我很傻逼的接话说,我在实习的时候,项目里没有用到autolayout,都是直接用的frame,写死,然后根据设备来做相应的兼容性处理。这个时候面试官就继续教育我,你知道autoLayout好在哪里么?还不待我说几个字,面试官继续说,autoLayout在前段时间支持分屏了,这个时候难道还要自己定frame么?我死心眼的说,那应该是用在ipad上的,天猫有专门负责ipad的。可能我突然意识到自己傻逼了,于是补充道,说不定他们意识到分屏用纯代码码布局可能做分屏难就转autolayout了。然后这个话题终于结束。

还有一个印象深的问题,问我pod的spec如何写,然后我说,我之前接触cocoaPods的时候看过,比如要写author,联系方式啥的,到时候出了问题就联系谁。面试官表示,这都是细节,哪些是主要的?我回答,还有版本号,和其他spec的依赖关系也要写。面试官问,还有呢?我说,重要的大概就这两个了吧。事实上,我也只记得这些了。面试官告诉我说,你写spec的时候,是不是需要记录你需要哪些文件?有些demo在工程里,但是spec里并不需要这些文件。突然我才想起来,我之前看spec,是有看到过相关的字段的。果然是自己基础太薄弱了。

关于我简历上写的跟iOS相关的第二个项目“餐谋”,大概问了问分工,项目计划之类的。也没有细问,毕竟没有成品,没有疑难点可以问。我把这个未完成的项目放到简历上的目的只是为了凸显自己简历的iOS成分。不然整个简历就干巴巴一个iOS项目经历,其他全Java后台的,那太喧宾夺主了。

最后问到的是种子杯的项目。我大概的讲了讲。吐槽居多,因为当时确实是太年轻,没能好好做比赛,当时做种子杯,和考试周在一起,不敢挂科,所以比赛也不能全身心投入。面试官问,你是点团队的么?我说,不是。心想,要是我是dian团队的大牛现在应该满手的offer了。

面完之后,面试官说,我也是华科的。我于是略带惊讶的喊了句学长好。

和面试官告别,心里想的是,学长快带我飞!

一面总的感觉是,这次面试主要围绕着项目经历谈的,基础问题没有问太多,之前一天晚上看的基础都没用上,我的基本功还是差了点,而且这次面试因为自己的原(yu)因(chun),让面试官提出了一些自己难以回答的问题,从面试技巧上来说这个实在不应该。但是面试官说的很对,我应该积极主动的学习一些额外的东西,webview、collectionView啥的其实在实习之余都应该了解的。

Hr面

在大厅里等了40分钟,然后轮到我hr面了。

面试官给人的第一感觉是干练,,黑框眼镜,头梳得很高,露出发际线,应该是很自信的人。对了,面试官是个汉子。

Hr面的氛围比一面要轻松一些,一开始还是自我介绍。我的自我介绍大同小异,只不过因为hr应该是不搞技术的,所以我尽量避免了提到技术的东西。

面试官问到我的性格,我说我比较关注技术,不太关注其他的。面试官说,那就是典型的程序宅性格么?我说,我应该比其他的程序员要活泼一点吧。→_→

接着大致的聊了聊实习的东西,没问实习的具体内容,主要问了感受之类的,然后问我为何不留在天猫。我只有尴尬的表示,今年hc缩减,一同实习的也有很优秀的实习生,在实习的时候确实感受到他们的厉害之处,并且努力的向他们学习。没太夸自己,也没有自卑,感觉回答的还可以。

然后问我对杭州的感觉。我回答杭州气候不错,挺适合人生活。只不过之前在余杭区,太偏远。

其他的不太记得了,印象不太深。

然后该我提问了,我首先问了问贝贝的工作时间,果然,技术人员都是弹性工作时间。9到10点是上班的时间,加班的情况不太多。第二个问题是贝贝的工作地点,答曰在离杭州西站2个地铁站的地方,交通应该算是比较便利的。最后一个问题是贝贝工作地方周围好吃的多不多。答曰很多(现在看来我真的有点蠢蠢的)。

最后面试官夸我说我的性格很符合公司的文化,然后介绍到公司高层大部分都是阿里系的,公司氛围和阿里有点像。

走之前和面试官留了联系方式,因为出结果的时间和我上一家公司的交三方的时间冲突了。所以得留联系方式,到时候方便联系。

Hr面的感觉还比较不错,没出什么错,给面试官的印象应该是比较良好的。一般来说,Hr面只要比较真诚,稍微收敛一些,避免暴露出自己的性格缺点,都还是比较容易不出意外的。

总结

贝贝面试氛围很轻松。面试官大多都十分和善。平均年龄24岁的公司确实有一些别的公司没有的朝气。

现在的面试,一板一眼的问你基础知识的情况已经不太多了,大多是围绕解决问题来提问。比如今天就是,技术问题一般都是从项目经验或者从闲聊中发散出来的。都不会特别简单,但是都要仔细思索。所以平时打代码的时候需要多想。指不定哪天就用上了。