面试题

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. 1,2,3,4个子线程,如何在1,2之后,再执行3,4?,信号量是否可以用上
  2. 组件化方案优缺点对比
  3. 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、多线程与线程同步锁

  1. KVO和KVC
  2. 消息机制, 消息转发
  3. 方法缓存结构, 存取过程
  4. 有哪些crash经验, 举具体的例子说明
  5. arc原理, arc下的相关优化
  6. runloop流程原理
  7. GCD和NSOperation区别
  8. weak原理
  9. 关联对象原理, 什么时候释放
  10. 性能优化相关, 内存,启动
  11. lldb命令
  12. MLeaksFinder原理, 同理如果用来检测view有没有释放应该怎么做
  13. 是否懂汇编
  14. 设计模式, 单例的优缺点
  15. block内存管理
    19对象的内存布局
  16. 类方法和实例方法的区别

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、组件声明周期


componentWillMount.jpg

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、消息转发流程

resolveinstanceMethod.jpg

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


image.png

16、Flutter 是如何与原生Android、iOS进行通信的?Flutter 通过 PlatformChannel 与原生进行交互,其中 PlatformChannel 分为三种:
BasicMessageChannel :用于传递字符串和半结构化的信息。
MethodChannel :用于传递方法调用(method invocation)。
EventChannel : 用于数据流(event streams)的通信。
同时 Platform Channel 并非是线程安全的 ,更多详细可查阅闲鱼技术的 《深入理解Flutter Platform Channel》
17、状态管理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载自:https://cloud.tencent.com/developer/article/2006176[h...
    波吉c阅读 5,245评论 0 1
  • PS:面试题内容来自群友收集分享,非本人!!! 真实面试题 load方法调用顺序、调用superLoad会走到谁?...
    凯文Kevin21阅读 4,518评论 0 1
  • 声明:面试是对自我审视的一种过程,面试题和iOS程序员本身技术水平没有对等关联,无论你能否全部答出,都不要对自己产...
    Kevin_wzx阅读 6,729评论 1 2
  • 关于面试题 打个比方,如果把找工作理解成考大学,面试就是高考,市面上的“真题”就是模拟试卷。我们会很容易倾向于在面...
    90后的思维阅读 9,783评论 0 14
  • Swift 1、Swift中struct和class有什么区别? struct是值引用,更轻量,存放于栈区,cla...
    赵_df7e阅读 2,425评论 0 0

友情链接更多精彩内容