前言
2019年8月,种种原因,需要寻求一个新的工作机会,所以有了这一个多月的iOS求职经历。
由于自己有几年时间没有系统地找工作面试过,觉得这段时间的经历尤为珍贵,也学习到挺多东西,所以想写下这篇文章记录一下这段经历。
以下为流水账,记录这一个多月接触到的一些公司以及面试的感受。本来我想为每家公司的整体感觉和面试官整体感觉打个分,后面觉得这种打分带有太强烈的个人主观意见了,还是作罢,简单谈谈经历和感受就好。
1. 普特医学
在boss填了资料没多久就跟这家公司约了面试,说实话公司刚宣布的解散消息在当时我还没缓过来,更别谈好好准备面试了。所以这家公司算是一次尝试吧。
面试过程大概就是:
两个面试官一起面,一个男的技术面试官,另一个女的应该也是要招这个岗位的业务部门的。技术面试官负责技术面试,业务面试官负责介绍公司,并对我的面试表现做记录。
技术面试官是安卓开发,也是整个移动组的负责人(后面发现那边就一个安卓,一个iOS,做iOS的准备离职,所以需要招一个新人)。技术面大概问了我简历上说的Jenkins打包流程如何实现、Https相比Http安全在哪、Git工作流是怎样、iOS app的包大小如何优化、常用的加密方法。可能因为面试官是搞安卓的,没怎么面iOS的东西。
整个面试过程感觉技术面试官姿态比较高,一直说那边用到的技术如何好,如何先进,Https说我解释不清,然而他自己说了一下也没说清楚,然后说他自己希望团队都用新的语言,安卓用Ktolin、iOS用Swift、后端从Python改为用Go。
面试结果:
面试完让我回去等通知二面,这次面试也确实表现不好,所以并没有通过。
2. 快手
快手是在拉勾上的邀约,当时也没怎么想就投了,后面想来这种好的机会应该好好准备下再投递的。同样的,这次我也没怎么准备就去了快手面试。
深圳的快手在深圳软件产业基地,公司环境不错,但是人不多,应该是在这边有新业务拓展。
面试的时候我早到了二十分钟,面试官后面过来的时候一直跟我道歉说让我久等,就这点已经给我很好的印象。
面试过程:
一开始先做笔试题,大概给了四五十分钟。内容我现在仅记得大概涉及:
- OC属性关键字的理解;
- 代码改错,其实就是一些简单的命名格式之类的,大概属于代码风格;
- view的anchor、position以及transform之后的位置;
- 动画的贝塞尔曲线;
- +load 和 +initialize 的区别,在category里面写这两个函数有什么效果;
- 递归计算1加到100;
- 递归搜索指定目录下指定文件类型的文件;
- n个数不等,求max、min,最优的比较次数是多少;
- 利用rand7,求rand13;
说实话,前面OC的基础还可以,但是后面几道题,算法题无法全部完成,基础题有些知识点记不太清。所以整张卷子完成程度还是很差的,面试官进来的时候我都做好直接走人的准备了。
但是面试官看了题目之后,还是会根据答题的情况跟我沟通,并由题目衍生出新的问题问我,在我不懂的时候会做出引导。
面试结果:
没有通过。但是面试体验很赞。
3. 腾讯(电话面试)
腾讯的电话面试在晚上八点,当时我正在商场里准备吃饭,突然接到电话让我找个安静点的地方进行电话面试,让我有点仓促。不过在下班时间面试也是为了在职人员有时间可以参加面试吧,还是蛮贴心的。
面试过程:
问的问题还蛮多,大概有:
- runloop;
- app 性能优化;
- 二叉树寻找最近公共父节点;
- PC上浏览器敲一个网址,到网页呈现出来,发生了什么;
- iOS 上多线程的理解,使用多线程要注意什么;
- 平常开发中遇到BUG怎么定位,举例说明;
- 有阅读源码的习惯吗,举例说明;
- 自动释放池底层实现;
- block原理;
- 响应链;
- FPS如何计算出来的;
- OC内存管理;
- 消息转发:
- 问题中提到的一些库,都会问你是否有去了解如何实现的;
问题其实蛮多的,记不太清了。
面试结果:
无下文。
4. 抖音(视频面试)
抖音的预约面试流程让人挺舒服的,会有HR提前联系并通知到你,让你做好准备。面试安排在周末,也为了方便还在职的人找工作面试吧。
面试过程:
- 项目经历,介绍最近的一个项目,并由此引申了很多问题;
- FMDB是线程安全的吗?设计一个线程安全的读写操作流程;
- 项目中用到了MVVM,为何要选这个,如何实现,如何理解;
- OC中向nil发送消息为什么是安全的;
- TCP、UDP;
- 手写代码:有一个有序的数组,查找某个值(考的是二分查找);
问题记得不多,印象较深的就以上几个。
面试结果:
不通过,被虐惨。
5. 聚美通道
点名批评这家公司!
一家很小的创业型公司,去到的时候发现人很少,估计两三个开发,一个前台,一个技术总监,一个老板。
面试过程:
- 填表,表还没填完被叫去面试,说表无所谓;
- 技术总监面,问了下工作经历。问了下会不会用支付SDK,分享SDK,答会。闲聊一会,问了下薪资,总共大概十五分钟不到;
- 老总进来,直接说薪资,给的薪资比他们在boss挂的最低薪资还要低2k。然后问了住处、工作经历之类的。姿态很高,期间不停地咳痰,有点难以接受。
- 整个面试过程半个钟左右吧。
面试结果:
无下文。
6. 编程猫
面试在他们的休息室,期间有另外面试行政的人进来在另一张桌子面试,房间不大,两个人同时在说话就会特别影响,这是感觉不太好的地方。
面试过程:
- 介绍项目;
- runtime;
- 第三方库的理解;
- 冷信号、热信号;
- Block原理;
- 多线程;
- 简单问了下链表和数组的区别;
- 其实的一些OC基础问题,记不清了;
技术面完让我稍等,回来后告知领导不在,等下次通知过来二面,基本都会有二面。自我感觉一面应该没什么问题。
面试结果:
无下文。我拉勾和Boss分别找了HR,才告知不匹配。
7. 卓悦网络科技
技术面时,两个面试官一起面,后面知道这是他们的iOS成员,leader负责提问,另一个应该是学习吧,一直在记东西。
面试过程:
- OC基础,没有问到特别难的问题;
- swift相关简单问了下,因为项目用swift写的;
- NSClassFromString、+ class、- class 方法有什么区别;
- 内存管理,自动释放池与内存管理的关系;
问的问题挺多,但是没有什么太特别的,总体答的还不错。
技术面完总监面,总监简单了解下工作经历,并没有做太多深入交流。然后就说先回去,接下来HR会电话联系谈薪资。
面试结果:
拿到Offer。后面衡量了下没去。
8. Insta360
面试过程,约的两点,中午没休息就过去,在楼下需要提交申请等待公司审核才能上去大厦,状态很差。
面试过程:
一面iOS leader:
- viewcontroler 生命周期,PUSH的时候生命周期调用时间顺序(我居然懵了一下子没想起来);
- 多线程;
- __block原理,block的类型;
- 二叉树最近的公共父节点,是否有非递归的方法;
- 其他一些常规问题;
二面技术总监:
- 问了下http;
- 问了下 ++i 与 i++ 的区别;
三面HR:
- 简单谈了下工作经历;
面试过程整个人很懵,从这之后尽量不约在两点了,状态是真差。
这家公司我还是挺喜欢的,感觉iOS leader技术细腻,也比较细心,团队规模也比较大。
面试结果:
无下文。
9. 一起练琴
电话约面试的时候问了两个技术问题,然后约了面试时间,看了下公司介绍,第一感觉是家严谨且有趣的公司。
面试过程:
一面iOS:
- swift 的理解,范型举例说明;
- 面向接口与面向对象的区别,面向接口编程举例;
- runtime 有什么应用例子,KVO底层与rumtime的关系;
- 遇到BUG的调试,举例;
- 面向切面编程理解;
- 如何适配全面屏与非全面屏,有没有遇到线上反应的什么问题;
感觉一面面试官很注重编程的实践经历,问得比较细,还有其他一些问题,总体感觉没答好。
二面iOS:
- 多线程编程、锁;
二面面试官一开始没说自己是iOS,感觉是故意不想说明,想看下我会不会忽悠他哈哈哈。问了也挺多问题的,不会很细,但是很刁钻,面试表现自我感觉一般,也还过得去。
三面技术负责人:
- https 之类的;
- 智力题1:25个人赛跑的问题;
- 智力题2:数数的策略问题;
智力题没有答好,感觉主要是考一个思维能力,但是说实话这种面试官对着你让你想有点让人难以集中精神。总之没答好,面试官有点失望。其实这两个问题之后回过头来想,确实不是很难的问题。
四面公司负责人:
- 工作经历;
- 兴趣爱好之类;
总体感觉这家公司还是蛮特别的,虽然规模小,人也不多,地方在坪洲地铁站也不是互联网公司聚集地。但是整体感觉技术不错,是一群有梦想有技术有趣的人,这样的人总会成功吧。
面试结果:
无下文。
10. 来去
面试过程:
一面iOS leader:
- OC基础(没啥好说的);
- SQLite left join 和 right join 有什么区别(没答出来);
- 响应式编程冷信号、热信号的区别;
面的过程大概二十分钟,时间很短。
二面HR:
- 一面完等二面的时候有点久,然后是我问了前台小姐姐去找才进行的二面;
- 聊工作经历,聊职业规划;
- 问我对一面面试官的印象,自己的技术比之如何(不太清楚这个问题的目的);
面完跟我说等通知。
面试结果:
无下文。过段时间后,同个HR在boss邀请我投递简历。。。
11. 美联物业
香港上市的一家传统型房地产公司,由于问之前有房地产相关iOS经验,这家公司还是挺看重我的。
面试过程:
一面人事经理:
- 一开始以为是技术,后面才知道是人事经理,第一次遇到人事经理先面的;
- 问了工作经历,职业规划,对新公司新岗位的期待;
- 之前房地产相关工作经历的业务;
人事经理简单聊了下,交给技术面。
二面技术面iOS:
- 两个人面试,一男一女,男生问iOS,女生做后台的,估计职位相比男生高;
- KVO原理;
- OC基础;
- 企业包下载;
- 如何实现网页点击打开app;
- 性能优化;
- 组件化;
- 并行与并发的区别;
- 死锁的原因;
总体来说都是比较常规的问题。
三面HR面:
- 工作经历;
- 介绍了他们公司的情况;
- 简单谈了下期望薪资;
四面总监:
- 估计是三面的时候工资我要的比他们计划中高,一天后告诉我需要总监面试;
- 问了下之前工作经历;
- 技术题一:一个随机数字键盘如何实现数字随机;
- 技术题二:如何考虑这个键盘的安全问题;
总体来说,感觉对我比较满意。因为是传统公司,刚准备组建自己的研发团队,所以刚好需要我这种有相关经验的吧。
面试结果:
通过。
12. 果酱直播
唯一一家迟到了的公司,尴尬。
公司比较小,办公环境一般,但是感觉有发展潜力。
面试过程:
一面iOS:
- NSMutableArray的底层,前后插入跟中间插入有什么区别(考的是环形缓冲区的数据结构);
- 记不太清了,没什么太特别的问题;
二面技术leader:
- iOS 上线遇到的问题,如何解决;
- 马甲包的理解;
- 扫雷时如何随机布雷,有什么高效率的做法;
- 如何用两个栈实现队列;
由于约的时间是早上11点,我又迟到了几分钟,结果二面直接去到十二点半不止,又累又饿,状态也很差。走了之后接到电话,约下午进行三面。
三面HR:
- 非常详细的询问工作经历,以及每份工作的薪资,这点我不太喜欢;
- 职业生涯规划;
- 薪资
面试结果:
通过。
11. OPPO
OPPO这家公司比较注意安保工作,是唯一一家我去面试要贴手机摄像头的。每次面试都会给一瓶矿泉水,回去一查,8块多的矿泉水我的乖乖。
面试过程:
一面iOS:
- 项目;
- OC底层;
- 第三方框架源码;
- 常用算法,问了LRU;
- 数据结构,NSDictionary、NSArray的底层实现;
13. 碳原子
公司在百度大厦西塔楼,环境还是比较好的,一整层的空间有大半位置是空的,感觉还会扩张的意思,大小周。
面试过程:
一面iOS leader:
- OC与Swift的区别;
- Swift面向接口编程,范型;
- struct 和 class 的区别;
- iOS 编译,gcc,llvm,clang;
- 一个函数的调用,最终是怎么实现的;
- 设计模式、六大原则;
- 组件化;
一面面试官问的东西比较广,但是都不太深,人不错,沟通起来像在聊天一样。
一面面完加了面试官微信,结果在回去的地铁上收到他的微信:通知下午进行二面。
二面技术leader:
- 没问什么技术问题好像,记不太清了;
- 看了下以前做的app;
- 最后说尽量下午安排更多轮面试,把流程走完;
三面HR:
- 详细地问了工作经历;
- 职业生涯规划;
- 目前找工作的情况
- 薪资要求;
四面CEO:
- 只是简单聊了下,CEO好年轻,讲话声音好大。
面完觉得应该机会蛮大的,由于对一面面试官的好印象,还是挺喜欢这家公司。结果一直没消息,期间问过一面面试官,说隔天会做最后决定,但依然没戏。结果过了好多天,突然接到电话,进一步谈薪资。
面试结果:
通过。
14. 雷漫
刚成立不久的公司,但是感觉背后有一定实力,团队在快速扩张。
面试过程:
一面技术副总监:
- 介绍项目;
- 简单问了下其他技术,忘了,不是很特别的问题;
面试时间不长,大概半个小时,由于面试官不是搞iOS的,也就没有进行很深入的讨论。
二面HR:
- 介绍公司,目前996,但是很有实力;
- 简单谈了下薪资;
二面面完中午休息,约了下午三面。
三面HR经理:
- 这是面试的唯一一家HR面两轮,技术面一轮的公司;
- HR经理根据前两轮面试官的反馈,跟我聊,主要是为了后面压工资;
要求当场做决定,并且要签字确认,这点让我感到有些不适。
要求尽快入职。
面试结果:
通过。
面完回去思考了一下,深悔当时表现不好,996情况下工资达不到我的期望。隔天HR一直催我去做体检,然后去入职,实在是有点不太喜欢这种被催着走的感觉。
15. 冰禾网络
面试过程:
一面iOS:
- 项目经历;
- OC相关问题;
- app 生命周期;
- 问了下几个业务场景,如何处理,比较简单的;
二面老总:
- 简单问了项目经历;
- 介绍了公司以及接下来要做的项目,问能否接受加班;
三面HR:
- 工作经历;
- 职业生涯规划;
- 薪资;
面试结果:
通过。
16. 盈富斯
app是patpat,这个app做得不错,面试前我下载看了对这家公司印象不错。
面试过程:
笔试题:
- 写一种排序算法;
- 链表反转;
- 给一个值x,实现链表分割,比x小的在前,比x大的在后;
- 整型数组,求最大子序列的和;
- 二叉树遍历,前序、中序、后序;
- 一些OC基础题,不是太难,时间关系我没写;
一面iOS:
- 性能优化;
- 第三方库;
- 项目经历难点;
- 个人性格;
二面前端负责人:
- 根据之前面试题中的数据结构我写的答案提出一些问题;
- 看了下之前做的app;
三面CTO:
- 聊项目经历;
- 看app;
- 闲聊人生、世界局势,哈哈;
四面HR:
- 都是些常规问题
- HR很详细地介绍公司情况,印象很好。
面试结果:
通过。
17. 无一科技
公司总部在北京,主营app:儿歌点点,技术团队很强,大部分是大厂出来的。深圳这边人数不多。
面试过程:
笔试题:
- 链表,插入节点(必答题);
- 二叉树计算节点数(必答题);
- 判断子串是否在主串中(选答:KMP);
- 四则运算的算法实现(选答:栈);
- 链表实现冒泡排序;
- 还有一两道题目太长不好表述;
一面CTO:
- 聊项目,聊难点;
- 多线程;
函数响应式编程的理解;
详细地介绍了公司的情况。
一面面试官气质不错,聊得很开心。
二面iOS(电话面试):
- 项目;
- MVVM 与 MVC 的区别;
- 网络层的设计;
- 第三方源码;
面试结果:
等通知。
总结
移动互联网行业经历了14、15年的疯狂吸收人才之后,慢慢进入一个冷静的状态,大小公司选人都更加谨慎,也更加挑剔。
相应的,作为求职者,我们只能更加努力地去丰富自己的技能栈。
还记得15年找工作时,随便就拿到offer,今时不同往日,公司与求职者之间的双向选择变得更加更加谨慎。
不断学习,保持进步,才是程序员的生存之道!