简历背景
自我简介
深耕iOS开发领域四年, 熟悉iOS开发底层原理、性能优化、架构设计。
深入了解Flutter,熟悉Flutter与客户端的通信机制、状态管理、路由设计。
参与千万级用户量应用的迭代维护,曾在一个月内完成主业务线的梳理和新业务的开发,承担PM去统筹规划需求,并最终正式上线。
主导百万级日活应用的Flutter重构,着重负责原生端插件开发,Flutter性能优化,日志工具类。
基于Flutter实现Socket通信、BLE蓝牙连接。
基于中科蓝讯的OTA和AB Mate协议文档对硬件设备的固件进行升级和通信。
带领一个团队完成 NearHub rooms 设备管理平台。
专业技能
熟悉Objective-C语言。熟悉常用的数据结构和算法。
熟练掌握KVC、KVO使用机制底层原理。
熟悉多线程开发和线程安全机制,熟练掌握GCD和NSOpearation。
熟悉AFNetworking、SDWebImage、Masonry等主流三方库。
熟悉内存管理、崩溃处理、卡顿检测和性能优化等。
熟悉组件化的开发模式,能够通过路由设计对cocoapods创建的组件进行解耦通讯。
熟悉MVC和MVVM架构设计。
熟悉Flutter框架和Dart语言。
熟悉provider、flutter_boost、dio等主流三方库。
熟练掌握GetX。
熟悉flutter_hooks(钩子)+freezed(模型)+hooks_riverpod(状态管理)整套开发业务流程。
熟悉Flutter原生iOS插件开发,iOS插件三方依赖等。
熟悉Flutter中的Canvas绘制,进行画笔绘制,元素自定义渲染。
熟悉Socket、BLE蓝牙通信机制,实现硬件端固件升级和通信。
项目经验
都是些小项目。有蓝牙项目,白板项目,二次元社区项目,医疗项目。
面试准备
准备不足。很多细节自己没充分准备好。主要是自己目前心态问题。目前在培养面试感觉和积累面试题。
杭州线下Flutter面试
A-MT宇宙公司-Flutter面试
- Flutter版本更新导致出现的问题有哪些,除了API更改之外还有那些。你用的plugin包不可兼容。找替换,找不到替换怎么处理。
- Flutter正在使用的版本是那个?
- 混合开发做过吗?原生插件是如何通信的?通信有几种?
- 混合开发中的Flutter路由和原生路由是如何管理的。路由是怎么跳转的。Getx是如何管理路由的。Getx的路由和Flutter原生的路由有什么本质的区别。
- 聊一聊Getx的状态管理。Widget是怎么绑定Controller的,又是怎么找到的。
- Flutter_boost了解嘛?使用过程中遇到过什么问题,怎么解决的。popscoge返回不触发怎么解决。它是多引擎还是单引擎。
- 白板项目-canvas的save方法用过嘛?
- Flutter的通知有几种。Future和Stream。Future可以等待多个异步嘛?不可以。Future和await关系。
- Flutter常用的库有那些。Flutter调用相机功能用那些库。
- Getx全平台适配是如何做的。
- Widget的key是什么?
- 三颗树。对应关系是如何的。
- Flutter手势冲突有了解吗?Gesture包裹container,container包裹包含文字的text,container给的区域大于text,点击哪里会响应事件。回答:container假如有背景颜色就是container响应。假如没有,就是text。为什么?
- Flutter调试你用的什么工具?
- 印象中比较深的问题是什么及最后是如何解决的?
A-MT宇宙公司-iOS面试
- KVO原理。派生子类和原来的类是如何关联起来的?
- 什么是消息转发。
- 线程和自动释放池有什么关系?
- 线程和runloop有什么关系?runloop什么时候被释放?什么时候调用drop方法
- block修饰用strong还是copy?面试官说:无论如何都不会用strong。copy是从栈到堆还是从堆到栈。
- block那些场景需要copy。
- weak和assign有啥区别?weak啥时候释放,怎么回收的。
A-MT宇宙公司-面试感受
提问还是可以的。只不过iOS的提问感觉很公式而且基本问不出什么。都是需要背的面试题。
B-QW网络公司(独立大楼)-Flutter面试
算法:
1、1+100用递归函数实现。不用全局变量,不用静态全局变量。
2、随便选择一个排序算法实现。冒泡,快排,选择等都可以。
面试题:
1、聊一下你了解的泛型。泛型使用场景。用泛型解决什么问题。使用泛型有什么好处。
2、首页列表页面滚动不够流畅如何解决,感觉没有达到原生的帧率。
3、后台改了服务器字段,前端崩溃怎么解决的。(简历中写了,所以被问。后台服务器更改字段导致线上app闪退)。
C-WJ之城公司-Flutter面试
1、原生项目作为主体,Flutter模块作为module集成到项目中的混合开发。你们是如何解决多引擎的问题?
2、新项目的技术选型是什么,淘汰了什么,优点是什么。(之前的项目为何选用Getx,以及后续为何放弃GetX)。
3、Flutter的性能优化都做了那些事情。
4、针对苹果手机上的高刷屏,Flutter本身在滑动列表上就不如原生,怎么优化?什么导致滑动不够流畅,怎么解决这些问题。
5、Flutter和原生的通信机制。EventChannel和MethodChannel有什么区别。
6、GetX有哪几种方式可以更新状态?用法和原理上有什么区别。状态是如何变更的?(我回复通知。)。GetxBuilder和Obx有什么优缺点?
场景:无限跳转同一个商品详情页面(widget),仅仅区别是id。页面路由还在。A跳转到B,B跳转到C,同一个页面如何显示不同的数据源。
7、context是什么?context的源码介绍是怎样的?
8、Flutter的三颗树。
9、Flutter的页面生命周期是如何做的?类似iOS和安卓的页面将要出现等等。
10、iOS中GCD和NSOperation的区别和谁使用比较多?功能有啥区别。
11、iOS的消息发送机制。实际场景中是否用过。
12、有没有在实际项目中用过Swift?
13、Flutter中动画用的多吗?