2020年iOS高级工程师面试技术点精华汇总
需积分: 18 49 浏览量
更新于2024-08-31
收藏 14KB DOCX 举报
在2020年的iOS高级工程师面试中,面试官们关注的技术点涵盖了多个关键领域,旨在评估候选人的全面技术能力以及在实际工作中的实践应用。以下是一些重要的知识点总结:
**网络技术:**
1. **HTTP和HTTPS的区别** - HTTP是无状态的、明文传输协议,而HTTPS在其基础上加入了SSL/TLS加密,提供数据安全。
2. **HTTPS加密方式** - 包括TLS/SSL握手、公钥/私钥对加密通信和数据完整性校验等,如数字证书和预共享密钥。
3. **HTTP缺点** - 明文传输不安全,缺乏状态跟踪,数据易受中间人攻击。
4. **TCP和UDP的区别** - TCP是面向连接、可靠的数据传输协议,UDP则是无连接、不可靠的,但速度快。
5. **TCP优化** - 缓存重用、 Nagle算法调整、TCP窗口大小优化等。
6. **网络响应慢优化** - 分析网络请求、减少重定向、压缩数据、优化图片加载策略等。
7. **Socket** - 属于传输层,实现进程间通信,基于TCP或UDP协议。
**APP优化与性能管理:**
1. **编译速度优化** - 使用构建缓存、模块化开发、代码重构等方法。
2. **冷启动速度** - 减少启动时的资源加载、使用预加载、代码分割等。
3. **后台保活** - 通过持续运行服务、使用推送通知等方式实现。
4. **性能检测与优化** - 使用Instruments、Xcode性能分析工具进行监控,根据发现的问题针对性优化。
5. **埋点实现** - 设计合理的数据上报逻辑,利用Apple的Analytics框架或者第三方工具。
**视频和IM技术:**
1. **webRTC的PLI** - packet loss indication,用于检测丢包并采取措施,如回传重传请求。
2. **WebSocket连接建立** - 基于TCP,长连接、双向通信,全程由客户端发起并维护。
3. **IM协议选择** - 可能涉及XMPP、MQTT等,具体取决于应用需求。
4. **H264编码** - 优点是压缩率高、编码效率好,缺点可能包括编码复杂度和兼容性问题。
5. **音频采样优化** - 调整采样率、位深度、编码格式以适应设备性能。
6. **解码硬件与软件** - 硬解高效且占用CPU少,软解则更灵活但消耗更多CPU资源。
7. **RTMP与RTSP** - RTMP常用于直播,实时传输;RTSP用于控制和流媒体传输,通常较慢但支持多路复用。
**多线程管理:**
1. **GCD/NSThread/NSOperation** - GCD轻量级、高效,适合任务分发;NSThread用于创建线程;NSOperation适用于复杂的异步操作。
2. **GCD底层原理** - 基于dispatch queue实现任务调度和同步。
3. **网络请求依赖场景解决方案** - 可能涉及依赖队列、协程或回调等策略。
4. **常用锁类型** - NSLock、GCD锁等,用于保护共享资源。
5. **atomic与线程安全** - atomic提供了原子操作,但并非所有对象都自动线程安全。
6. **NSArray线程安全** - 通过遵守NSFastEnumeration协议实现,避免并发修改。
**架构设计:**
1. **APP架构理解** - MVC、MVVM、VIPER等模式的应用,模块化、层次化设计原则。
2. **重构页面策略** - 性能优化、用户体验提升、代码清晰度等方面考虑。
3. **MVVM与MVC比较** - MVVM更注重数据绑定和可测试性,MVC则更直观但可扩展性差。
4. **APP动态化方案** - 如自定义模块、插件化开发,需要考虑热更新技术。
**安全相关:**
1. **本地数据加密** - 使用加密算法(如AES)对敏感数据进行保护。
2. **对称与非对称加密** - 对称加密速度快但密钥管理复杂,非对称加密安全性高但效率低。
3. **哈希算法** - 提供数据完整性检查,如MD5、SHA-1等。
4. **非对称加密算法** - RSA、ECC等,用于密钥交换和数字签名。
5. **HTTPS安全问题** - 防止中间人攻击、证书验证等,破解手段包括SSLstrip等。
6. **手机越狱检测** - 检查root权限、签名验证等。
7. **防止反编译** - 加密代码、混淆技术、动态加载代码等。
**Runtime与内存管理:**
1. **方法交换原理** - 在运行时改变类的方法实现,常见于插件化或动态代理。
2. **消息转发流程** - 当未找到直接处理者时,消息会经过一系列转发机制寻找合适的方法。
3. **分类加载顺序** - 类的初始化遵循自下而上的顺序,依赖于category、类、模块等。
4. **KVO原理** - 观察者模式,通过KVC实现属性变化的通知。
5. **weak指针自动置nil** - 解决循环引用问题,当强引用消失时,weak指针将自动变为nil。
6. **RunLoop用途** - 处理定时器、事件循环、I/O操作的管理。
7. **内存管理优化** - 避免内存泄漏、减少不必要的Retain-Copy操作,合理使用ARC。
**UI与图形渲染:**
1. **触摸事件传递** - 从屏幕触发表达式,经过事件处理器到目标View响应。
2. **视图层次结构** - UIView层次结构,从父视图到子视图的嵌套关系。
3. **阴影与圆角绘制** - 可能使用layer样式或自定义视图来实现。
4. **tableView性能优化** - 只渲染可视区域的cell,复用机制和数据源/代理方法的优化。
5. **GPU渲染与离屏渲染** - 利用GPU加速图形渲染,解决视图更新和内存占用问题。
这些知识点展示了面试者对iOS高级工程师所需技能的全面掌握,涵盖了网络通信、性能优化、架构设计、安全防护、内存管理等多个方面,是评估候选人技术实力的重要参考。
186 浏览量
830 浏览量
m0_50693732
- 粉丝: 1
- 资源: 3
最新资源
- Cherimoya Advanced Hotstar Subtitle Fetcher-crx插件
- centOS初学者必备软件-配合本人博客使用(FileZilla、putty汉化版).zip
- 分类好的17flowers dataset
- uadeutschland.github.io:匿名的Deutschsprachige主页
- localize-maven:Localize.io Maven存储库
- simplestone_metadeck
- 经典的大富翁游戏
- react-flux-webpack-template:这是一个带有 webpack 的 react 和flux 模板
- 【最新版】coconutBattery_390.zip【亲测可用】最好的Mac,iPhone和iPad中电池质量的实时信息
- pyEntropy:Python的熵
- spring-boot-web-mustache
- Swipe Gesture-crx插件
- Redactor-crx插件
- 根据url一键爬取前端页面资源文件---小飞兔
- 矮个子:缩短链接的应用程序
- beamr:Beamer的最小标记语言