作业帮
一面:
1.Runtime 和 Runloop 应用,除了OC,还有哪些是动态语言
2.Swift 中 @objc 的作用
3.IM 断线重连,离线消息和在线消息;IM的监听回调的分发,多个页面都需要监听
4.Webp 加载慢
5.跟H5交互 频繁发消息
6.内购,支付成功后,接口返回失败
7.直播 动画,视频插帧,视频动画里的某一帧里新增自定义文字
8.怎么控制依赖库的打包顺序
9.import 尖括号和双引号,为什么尖括号就能找到第三方库的某一个文件,而不用完整路径
10.subspec 除了 dependency 还有哪些
11.移除 armv7 只支持真机吗?一些三方库带 armv7,为了提升打包速度,怎么移除
12.export
13.ipa 包里都有哪些东西
14.接口缓存
15.有没有写过一些脚本,提效的工作
16.js 的单线程和事件循环
算法:
任务并发控制的实现
// tasks 比如100个计算任务
// limit 最多3个
// allDoneCallback 所有任务执行完毕的回调
func excuteTasks(tasks: [func], limit: Int, allDoneCallback: func) {
…
}
二面:
1.Block 原理,循环引用
2.Runtime 应用,动态更新,为什么 OC 要这么设计?
3.Runloop 应用
4.做过哪些优化
算法:在10000个int数组里,找出最大的 topK 个数
参考答案
1.Runtime 和 Runloop 应用,除了OC,还有哪些是动态语言
2.Swift 中 @objc 的作用
| 场景 | 是否需要 @objc | 说明 |
|---|---|---|
| Swift 调用 Swift | ❌ | 无需 |
| Swift 调用 Obj-C | ❌ | Swift 自动桥接 |
| Obj-C 调用 Swift | ✅ | 必须显式 @objc |
| 使用 #selector | ✅ | 否则编译错误 |
| KVO / KVC | ✅ @objc dynamic | |
| Method Swizzling | ✅ @objc dynamic | |
| 响应事件 (UIResponder) | 自动添加 | UIKit 内部已处理 |
3.IM 断线重连,离线消息和在线消息;IM的监听回调的分发,多个页面都需要监听
4.Webp 加载慢
5.跟H5交互 频繁发消息
6.内购,支付成功后,接口返回失败
7.直播 动画,视频插帧,视频动画里的某一帧里新增自定义文字
8.怎么控制依赖库的打包顺序
9.import 尖括号和双引号,为什么尖括号就能找到第三方库的某一个文件,而不用完整路径
10.subspec 除了 dependency 还有哪些
11.移除 armv7 只支持真机吗?一些三方库带 armv7,为了提升打包速度,怎么移除
1 | # 查看包含哪些架构 |
12.export
13.ipa 包里都有哪些东西
1 | MyApp.ipa |
14.接口缓存
15.有没有写过一些脚本,提效的工作
打包上传蒲公英平台,切换汉口银行SDK的文件,JSON自动生成模型
16.JS的单线程和事件循环
- 执行同步任务(主线程)
- 执行所有微任务(Promise、nextTick)
- 执行一个宏任务(setTimeout 等)
- 重复循环
算法:
任务并发控制的实现
// tasks 比如100个计算任务
// limit 最多3个
// allDoneCallback 所有任务执行完毕的回调
func excuteTasks(tasks: [func], limit: Int, allDoneCallback: func) {
…
}
1 | typedef void (^TaskBlock)(void); |
二面:
1.Block 原理,循环引用
2.Runtime 应用,动态更新,为什么 OC 要这么设计?
3.Runloop 应用
4.做过哪些优化
算法:在10000个int数组里,找出最大的 topK 个数