手机(微信):13314118556 | 邮箱:[email protected] | 生日:1990.04
特长:篮球(大学校队、代表咪咕音乐参加比赛)
Android 高级开发工程师
2009.09~2013.06 哈尔滨理工大学 通信工程 本科
2017.08~2022.01 咪咕音乐有限公司(软通动力)
- 业务功能开发:负责咪咕音乐 Android 端设计、开发和维护
- 项目代码重构:对旧的臃肿代码进行拆分解耦;对整个项目工程进行组件化;
- 项目架构调整:MVC 转 MVP 转 MVVM;Support 库向 androidx 库升级;jetpack 库引入;
- 项目开发协助:为业务组开发需求提供支持,App 开发者模式方便业务开发调试
- App优化:代码优化、内存优化、项目结构优化等
2015.08~2017.06 美空网
- 负责美空App 和美空通告两款 Android 端应用的设计、开发和维护
- 独立开发接手外包的美空 App 开发,对项目进行整理、重构、遗留 bug 处理
- 对项目使用的技术进行升级和优化
熟练掌握 Java,熟悉常用的数据结构及算法。了解泛型,反射,自定义注解及其原理,多次使用常用的设计模式重构代码。
熟练掌握 Kotlin,语法及高阶函数、拓展函数、协程等技术理解与使用。
熟练掌握 JVM、Dalvik、ART 原理,对多线程原理(synchronized,voliate,CAS,AQS)、反射、动态代理以及对 ClassLoader 热修复的理解和使用。
精通自定义 View,熟悉 View 绘制流程,能利用事件分发原理解决 UI 交互问题
通过阅读 FrameWork 层源码,了解 Binder、Handler、AMS、WMS、绘制流程、事件分发等
对 App 的代码优化、内存优化、性能优化、安装包优化有实际的调优经验
掌握网络编程,http、https、TCP、UDP 等相关知识
熟练掌握 okhttp、retrofit、Glide、LeakCanary、EventBus、RxJava2 等第三方架构的使用和原理
熟练使用 MVC、MVP、MVVM 组件化,插件化等安卓架构,有实际的架构搭建经验
熟练使用 Jetpack 组件包,DataBinding、LiveData、ViewModel、Room、WorkManager 等组件的使用和理解
熟练使用 Jenkins 和 Gradle 实现自动化构建打包
项目描述:以听音乐为主功能,兼具K歌、短视频、演唱会直播/回放、演唱会购票、音视频彩铃等集多功能一体的音乐娱乐 App。
责任描述:需求跟进、代码重构和设计、页面UI与逻辑功能的实现、App 优化
技术要点:
- MVP+Dagger2搭建app框架
客户端各主业务组件采用 MVP 模式,将 UI 与业务分离,通过 dagger2 实现依赖注入进一步解耦。
Activity 只做页面入口,使用 Delegate 作为 Activity 的泛型掌控 V层的显示,在 BaseActivity 基类中通过 Delegate 提供的方法进行页面初始化,Presenter 控制业务逻辑。
使用 Dagger 注解通过依赖注入的方式完成 Presente r和 Model 的创建,避免了 View 层直接创建 Present 与 Present 层直接创建 Model 造成的依赖关系,将 View 层与 Presente r层,Present 层与 Model 层进行解耦,降低了模块的耦合度。
- 首页UI动态化方案
引入卡片概念,将需要展示不同的 UI 块,定义成不同的自定义 View 卡片,并通过自定义注解卡片名称编译期生成映射表。在 UI 页面的纵向列表,根据后台返回的数据的顺序,动态布局页面卡片位置。
- 组件化方案
页面跳转:基于 ARoute 原理,自定义路由库。使用注解标注 Activity,编译器通过注解处理器扫描注解并且生成路径与 Activity 的映射表文件,初始化时将映射表加载到内存。
页面通信:使用 RxBus 事件发布-订阅总线方案,在公共库中定义各个业务的事件 code 及各个业务事件所需要的事件数据结构类
组件间调用:各个业务组件对外提供服务接口 API 库,只提供接口和数据结构在编码阶段使用,不提供实现。在主模块应用初始化中,将业务提供的服务实现对象注入到 API 库中。
插件化:基于 Adroid App Bundles 开发套件实现的插件化方案;彩铃模块使用 Shadow 插件框架,用于各省中国移动客户端的插件功能。
- 网络模块
基于 okhttp 进行了二次封装, 构建 NetLoader 网络工具库,方便易用。
初始化阶段配置网络请求基本配置:域名、通用拦截器等。请求采用链式调用方法的方式,依次传入接口、响应数据结构、拦截器、异步/同步、回调对象等参数,请求接收响应数据
- XLog日志库
基于 Timer 日志库二次封装,提供开发阶段的日志输出打印,及错误日志保存功能。
提供 i()、d()、e() 等不同级别日志打印。在初始化时传入不同的日志类型,在日志输出时可以优雅显示不同的日志风格,方法调用栈信息或单纯的调用日志位置信息等。
由于调用打印日志时,会在内存中生成字符串对象占用内存,而先版本不需要这些日志。使用 AOP 方式,在编译阶段遍历调用日志输出的文件和位置,判断除了 e() 错误日志外的其他日志添加 if 判断不执行日志输出。从而进行内存优化
- App打包方案
Jenkins自动化构建打包。
项目描述:一个基于短视频、语音、照片发布动态的垂直社区社交软件。
项目经历:我在此项目负责 app 整体开发和优化工作,接手一个月后进行独立开发。改善了 app 的 crash 率和用户体验,解决难点问题:比如一次,在两个同事用一天时间对一个 bug 束手无策,我能抓住痛点用十分钟搞定 bug。这个项目中,我最困难的时候是刚接手 app,遗留 200 多个 bug,要求一星期解决。通过高强度的加班,有些 bug 要把之前代码删掉重构,还好最后按要求完成多有任务。在这个项目的工作中,通过技术经验和活跃思维,在认真负责的态度下,对 app 的开发和优化,使 app 的 crash 率从 20% 降到 0.1%。用户体验得到了提升。在年会饭桌在年会饭桌上,领导对我赞赏说:这个 app 多亏我了。
责任描述:App业务需求开发、代码重构、技术升级、性能优化
技术要点:
- 网络:基于okhttp的优秀网络框架OkGo
- 图片:Glide,ImageLoader
- 发布/订阅框架:Eventbus
- 推送:极光
- 第三方登录/分享:友盟
- 即时通讯:环信
项目描述:商家发布商业拍摄及需要模特条件的需求,模特筛选符合自己需求的通告,为二者提供平台。
项目经历:我在此项目负责 app 部分功能开发和优化工作。改善 app 用户体验和代码架构。刚接手接手这个 app,由于业务不熟,代码设计混乱,要求一个小版本要优化好代码和体验,由于同事之间并发,做优化和重构代码并不是短时间内完成,通过跟领导的沟通,最后通过几个小版本的迭代完成优化和。通过技术经验的累计,对 app 的开发和优化,代码质量和用户体验得到提升。之后领导升任我为 Android 项目负责人,带领一个3人小组进行两个 Android 项目的开发。
责任描述:App开发优化重构、技术升级、性能优化
技术要点:
- 应用框架:Google官方推荐MVP框架
- 依赖注入:Dagger
- 网络框架:retrofit
- 发布/订阅框架:Eventbus
- View注入:ButterKnife
- 图片框架:Glide
- Json解析:jackson
- 热爱 Android 程序工作,喜欢研究新技术,有较强的抗压能力,有敬业精神。
- 思维活跃,有较强的解决问题能力,分析问题原理,解决痛点。
- 喜欢与人沟通,有很强的团队协作能力,具有强烈的责任心和集体荣誉感。
- 稳重踏实、责任心强,思维开阔、勇于创新。
- 求知欲旺盛,对事物有较强的分析能力,敢于接受新的挑战,抗压能力强。
- 身体健康,不易猝死:篮球小能手,乒乓球、羽毛球、足球、游泳会而不太精,唱歌不太跑调。