都2022啦 找工作啦!
相比前一段时间找工作时的波涛汹涌,这会算得上是风平浪静了。下面,我就谈一下我的面试经历及面试后的一些感悟。文章最后附上自己总结的面试题,供大家分享交流。由于本人文笔水平很臭,如有不通顺的地方可以在评论区指出来,看到我会麻溜的改正!对待学问是马虎不得的,你说是不?
首先,我想说目前iOS开发工作真的是不好找了(对于大牛,你就当我这话没说)。这是通过前一段时间我的亲身经历感受到的(怪我水平很臭喽)。为此,我总结出了以下四点原因:
1、你的不思进取(原谅我说话太直白,可事实就是如此)
2、iOS程序员供大于求,市场已经饱和
3、移动互联网行业的逐渐成熟导致用人单位要求越来越高
4、来自小程序的冲击
前面说了,如果你是大牛,还用去找工作?工作都来找你了(大牛就是这么牛)。而你呢?还是好好反省反省吧!至于市场饱和,相信大家都早已经得到这个消息了。这其中既有移动互联网前期积累的泡沫破裂的原因,也有大量新的iOS开发者不断涌入的问题。我的iOS技术交流QQ群里时不时会有人出来吆喝一句“iOS已经烂大街了,没人要了”。都烂大街了,好忧伤!至于用人单位要求越来越高,我就不解释了,这个是你需要去好好反省反省的。最后我提到了小程序的冲击。为什么这么说呢?因为我感觉到小程序把一部分人的视线转移到了轻应用上面去了,这就导致一些native移动端的业务被小程序给抢走了。不过对一些业务比较简单的场景来说,小程序的确是一种比较合适的解决方案。一个是节省成本;另一个是方便快捷。总之,现在的iOS开发工作真的是越来越难找了。
分析了大的市场行情,再来看一下公司。公司如人,人有靠谱和不靠谱之分,公司亦是如此。前段时间的面试让我感觉到一个靠谱的公司招人还是挺难的。大牛不好请(关键是贵啊),小牛又看不上,而且还怕被忽悠,同时又要控制人力成本,所以用人单位考虑的要比应聘者多,他们一般情况下会找一个平衡点。即既要达到岗位要求,人力成本又要在可接受的范围之内。所以在招聘上那是一个纠结啊!稍微大一点的公司可能主要考虑聘者的技能了,因为大公司业务庞杂,规模和实力是小公司比不了的,对人才的渴求远比小公司要大。如何进大公司呢?是不是又该反省了!!!
啰嗦的有点多,我的开场白就到这里吧!下面说一下我的面试经历。
由于上家公司待的比较久,平常只顾撸码,导致忽视了知识点的总结。一下进入面试状态,面对面试官那么多的技术点问题,还真有懵!所以第一天在面试昆仑亿发股份科技和51Talk两家公司时表现不理想。由于好久没有参加过面试了,心理上没准备好,语言组织的不好,技术点回答的不到位,导致整个面试过程感觉比较糟。完全不在状态啊!相比第一家昆仑亿发股份科技,第二家51Talk表现的比较从容一点,一面我感觉问题不大。可二面的问题感觉有点奇葩,有点吃不准。比如面试官司问你之前公司(P2P金融)有催收吗?是怎么催收的?针对第一个问题我回答有,但第二个问题我该怎么回答。我有点方,不知道他想考什么。是考查我对公司业务的了解程度还是试怀疑我之前待的公司是否是一个不正当的打手公司。我笑笑,没说话...不过挺郁闷的。我一个程序员一定要去了解催收部门的手段吗???第一天就碰了俩钉子。不过也没关系,成事开头难嘛。随即,我加强了技术点的学习总结和面试技巧的学习。
面试是切磋,更是交流。通过面试,即能发现自身的不足,又能对自己从事的工作有更全面的了解。接下来的面试我去了滴滴、58同城、懂球帝、皇包车旅行、借贷宝、罗辑思维、美团、新浪等公司。滴滴的面试是印象最好的。面试官比较随和,专业,干脆,几个问题下来明显的能感觉到对方内功很深;58同城主要问的最近的项目,你在项目中做了哪些东西以及工程中使用到了哪些比较好的技术点;懂球帝问的问题便向设计,不过面试官的态度不怎么友善,一副不耐烦的样子;皇包车旅行问的主要是设计方面的问题,便向于架构方面;借贷宝是感觉最不好的一个,老是被打断,都不能了好的表达自己了,所以聊到一半我就放弃离开了;罗辑思维面试官挺温和的,感觉不错;美团面试官是绵里藏针,要小心回答面试官的问题,不要打哈哈;新浪面我的是一个老程序员了(大牛),问的东西比较大,而且偏向后端的大并发,有点小郁闷。为什么不找一个iOS程序员跟我聊呢?在跟不同的面试官沟通交流的时候的确学到了不少的东西,而且还增加了不沟通交流的技巧。最重要的就是跟很多同行过了招,发现了自身的很多不足不处,这会还在反省呢!
总结一下面试的要点:
1、充分准备,保持心态平和
2、尊重面试官司,包容心
3、随机应变
4、在面试中不断学习总结,为下一次面试做准备
5、不卑不亢,敢于表达自己
6、坦承
做到以上几点,感觉offer也离你不远了!
经过辛苦的耕耘,最终拿到了4家公司的offer,对这份成绩还算满意。不过,前路仍然漫漫,需要更加努力!
最后还有一个比较痛的领悟:
机会总是留给有准备的人的
机会总是留给有准备的人的
机会总是留给有准备的人的
ok!下面奉上本人总结的iOS面试题:
1、说一下OC的反射机制;
2、block的实质是什么?有几种block?分别是怎样产生的?
3、__block修饰的变量为什么能在block里面能改变其值?
4、说一下线程之间的通信。
5、你们应用的崩溃率是多少?
6、说一下hash算法。
7、NSDictionary的实现原理是什么?
8、你们的App是如何处理本地数据安全的(比如用户名的密码)?
9、遇到过BAD_ACCESS的错误吗?你是怎样调试的?
10、什么是指针常量和常量指针?
11、不借用第三个变量,如何交换两个变量的值?要求手动写出交换过程。
12、若你去设计一个通知中心,你会怎样设计?
13、如何去设计一个方案去应对后端频繁更改的字段接口?
14、KVO、KVC的实现原理
15、用递归算法求1到n的和
16、category为什么不能添加属性?
17、说一下runloop和线程的关系。
18、说一下autoreleasePool的实现原理。
19、说一下简单工厂模式,工厂模式以及抽象工厂模式?
20、如何设计一个网络请求库?
21、说一下多线程,你平常是怎么用的?
22、说一下UITableViewCell的卡顿你是怎么优化的?
23、看过哪些三方库?说一下实现原理以及好在哪里?
24、说一下HTTP协议以及经常使用的code码的含义。
25、设计一套缓存策略。
26、设计一个检测主线和卡顿的方案。
27、说一下runtime,工作是如何使用的?看过runtime源码吗?
28、说几个你在工作中使用到的线程安全的例子。
29、用过哪些锁?哪些锁的性能比较高?
30、说一下HTTP和HTTPs的请求过程?
31、说一下TCP和UDP
32、说一下静态库和动态库之间的区别
33、load和initialize方法分别在什么时候调用的?
34、NSNotificationCenter是在哪个线程发送的通知?
35、用过swift吗?如果没有,平常有学习吗?
36、说一下你对架构的理解?
37、为什么一定要在主线程里面更新UI?
以下文章也可以做一个学习参考:
GCD面试要点
block面试要点
Runtime面试要点
RunLoop面试要点
内存管理面试要点
MVC、MVVM面试要点
网络性能优化面试要点
网络编程面试要点
KVC&KVO面试要点
数据存储面试要点
混编技术面试要点
设计模式面试要点
UI面试要点