1、Flutter相关
Flutter的优缺点
Flutter 热重载的原理
Flutter与原生的通信
Flutter和RN的对比指标
Flutter的三棵树渲染机制和原理
Flutter前景与原生的对比,更看好哪一个
Flutter和 Weex、ReactNative对比和区别
Flutter渲染原理,Flutter和Native交互原理
FlutterBoost原理,为什么要使用原生导航
Flutter和ReactNative的区别,兼容性问题
Native+H5遇到的问题,Flutter遇到的问题
简要介绍原生与Flutter混合开发中碰到哪些问题及解决方案
Flutter 渲染三棵树:Widget、Element、RenderObject对比
Flutter有状态和无状态widget有什么区别,有状态widget有哪些生命周期?
iOS相关
一张图片从加载到显示的整个流程是什么?
做过什么性能优化的点?展开讲讲?
图片加载,GPU到openGL阶段的流程是怎么样的?
项目编译的流程是怎么样的?
1.内存管理机制
2.runtime的一些应用场景
3.消息转发机制
4.AutoReleasePool的结构
5.weak原理
6.weak与unowned区别
7.copy可以修饰哪些东西
8.深拷贝浅拷贝
9.用copy修饰mutableString会有什么问题:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to mutate immutable object with appendString:’
10.runloop的source
11.想要在block中修改对象如何做(用__block修饰),需要用__block修饰对象吗
12.Block的注意事项:
非__block修饰的变量,捕获是在block定义时发生的
__block修饰的基本类型: 在MRC和ARC上,都是捕获地址,所以可以修改值
__block修饰对象, MRC不会强引用,ARC中是强引用(需要在block中置为nil)
- 1,2,3,4个子线程,如何在1,2之后,再执行3,4?,信号量是否可以用上
- 组件化方案优缺点对比
- https的加密过程
1.为什么用websocket来走普通的请求,有没有监控实际效果(速度,流量方面)?,有没有防护措施
2.为什么没有直接用collectionViewCell来展示视频?
3.为什么没有播放器为什么要用三个?复用逻辑是怎样的,有没有更好的方案(比如拿到视频数据流自己做缓存)
4.crash防护怎么做的,怎么治理和规避,swift上如何对已经存在的方法做防护(不像OC可以hook系统方法)
5.卡顿监控怎么做的(两种方案的对比和优缺点),如何上报与分析,
6.卡顿时间阈值如何确定的,如果要动态修改卡顿时间阈值,要考虑哪些因素
7.Swift静态性体现在哪些方面,相对于OC性能更好吗?为什么?OC为什么设计成动态的消息机制
8.目前项目的架构是怎样的(分层,组件化),组件化的细节实现(模块间通信怎么做的,有什么优缺点,怎样优化)
runtime-的数据结构和场景
消息转发,hook等
category可以添加属性吗?关联对象可以,为什么不能添加示例变量,如果示例变量也保存到
全局方法中如何实现
block类型,内存
block的截获变量
深拷贝、浅拷贝
kvo要释放监听吗
性能优化--网络、UI、runloop,如何获取到卡顿的方法
算法,计数排序-桶排序
网络-dns,长连接,httpDNS
https
gcd - gcd的方
2、现在做项目的难点是什么,对自己的成长帮助最大,一些细节延伸
4、怎么从100万条数据中选出排在前面的100条数据(topK问题)
5、网络-dns,长连接,httpDNS
6、快排实现过程及复杂度,二叉树的遍历前序、后续遍历
8、聊下性能优化
9、如何保障App的数据安全
10、runLoop,和runloop的运用,实现细节
11、多线程与线程同步锁
- KVO和KVC
- 消息机制, 消息转发
- 方法缓存结构, 存取过程
- 有哪些crash经验, 举具体的例子说明
- arc原理, arc下的相关优化
- runloop流程原理
- GCD和NSOperation区别
- weak原理
- 关联对象原理, 什么时候释放
- 性能优化相关, 内存,启动
- lldb命令
- MLeaksFinder原理, 同理如果用来检测view有没有释放应该怎么做
- 是否懂汇编
- 设计模式, 单例的优缺点
- block内存管理
19对象的内存布局 - 类方法和实例方法的区别
iOS相关:
面试点(必考)
1、iOS
属性修饰符,
block
多线程
runtime、runloop
性能优化
内存管理
HTTP协议基础
2、RN 相关
js基础
RN基础
RN与原生交互
面试点(参考)
1、OC
属性修饰词的作用
isa指针
block原理
多线程: GCD, NSOpration ,NSTread
runtime的原理,黑魔法原理,weak实现的原理
runloop:runloop作用及原理,模式切换,状态
分类,扩展区别
KVO,KVC原理
2、iOS
基础:事件响应链,数据持久化
性能优化: 启动优化,内存优化,网络优化,离屏渲染
生命周期: 生命周期, load 与initialize的区别
三方框架: SD_image原理,AFN原理
3、swift
Swift与OC的区别
Swift如何使用runtime
类与结构体
3、JS
作用域
闭包
promise使用及原理
ES6新特性
4、RN
基础: 生命周期,state和props, react-hook
状态管理: redux原理
RN面试题
iOS 相关
1、nonatomic和atomic的区别?atomic是否真的线程安全,为什么?
2、_name = @“” 和self.name的区别
3、weak和strong的区别
4、遇到的循环引用,怎么解决
5、深拷贝和浅拷贝
6、进程和线程的区别?同步异步的区别?并行和并发的区别?
7、栅栏函数作用
JS
1、 var, let , const,
2、ES6新功能
3、箭头函数和普通函数的区别
4、js 中异步操作有几种方式
5、如何进行深拷贝
RN相关
1、组件声明周期
2、PurCompoment 和Compoment的区别
3、setState的第二个参数是干嘛用的
4、props和state区别
5、react-hook的方法有哪些,为什么hook不能添加条件判断
1、OC和Swift的本质区别
2、nonatomic和atomic的区别?atomic是否真的线程安全,为什么? 对
3、并发队列,线程执行完怎么回到主线程,栅栏函数的应用场景和注意事项
dispatch_group 栅栏函数不能用在dispatch_get_global_queue
4、怎么添加线程依赖?GCD能实现线程依赖吗?
addDependency
5、KVO原理
6、block本质是什么? __block的原理是什么?
7、为什么不能给NSObject的分类添加类方法?
8、runloop的几种模式和区别?怎么切换着几种模式?
9、MVVM 中的Controller属于 M还是V?
10、怎么hook runtime方法?
11、swift可以使用runtime吗?怎么做?
12、消息转发流程
13、怎么优化App启动时间
二进制重排序
Edit Scheme -- 选择一个Scheme(比如:Run)-- 选择Arguments -- Environment Variables -- 点击添加 -- 设置 name: DYLD_PRINT_STATISTICS value : ${DEBUG_ACTIVITY_MODE}
14、tcp和http的关系 三次握手?
15、StatelessWidget和StatefulWidget的生命周期
StatelessWidget:初始化、通过build()渲染。
StatefulWidget
16、Flutter 是如何与原生Android、iOS进行通信的?Flutter 通过 PlatformChannel 与原生进行交互,其中 PlatformChannel 分为三种:
BasicMessageChannel :用于传递字符串和半结构化的信息。
MethodChannel :用于传递方法调用(method invocation)。
EventChannel : 用于数据流(event streams)的通信。
同时 Platform Channel 并非是线程安全的 ,更多详细可查阅闲鱼技术的 《深入理解Flutter Platform Channel》
17、状态管理