也说面试 - 一个努力的iOS Dev
你们在金色的余晖中回家,而我却在银色的温柔中,匆匆潜行-----这是我的现状。
今年的招工形式不是很好,难找工作;也难招人。写这篇博客,是为了给各位在找工作的iOS dev 一些参考。
上篇:换坑(去面试)
又是一年换坑的时节,出于各种原因,我又换坑了。
今年面了6家,5个offer。看似还不错,实际很艰难。3月初,boss对公司人员透露,今年不涨薪水且暂无项目奖金。我这组,直接走了6个,我迫于无奈提出离职。一开始我觉得今年应该也很容易找工作,毕竟去年轻松就跳槽了。然而,一个月没接到电话。我一度以为留错了手机号,再三确认以后,发现并没有错。虽然不慌,但是或多或少有些担忧。4月下旬接到了第一个电话,是Cisco的面试邀请。我这才安心,毕竟有电话了。
先说第一家吧。Cisco,我去面试了3个小时。4轮面试:
第一轮:OC,问了一些语法,基本都答出来了。最后问了一道二叉树的排序输出,其实不难,但是我真的不会。(半路出家,算法基本不会)。这关过了
第二轮:C++,问了一下auto_ptr的实现原理,基本答出来了。然后问了我数据加密传输的一些方案,答出来了。最后,状态机的实现方案,这题我答的不好。这关过了
第三轮:英文面试,老套路,自我介绍,项目内容的问答。这关过了
第四轮:C,问了我一些指针题。感觉好吃力。可能挂在这轮了
人事告诉我,这里总共就四轮,你都面过了,回去等通知吧。(没谈工资,这就明显GG了。。)
总结,去大公司综合素质和技术一样重要。明显我的技术不够扎实。
第二家,一家车载智能模块开发的公司。技术面试,基本没压力。给了一道代码的纠错题,轻松过。然后副总直接面试,也过了。最后还是没去,我要18k,他说你才毕业3年,我们给不到,只能16k。好吧,16也可以,但是13薪。我觉得做一个管理岗位,有点低。所以没去。
总结,2k都不想给的,估计别的待遇也不好;还有用人看工龄的,我觉得不合适。
第三家,创业两年的互联网公司,面试基本无压力。问了一些OC的基本语法,项目架构。boss面试,谈了一下对创业公司的见解,boss很满意。2轮面试,基本过了。这家17k,14-18薪;上班路程30mins;不打卡。是不是很好,然而10-22点的,觉得很累。
总结,创业公司,喜欢看实力,要能立刻干活,一般都很累。不打卡其实就是无条件加班。薪资在高,不如不累。
第四家,传统企业。这家居然要我笔试,我当时就不乐意了。(招人的话,两年+的工作经验,还要笔试,我觉得HR有问题。)笔试全对,都是考培训生的题目,所以无压。面试之后了解到,他们有一个IM项目,拿到了风投,不过架构和实现都不行。需要来人帮他们重构,而我正好独立完成过IM app,性能也很好。岗位,给我一个开发的title,但是要带2个新人。我要18k,不同意。基本pass了。
总结,传统行业还是传统行业,许多做法很过时。16k,13薪,还要我带两个新人。吃力不讨好。
第五家,外卖行业的巨头之一,3个字。面试了很多技术:代理的一对多;socket的传输优化;控制反转的实现及优化;ASI和AFN的优缺点;Block的实现原理等等。面试很全面,当然我过了。后来说人事没空,让我等消息。这一等就是很纠结,不得不吐槽一下。HR,每次给我电话都是19点到20点;HR,要我提供收入证明,我提供了,一直没有收到反馈。结果她说她们总监出差了,呵呵。等了4天说过了,让她发offer,一直说走流程,呵呵。
第一周的周五面试,第二周的周五晚上8点发的offer,这效率,我觉得活不久了。关键是发offer的那天是4月30号。五一前的最后一个晚上。我就想说,你找好工作回家,和没找到工作回家是不是一个心情。你不理解我,我何必呢。
总结,年轻的企业就是年轻。18k,12-16薪。(HR,8点都没下班,IT几点才能走呢。。。)
第六家,也就是选择的这一家。虽然现在是21点,我还有1个多小时才下班。但是我接受。技术面试,基本无压力;人事面试,过了。人事每天电话我,要我回复offer的确认。语气强硬但是,不会压迫人。和第五家的高傲完全不一样。我选择了这家,待遇什么都还可以,而且有发展空间。
总结,16k,14-17薪。工作餐,下午茶,很好的办公环境。关键是效率高,从入职到开发到部门协调,做事不用等。这家也不打卡,所以加班你懂的。
最后说一下感触和面试的主要内容。
感触:1、好好学习,有底气才可以选;2、不打卡就是无限加班;3、薪水低,待遇好有时也不错;4、大企业执行力很重要。
面试内容:OC基本语法,多线程,设计模式,算法(心好累);解决问题的常用渠道。
下篇:选萝卜(面试别人)
入职以后,老大把iOS的面试我转给了我。每天人事会给我很多她们选过简历,真的很多,一天40份。看完之后,我告诉她们可以来面试的人员名单。
简历筛选是很重要的一关,我说一下我筛选的几个标准:
1、稳定性,你4年换4家,我要你干嘛。
2、技术积累,你有没有blog、GitHub开源项目。
3、个人说明,不要说你什么都可以,我不知道你想做什么,想要什么职位。
4、项目陈列,你做的什么都写出来。不然我不知道你干啥。
面试过程,没有笔试,直接对话,问到不会为止。
我一定会问以下问题:
1、你的拿手项目是什么?你负责哪些?
2、你对app框架有什么见解?
3、你用了哪些控件?第三方的话,你看过源码没,看过注意事项么?你会优化吗?
4、block的运行在内存里面的流程?
5、GCD的典型用法,下载文件然后更新UI。
6、对hybrid开发了解程度。(项目要用这个)
接下来就是刷人的时候了。只要你的简历上写的精通的熟练的,我都会问,有3个答不出来的你就GG了。
swift,我会问他一道基础语法,还有一个特有语法。
C++,我会问智能指针和lambda。
OC的Runtime,我会问[self xxx]; 在Runtime里面会被转化为什么。
OC的内存管理机制,我会问一个赋值语句在运行时,会产生几块内存地址。
Linux,我会问一些终端的基本操作:pwd是什么命令 vim怎么删除一行。
android,我会问intent 什么时候会失败,最大可以传递多大的数据。
设计模式,我会要他写一个单例。
我面了大约10个人,就两个过了的。有一个5年的上来就说要做技术负责人,结果他说他精通的,我一问他三不知,自己走了。有一个三年的,一问控件,都是第三方,所有的都是,只会伸手。还有一个4年的,说项目都是独立完成的,一问http模块和加密模块,他说别人写的。
总结一下这些没过的原因:
1、不会的别吹牛,人家问深点你就不会了,会多少就如实写;(诚实很重要)
2、别一直换东家,你在别的地方走得快,我这里你也可能呆不久;(稳定很重要)
3、OC的基本语法很重要,copy,strong,原子非原子;
4、常用第三方的源码你看了没?没看的话,使用时的注意事项,你知道吗?实现原理呢?(不要只做伸手党)
5、内存管理机制,GCD,你不了解就GG了;(低层还是要会一些的)
6、OC的进阶语法,例如:数组的枚举别用for in,用enumerateObjectsUsingBlock 。(每种语言的优势要发挥出来)