前言
开门见山,这篇文章,适合**「中高级iOS开发」**,如果你现在待业,或者想跳槽并且还在求职的话,可以看看本文,找一找灵感,希望对你们有帮助。
2020年注定是一个特殊且不平凡的一年。*
疫情之下,内忧外患,部分企业,倒下的倒下,扣薪的扣薪……,在这样的大环境之下,即是危机也是机会,毅然决定踏上求职之路。
起初自信满满,在没有做好充分准备情况之下,简历寥寥草草,简简单单,以至于错失不少好机会。切记切记!吃一堑长一智。
最后通过优化精简排版简历,接到不少互联网大厂的邀约面试。事实证明,拥有一份好简历,你已经成功一半了。最终,通过两个月的艰苦奋战,终于拿到自己比较满意的offer。为了做个总结,特开此篇,仅供参考~
我的感受就是,自己一边梳理知识点,一边总结归纳,收获可能更大,所以打算把我梳理的部分分享出来,篇幅有点长,大家见谅。
覆盖的点不是很全,分享给你们,希望你们在金九银十的招聘季一切顺利,offer收割机❤️❤️❤️
1、面试经历
坐标:深圳,面试公司数:约15家, offer:到手的有2两个,还有2家也进入谈薪阶段,谈完后就一直没下文了,表示很郁闷。 面试方式:大部分采用远程视频面试,极少现场面试。面试特点:一轮iOS技术面(OC基础+OC底层+算法), 二轮广泛技术面(网络工程+数据结构+算法)+HR面。总体感受,今年面试最大特点是,首先.机会比往年少很多,iOS招聘需求主要集中在3-5年工作经验(换句话就是说岗位薪资20k普遍是上限,当然大厂除外),其次. 技术方面:OC底层已是必须掌握,Swift极少被提到。
作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:413038000,不管你是大牛还是小白都欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!
推荐阅读
iOS开发——最新 BAT面试题合集(持续更新中)
2、iOS高频(基础+底层)面试题
1. 你在开发过程中常用到哪些定时器,定时器时间会有误差吗,如果有,为什么会有误差?
iOS中常NSTimer、CADisplayLink、GCD定时器,其中NSTimer、CADisplayLink基于NSRunLoop实现,故存在误差,GCD定时器只依赖系统内核,相对一前两者是比较准时的。
误差原因是:与NSRunLoop机制有关, 因为RunLoop每跑完一次圈再去检查当前累计时间是否已经达到定时设置的间隔时间,如果未达到,RunLoop将进入下一轮任务,待任务结束之后再去检查当前累计时间,而此时的累计时间可能已经超过了定时器的间隔时间,故会存在误差。
参考《iOS常见三种定时器-NSTimer、CADisplayLink、GCD定时器》
2. NSTimer、CADisplayLink会产生循环引用吗?如果会,你是如何解决的?
如果直接使用,会产生循环引用问题。可以增加一个中间类,给这个类添加一个用weak修饰的id 类型target属性,并重写中间类的消息转发方法。实现如下代码:
声明文件.h:
#import <Foundation/Foundation.h>
@interface LXProxy : NSProxy
+ (instancetype)proxyWithTarget:(id)target;
@end
实现文件.m
#import "LXProxy.h"
@interface LXProxy ()
/** weak target*/
@property (nonatomic, weak) id target;
@end
@implementation LXProxy
+ (instancetype)proxyWithTarget:(id)target{
LXProxy *proxy = [LXProxy alloc];
proxy.target = target;
return proxy;
}
- (NSMethodSignature *)methodSignatureForSelec