时长:1h
1. 自我介绍:5分钟
2. 项目介绍:大约15分钟,包括实验室和iOS项目,主要针对iOS项目中的一些技术问题提问
2.1 你iOS项目里面有用到数据库,还知道哪些数据持久化方法?
答:userDefault、归档技术(NSCoding)、plist、core data
2.2 你用到了snapKit,是如何进行视图约束的?
2.3 在OC里面也有类似的约束布局库,知道是什么吗?(masonry)
2.4 项目里面的SQLite是怎么使用的?
3. iOS基础知识:
3.1 了解OC的方法调用机制吗?
回答:OC的方法调用被称为发送消息;消息调用机制,isa指针、方法列表
3.2 如果在本类里面找不到这个方法,会怎么样?
3.3 你刚才说OC在找不到消息的时候允许用户来进行转发控制,是怎么控制的?(runtime消息转发机制,没答好)
3.4 了解runLoop吗?说一下runLoop的处理流程?(详细说一下runLoop的模式和事件监听)
3.5 performSelector方法是干什么用的?
3.6 OC中还有一个方法是
- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay;
这个方法如果放在子线程中执行一个方法,并且设置好延迟时间,会发生什么?会执行吗?(其实还是在问子线程runloop处理Timer的机制,没答上来)
3.7 了解异步绘制吗?如果现在有一个UILabel,如何在子线程中进行异步绘制?
3.8 如何实现性能优化?(聊到了UITableView的优化、离屏渲染等)
4. 力扣原题110:是否为平衡二叉树
5. 反问:
5.1 您在哪一个部门?主要是做哪方面工作的?
5.2 (灵魂拷问)现在都说移动端行业发展衰败了,iOS更是岌岌可危,尤其是近些年业务不断被前端蚕食,您认为iOS未来的发展情况是什么样子的?
答:(面试官尴尬而不失礼貌地笑,支吾了一下)大概意思是,只要有iOS这个岗位在,他就不会说有被完全取代的可能。不是说iOS发展不行了,而是iOS的门槛提高了,还是要跟自己的水平挂钩,如果你本身的水平够高,那么无论iOS发展到什么样子都对你没有什么影响(坚定)