最近部门结构改变,刚刚学习一年的菜鸟,出去面试了一圈,真真是被鄙视与打击。自学的没有深入学习内部实现原理,主要是以完成项目,学习项目中的知识点为主。经过一周的面试,大致了解了这个行业针对于IOS开发工程师的要求,现在总结如下:
1. 数据结构知识
大部分稍微有点规模或者是有经验的面试官开始会先问数据结构上的算法,手写代码(以下这些都是真实遇到的,也是最常遇到的)。
二叉树建立,前序、中序、后序遍历的递归和非递归实现,求深度,反转二叉树。
双向链表的查找数据,判断是否是单向交叉链表。
快速排序,奇偶数分开算法(要求空间复杂度O(1),时间复杂度O(n))
2.IOS中的技术知识
imageview的contentMode:http://blog.sina.com.cn/s/blog_6558840b0101dpe2.html
bounds与frame的区别:
ios9特性
保证线程安全的几种方式
线程锁的实现方式
coredata升级
coredata关系建立设置
具体到函数怎么写
ios WWDC大会
特定区域两个点击,屏蔽实现
循环引用,block两种方式都会造成循环引用吗
gcd限制线程数
kvo用完需要删除监听,否则会造成什么问题
分类的优点
runtime机制理解
sdwebimage底层实现
生命周期排序:
ViewController的生命周期中各方法执行流程如下:
init—>loadView—>viewDidLoad—>viewWillApper—>viewDidApper—>viewWillDisapper—>viewDidDisapper—>viewWillUnload->viewDidUnload—>dealloc
可以后台运行的:音乐,地理位置,网络电话
启动另外app方式:
可以在 Info.plist 文件中注册程序能 handle 的自定义 URL scheme,当具有这个 scheme 的 URL 被点开时,程序会被系统启动,可以通过 app delegate 的 application:willFinishLaunchingWithOptions: API 获取原始 url。
服务器常用的返回错误码:200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用
友盟登陆返回的接口:http://dev.umeng.com/social/ios/detail-share#11
KVC底层实现:
weak,strong的实现
block内存管理
sdWebImage内部机制
arc的内部实现
viewController的生命周期
KVO怎么实现的
KVC内部机制
runTime
notification内部机制
IOS程序运行的空间:堆、栈、全局区、文字常量区、程序代码区
mvc mvvm
nsnotification原理
判断是否是交叉链表
http,tcp协议
自动布局的比较
github上作品