通用

  • 说一下 C 程序的编译过程(描述几个重要的阶段就行)

1、预处理
2、编译
3、汇编
4、链接

  • 谈一谈对静态库跟动态库的理解 (考察知识点,与描述能力)
  • 研究过哪些开源库? (考察有没有花过时间学习优秀的代码)

    iOS技能

    基础:

    • (void)drawRect:(CGRect)rect 方法是干嘛用的?
  • 触发drawRect方法时是异步还是同步的?
  • setNeedsDisplay、layoutIfNeeded 各有什么用、有啥区别?
  • iOS下的事件传递?
  • 超出父视图的手势、事件,该如何让他响应?
  • 如何做到一个事件多个对象处理?
  • UICollectView流式布局怎么实现?
  • 如何使用AutoLayout布局做动画?
  • 说说导入头文件的几种方式,都有什么不一样?
  • ARC下引用计数管理器的加减规则是什么(什么时候+1、什么时候-1)?
  • 结构体跟类的区别?
  • UITableView的重用机制

深入:

  • Swift懒加载实现,跟OC有什么区别? 是否是线程安全的?
  • 说明在 iOS 开发中有哪些多线程的实现方案,对比有什么优势?
  • 如何设置队列的优先级?
  • 线程任务依赖的时候选择用哪个 函数(dispatch barrier)?
  • 当我们的数组需要在多线程情况下遍历时可以使用? (dispatch_apply)
  • 多任务同步使用哪种(dispatch_group)?
  • GCD信号量怎么使用的?
  • runtime的实现机制是怎么样的,它做了什么事情?
  • Runroop跟线程之间有什么关系? ()RunLoop是来管理线程的)
  • (runroop)mach消息发送机制流程
  • 怎么保证子线程处理完数据回主线程更新UI不打断用户滑动操作
  • 怎样创建一个常驻线程?
  • mach-o文件是什么文件?
  • mach-o文件由那几部分组成? (header, loadCommands , data段)
  • iOS的系统架构大概分哪几层?
  • UI层: 主要有SpringBoard、Spotlight等UI交互界面
  • 应用框架层:主要有 Cocoa Touch
  • 核心框架层:主要有 OpenGL、Quartz等图形、多媒体组件
  • Darwin:操作系统核心,包括XNU内核和UNIX shell
  • iOS 内核和二进制文件编译的目标架构是什么?
    • (XNU 内核 架构arm)
  • iOS下的安全机制都有哪些?
    • 代码签名
    • 沙盒机制
    • entitlement

项目:

  • 项目中开发、发布环境变量如何配置?
  • 如何设置多语言环境?
  • 如何适配暗黑模式?
  • 自定义bundle中的资源如何加载?
  • 图片放入.xcassets 文件夹中与放在普通文件夹中有什么不同吗?
  • 说下iOS的推送流程?如果想推送视频、音频等多媒体推送如何做?
  • 如何对应用重签?
  • 有没有办法调试线上应用的UI?
  • 如何抓包 https请求?


  • 图片压缩如何实现?
  • 视频压缩是怎么实现的?
  • 包依赖管理工具都需要具备什么功能(cococpods为例)?
  • 平时怎么调试api数据的?
  • 控制器嵌套如何转发生命周期?
  • github有些依赖库比较慢, 会影响开发效率,平时都是怎么处理的?
  • 日常开发中如何调试沙盒内的数据?
  • curl 是什么工具?
  • 终端的常用操作命令? (文件操作、拷贝、ssh连接)
  • Shell 、Python、ruby、JavaScript等脚本语言的掌握情况。

优化:

  • iOS 如何优化界面流畅? 应用包大小如何优化?

工具篇:

  • Cocopods是用来干什么的? 大概是怎么做的?
  • git stash (贮藏)命令是什么的?
  • git subModule 有了解过吗?有的话说下大概是做什么的?
  • git 如何更正上一次修改?git cherry-pick 命令有用过吗?
  • XCode常用的一些快捷键

设计:

  • Xcode项目如何设计的, 考虑了哪些问题, 依据是什么? (抽象思维)
  • 如何标记一个类不能被继承
  • 组件化, 如何拆分模块, 拆分方式是什么?(多target, 多工程, 工程间依赖 cocopods 进阶)
  • 谈谈对面向对象的见解?(封装,继承,多态)
  • 设计模式的六大原则?
  • 设计一个类需要考虑那些点?(抽象,封装,耦合,安全)
  • 继承有什么优点和缺点?(继承深度,重名方法,基类冗余,耦合,组合)
  • MVP跟MVC有什么不同点?

    实战(可选)

  • UICollectionView 如何实现两个cell重叠?

  • 如何实现用代理的形式实现1对多?
  • 使用Masonry如何做动画?
  • 快速排序?
  • 如果要设计一个视频流媒体播放器,支持实时缓存,简要描述下该怎么设计?(可选)
  • 如何实现一个完全深拷贝? (NSKeyedArchiver,手写)
  • 如何对一个类进行重构? (单元测试, 业务细节)

    个人素质考察

  • 有用过flutter吗? 或者有了解过市面上一些跨平台方案吗? 对此类技术怎么看?

  • 从技术点上介绍下你做的产品
  • 你负责哪部分?
  • 在团队中你承担了什么角色?
  • 对自己不最不满意的点, 距离优秀的那个点,有什么差距,有什么计划去执行?
  • 近几年自己是怎样方式使自己的工作技能进步的、学习途径是什么?
  • 面试时间有限,可能有些你擅长的点没有考察到,请问有没有主动想跟我聊的点?
  • 平时除了iOS有没有接触过其他方向? 都对什么技术感兴趣?
  • 下一份工作想要什么,对公司,对团队有什么期望吗?