Skip to content

IBallLei/ReadingNotes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 

Repository files navigation

张磊

手机(微信):13314118556 | 邮箱:[email protected] | 生日:1990.04

特长:篮球(大学校队、代表咪咕音乐参加比赛)

求职意向

Android 高级开发工程师

教育经历

2009.09~2013.06          哈尔滨理工大学            通信工程              本科

工作经历

2017.08~2022.01        咪咕音乐有限公司(软通动力)

  1. 业务功能开发:负责咪咕音乐 Android 端设计、开发和维护
  2. 项目代码重构:对旧的臃肿代码进行拆分解耦;对整个项目工程进行组件化;
  3. 项目架构调整:MVC 转 MVP 转 MVVM;Support 库向 androidx 库升级;jetpack 库引入;
  4. 项目开发协助:为业务组开发需求提供支持,App 开发者模式方便业务开发调试
  5. App优化:代码优化、内存优化、项目结构优化等

2015.08~2017.06        美空网

  1. 负责美空App 和美空通告两款 Android 端应用的设计、开发和维护
  2. 独立开发接手外包的美空 App 开发,对项目进行整理、重构、遗留 bug 处理
  3. 对项目使用的技术进行升级和优化

专业技能

  • 熟练掌握 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 实现自动化构建打包

项目经验

2017.08~2022.01   咪咕音乐

项目描述:以听音乐为主功能,兼具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自动化构建打包。

2015.08~2017.06   美空App(已下架)

项目描述:一个基于短视频、语音、照片发布动态的垂直社区社交软件。

项目经历:我在此项目负责 app 整体开发和优化工作,接手一个月后进行独立开发。改善了 app 的 crash 率和用户体验,解决难点问题:比如一次,在两个同事用一天时间对一个 bug 束手无策,我能抓住痛点用十分钟搞定 bug。这个项目中,我最困难的时候是刚接手 app,遗留 200 多个 bug,要求一星期解决。通过高强度的加班,有些 bug 要把之前代码删掉重构,还好最后按要求完成多有任务。在这个项目的工作中,通过技术经验和活跃思维,在认真负责的态度下,对 app 的开发和优化,使 app 的 crash 率从 20% 降到 0.1%。用户体验得到了提升。在年会饭桌在年会饭桌上,领导对我赞赏说:这个 app 多亏我了。

责任描述:App业务需求开发、代码重构、技术升级、性能优化

技术要点

  • 网络:基于okhttp的优秀网络框架OkGo
  • 图片:Glide,ImageLoader
  • 发布/订阅框架:Eventbus
  • 推送:极光
  • 第三方登录/分享:友盟
  • 即时通讯:环信
2015.08~2017.06   美空通告(已下架)

项目描述:商家发布商业拍摄及需要模特条件的需求,模特筛选符合自己需求的通告,为二者提供平台。

项目经历:我在此项目负责 app 部分功能开发和优化工作。改善 app 用户体验和代码架构。刚接手接手这个 app,由于业务不熟,代码设计混乱,要求一个小版本要优化好代码和体验,由于同事之间并发,做优化和重构代码并不是短时间内完成,通过跟领导的沟通,最后通过几个小版本的迭代完成优化和。通过技术经验的累计,对 app 的开发和优化,代码质量和用户体验得到提升。之后领导升任我为 Android 项目负责人,带领一个3人小组进行两个 Android 项目的开发。

责任描述:App开发优化重构、技术升级、性能优化

技术要点

  • 应用框架:Google官方推荐MVP框架
  • 依赖注入:Dagger
  • 网络框架:retrofit
  • 发布/订阅框架:Eventbus
  • View注入:ButterKnife
  • 图片框架:Glide
  • Json解析:jackson

个人评价

  • 热爱 Android 程序工作,喜欢研究新技术,有较强的抗压能力,有敬业精神。
  • 思维活跃,有较强的解决问题能力,分析问题原理,解决痛点。
  • 喜欢与人沟通,有很强的团队协作能力,具有强烈的责任心和集体荣誉感。
  • 稳重踏实、责任心强,思维开阔、勇于创新。
  • 求知欲旺盛,对事物有较强的分析能力,敢于接受新的挑战,抗压能力强。
  • 身体健康,不易猝死:篮球小能手,乒乓球、羽毛球、足球、游泳会而不太精,唱歌不太跑调。

About

This is my repository of reading books.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors