15~25k初级iOS开发和中级开发会问个啥?

长文警告
写了那么久的技术文,来点不一样的吧。
最近公司招人,所以面试了一波,总结了一下前端这个区间内的要求吧。
仅代表个人意见和理解

iOS基础面试题部分

  • 1. 为什么说Objective-C是一门动态的语言?
  • 2. 讲一下MVC和MVVM,MVP?
  • 3. 为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?
  • 4. 属性的实质是什么?包括哪几个部分?
  • 5. 属性默认的关键字都有哪些?@dynamic关键字和@synthesize关键字是用来做什么的?
  • 6. NSString为什么要用copy关键字,如果用strong会有什么问题?(注意:这里没有说用strong就一定不行。使用copy和strong是看情况而定的)
  • 7. 如何令自己所写的对象具有拷贝功能?
  • 8. 可变集合类 和 不可变集合类的 copy 和 mutablecopy有什么区别?如果是集合是内容复制的话,集合里面的元素也是内容复制么?
  • 9. 为什么IBOutlet修饰的UIView也适用weak关键字?
  • 10. nonatomic和atomic的区别?atomic是绝对的线程安全么?为什么?如果不是,那应该如何实现?
  • 11. UICollectionView自定义layout如何实现?
  • 12. 用StoryBoard开发界面有什么弊端?如何避免?
  • 13. 进程和线程的区别?同步异步的区别?并行和并发的区别?
  • 14. 线程间通信?
  • 15. GCD的一些常用的函数?(group,barrier,信号量,线程同步)
  • 16. 如何使用队列来避免资源抢夺?
  • 17. 数据持久化的几个方案(fmdb用没用过)
  • 18. 说一下AppDelegate的几个方法?从后台到前台调用了哪些方法?第一次启动调用了哪些方法?从前台到后台调用了哪些方法?
  • 19. NSCache优于NSDictionary的几点?
  • 20. 知不知道Designated Initializer?使用它的时候有什么需要注意的问题?
  • 21. 实现description方法能取到什么效果?
  • 22. objc使用什么机制管理对象内存?

iOS中级面试题部分

Block

  • 1. block的实质是什么?一共有几种block?都是什么情况下生成的?
  • 2. 为什么在默认情况下无法修改被block捕获的变量? __block都做了什么?
  • 3. 模拟一下循环引用的一个情况?block实现界面反向传值如何实现?

Runtime

  • 1.Category 的实现原理?
  • 2.isa指针的理解,对象的isa指针指向哪里?isa指针有哪两种类型?
  • 3.Objective-C 如何实现多重继承?
  • 4.runtime 如何实现 weak 属性?
  • 5.讲一下 OC 的消息机制
  • 6.runtime具体应用
  • 7.runtime如何通过selector找到对应的IMP地址?
  • 8.简述下Objective-C中调用方法的过程
  • 9.load和initialize的区别
  • 10.怎么理解Objective-C是动态运行时语言。

类结构

  • 1. isa指针?(对象的isa,类对象的isa,元类的isa都要说)
  • 3. 介绍一下分类,能用分类做什么?内部是如何实现的?它为什么会覆盖掉原来的方法?
  • 4. 运行时能增加成员变量么?能增加属性么?如果能,如何增加?如果不能,为什么?
  • 5. objc中向一个nil对象发送消息将会发生什么?(返回值是对象,是标量,结构体)

多线程

  • 1.进程与线程
  • 2.什么是多线程?
  • 3.多线程的优点和缺点
  • 4.多线程的 并行 和 并发 有什么区别?
  • 5.iOS中实现多线程的几种方案,各自有什么特点?
  • 6.多个网络请求完成后执行下一步
  • 7.多个网络请求顺序执行后执行下一步
  • 8.异步操作两组数据时, 执行完第一组之后, 才能执行第二组
  • 9.多线程中的死锁?
  • 10.GCD执行原理?

iOS高级面试题部分

底层
  • 1. UITableview的优化方法(缓存高度,异步绘制,减少层级,hide,避免离屏渲染)
  • 2. 有没有用过运行时,用它都能做什么?(交换方法,创建类,给新创建的类增加方法,改变isa指针)
  • 3. 看过哪些第三方框架的源码?都是如何实现的?(如果没有,问一下多图下载的设计)
  • 4. SDWebImage的缓存策略
  • 5. AFN为什么添加一条常驻线程?
  • 6. KVO的使用?实现原理?(为什么要创建子类来实现)
  • 7. KVC的使用?实现原理?(KVC拿到key以后,是如何赋值的?知不知道集合操作符,能不能访问私有属性,能不能直接访问_ivar)
项目架构
  • 1.MVC、MVP、MVVM模式
  • 2.关于RAC你有怎样运用到解决不同API依赖关系
  • 3.@weakify和我们宏定义的WeakSelf有什么区别?
  • *4.微服务架构设想
性能优化
  • 1.造成tableView卡顿的原因有哪些?
  • 2.如何提升 tableview 的流畅度?
  • 3.APP启动时间应从哪些方面优化?
  • 4.如何降低APP包的大小
  • 5.如何检测离屏渲染与优化
  • 6.日常如何检查内存泄露?

iOS面试答案下载
佛系更文,都是自己曾经踩过的坑或者是学到的东西
有兴趣的小伙伴欢迎关注我

你可能感兴趣的:(15~25k初级iOS开发和中级开发会问个啥?)