目前经济增速的放缓,到处都在鼓吹互联网发展进入下半场。今年跳槽季的遭遇想必大家也是感受到了一丝寒意。笔者有一个朋友在阿里工作,今年3月底开始请他帮忙内推,也许是阿里的大前端战略,也许真的是互联网的寒意。对于一个三年的iOSer上海这边一直没有合适的岗位可推,即便是有也是招P7级别,统统被拒的命运。我也是放弃了希望,开始找其它渠道推销自己,不过最终还是找到了心仪的工作,现在终于可以做一下总结了。
前期面试还是很有激情的,每次面试完毕都会回忆并记录,总结,再学习。其实这个过程也是一个非常有效的学习过程。不过代价有点大,你可能会失去一次机会。最好的方式,还是做好充足的准备。我在说什么?好吧,好像是一些感慨之类的。能体会到的读者,就请点个赞吧,哈哈!没体会到的读者就当没看到吧,反正仅仅是感慨而已,哈哈嗝!
还是简单再说下,这段时间的经历吧。首先这段经历是从老司机周报开始的,因为之前就和周报的峰哥有些联系,所以看到周报的内推时,也就自然而然的联系峰哥内推了。首先就是字节跳动,不过简历筛选都没通过。帮忙内推的曾鸣大佬说出了原因:
没有大厂背景
不是985院校毕业(笔者本人211院校毕业)
简历没有亮点
没办法,确实没亮点。之后峰哥也是帮忙指导了简历,我也尽量按照STAR法则修改了简历,通过其他渠道投递了字节跳动不过也都没有机会。可能是有失败记录,半年或三个月内都不能通过筛选了吧。后来掘金的内推群有位前百度、美团的现头条大佬说他内推的成功率高,还不受之前简历锁定影响,投递之后仍然没有消息。不过后来北京字节跳动的HR联系了我,问我有没有兴趣去北京,我当即来了个没兴趣。通完电话才想到即便是不去也应该增加一下远程面试经验呀...这让我想到之前看到的一篇文章说上海的字节跳动比北京门槛高,现在来看确实如此了。
接下来就是阿里的内推了。朋友在口碑做的前端,在连续一周多都没有合适投递岗位的情况下,朋友给我分析了一下原因。口碑大概有2000多人,前端有40~50人,iOS只有6个人。阿里的大前端战略和所谓的不裁人策略,也导致很多转岗。所以阿里目前在招的大多是P7级别的专家,又是一个无可奈何。
在这两家开始遭遇不顺时,我就已经开始了招聘网站的简历投递。接下来就进入了面试,回忆记录,总结,学习研究的轮回,直到终于拿到了心仪的工作。
知识总结我是通过MindNode处理的,有些详细,有些仅仅一提,但是都能从看到的知识点展开回答。每次看一遍内心就复述一遍,基本都背下来了。当然这只是部分知识,还有很多没有总结,以后我也会继续为它添砖加瓦的。如果有朋友想要加入的话我非常欢迎,大家也可以自己下载自行添加知识点。或者自己创建都行,我只是感觉以这种方式完善知识体系很不错。当然这里不能做详细展开,所以最好也有适合自己的笔记总结。例如:我使用印象笔记收藏相关模块的高质量文章作为相关知识点的扩展。
这里放出源文件的地址:iOS面试,如果没有安装MindNode可以到应用商店安装,或者这里精品MAC应用分享(个人最爱)
关于算法练习我们都会想到去LeetCode刷题。虽然LeetCode支持Swift答题,但是让人不爽的是有些处理字符串的题,用Swift作答会超时,所以笔者在练习时主要使用C和Swift作答。有时也会使用OC先理清思路,再使用其他语言进行作答。毕竟有些题需要边写边想,还有些需要进行调试才行。所以这也是用Playground不方便的地方,它不能进行断点调试。有了这些前提我就在想怎么才能使用现在工具,更好的进行算法题的练习呢?我想到了Xcode的单元测试,我们知道在继承自XCTestCase
的类中实现以test
为前缀的方法时,该方法前会生成一个菱形指示符,鼠标置于其上时会显示运行按钮,我们就可以通过该按钮运行测试用例,同时还支持断点调试。例如下图中的判断是否为回文数一题:
需要使用Swift解答也采用同样的策略,就个人来说,这么练题实在是太爽了。
当然完善知识体系看书也是必须的,例如图解HTTP、剑指offer、Effective Objective-C 2.0、Objective-C高级编程等大家都推荐到烂的书都是必须的,但是技术也是有时效性的。所以例如高级编程中的一些知识,就需要在它指导的思想上实践出目前的实现原理。
所以请记住两点:基础一定要扎实,原理一定要理解。
接下来贴出一些面试题,前面也说道前期很认真的记录,学习。面了一段时间这些问题很熟悉了,也就没有详细记录了。大家了解一下主要方向就可以了,毕竟很多问题会从你的简历中提问:
小莫运动
项目经历
试题
递归反转字符串
- (void)testReserveStr {
NSLog(@"--%@", [self func:@"Antyum"]);
}
- (NSString *)func:(NSString *)str {
return str.length ? [NSString stringWithFormat:@"%@%@",[self func:[str substringFromIndex:1]],[str substringToIndex:1]] : @"";
快排过程描述和时间复杂度
weak用法,以及不采用时产生的问题
notification,delegate,block的区别
...
小红书
电话
说一下你做过的东西
对链表和数组的认识,应用场景
weak和assign的区别
assign可以修饰OC对象吗
weak置为nil是如何实现的
GCD中的Block用到的属性是否需要__weak修饰
Block中对数组增删怎么操作
+load和+initilaze在分类,父类,子类和main函数的调用顺序
+load加载顺序:父类,子类,分类。如果多个分类会按照PBXSourcesBuildPhase中顺序逐个调用。
main()
+initialize加载顺序:首先有分类时,最后被load的分类会覆盖类的该方法。然后先父类,再子类,直到第一次被调用的类。
为什么要把+load中的逻辑放到+initilize
...
浦发
单例的实现方式,还有其他方式吗
abc三个任务,执行完刷新UI,怎么处理?除了你说的group还有其他方式吗
单行多个Label,中间可压缩,怎么添加约束
轮播图实现要点
定时器什么时候销毁,一些通知,KVO放在哪里销毁
看过哪些第三方框架,AF2和3有什么区别
离屏渲染底层角度
如何让Cell中的Button被点击时同时响应
...
爱回收
KVO底层实现
GCD相关,NSOperation相关
OSI七层协议,TCP/IP协议簇四层模型,每层的协议,Http相关
HEAD请求作用
项目相关
讲一讲响应者链条,如何处理点击范围和响应的两个方法分别是
weak如何自动置为nil
属性关键字
如何处理循环引用
对runtime的认识
链表成环判断
二叉搜索树
关联对象原理
方法交换原理
你博客中挑一篇主要写了什么
值类型和引用类型,和swift中它们的应用
json支持的类型
如何一次连接多个请求
...
京东
weak如何自动置为nil
属性关键字
可变对象copy
项目相关
OC中用到的设计模式
三种Block
通知,代理,block的应用场景
MVVM的认识
KVO的实现原理,被创建内部类有什么特点
项目中遇到的印象最深的问题
如何对一个微信聊天界面分工
微信语音转文字如何实现的
项目中提到的支持核心动画如何实现的
单例模式
应用埋点
控制器生命周期
...
携程
电话
KVO与autoreleasepool
深浅copy
属性关键字
...
汇正财经
oc的反射机制
面向对象的特征
block和delegate的区别
NSString的copy和strong属性关键字的影响
NSOperation和GCD的区别
runloop
weak和assign的区别
...
携程
KVO的底层
KVC的认识
oc中内存的分配
weak置nil的实现
深浅copy
runtime的认识
消息转发的认识
消息转发的应用
事件链的认识
离屏渲染问题
设计模式的认识
同一行lable左右约束布局问题
设计架构的应用
深度优先和广度优先
(简历中有写道)XMPP的认识
谓词的认识
UICollectionView的应用
...
四、面试套路
关于面试套路,我这边没有特别多的方法。目前主要有一个方法吧,化被动为主动。这个怎么讲呢?首先我们看一下下面的自我介绍:
我叫xx,16年毕业于xx大学计科专业。上大学时就已经开始自学iOS了,到现在也已经工作三年了,一直都是从事的iOS开发工作。16年3月份加入一家2C的创业公司,主要学习研究了UI的处理。17年加入目前2B的做企业服务公司,主要学习研究了架构,设计模式,内存管理这些东西。目前我主要在探索OC的一些设计实现的原理,在学习的过程中发现网上,很多文章对一些知识的认识都是错误的。等忙完这段时间面试,我就要发几篇文章来指正一下这些问题。
几乎所有听完这个自我介绍的面试问题都是:那你说的那些认识错误的问题都有哪些呢?这时就是你主动表现你深入研究过知识点的时候了。
当你被问到一个不会的问题时,不要含糊回答,直接说明你对这个问题认识不深,或者不太清楚。但是我知道...(回答与之相关的知识)
再有可以思考几个常用问题,例如:你认为工作中遇到过印象最深的问题?你还有哪些可以介绍的亮点?你有什么问题想问我吗?这些问题几乎每次都会被问到,提前思考主动准备还是非常有必要的。
更多的关于这方面的总结推荐大家可以看下面两篇文章:
文章写到这里也就到了该结束的时候了,总之一句话机会留给有准备的人。所以最好的方式还是平时花费一定的时间用来提升自己,等到需要做面试准备时,再巩固复习。这个不是告诉大家,这个算是我自己写下来提醒自己的吧!临阵拼命磨枪毕竟对精神和身体消耗极大。个人出文章确实有点慢,为了图中的tcp握手的描述,翻了好多文章书籍,有些[FIN]有些[FIN,ACK]各种各样的都有,最后也是抓包研究得出结论。总之也就是想表达对细节的追求,但水平有限,有不足之处还请大家指点。关于面试的文章到这个时间段,大家可能都没兴趣看了,不管怎样都是自己的经历,也算是对这段时间的一个总结。希望大家喜欢。
作者:SepCode
链接:
https://juejin.im/post/5cdae4fe6fb9a0324c20decf
【END】