From d6242dc2202f487866aa31397086c9cbf61f01f2 Mon Sep 17 00:00:00 2001 From: Barry Date: Fri, 1 Mar 2024 15:02:19 +0800 Subject: [PATCH] Update cv --- docs/android/android_design_pattern.md | 17 +++++++++++++++++ docs/android/android_framework.md | 26 ++++++++++++++++++++++++++ docs/android/android_jetpack.md | 4 ++++ docs/android/android_network.md | 4 ++++ docs/android/android_plan.md | 6 ++++++ docs/android/android_ui.md | 12 ++++++++++++ docs/android/android_webview.md | 3 +++ docs/flutter/flutter_optimize.md | 1 + docs/flutter/flutter_third_lib.md | 5 +++++ docs/flutter/flutter_ui.md | 7 +++++++ index.html | 26 ++++++++++++++------------ 11 files changed, 99 insertions(+), 12 deletions(-) create mode 100644 docs/android/android_design_pattern.md create mode 100644 docs/android/android_framework.md create mode 100644 docs/android/android_network.md create mode 100644 docs/android/android_webview.md create mode 100644 docs/flutter/flutter_optimize.md create mode 100644 docs/flutter/flutter_third_lib.md create mode 100644 docs/flutter/flutter_ui.md diff --git a/docs/android/android_design_pattern.md b/docs/android/android_design_pattern.md new file mode 100644 index 0000000..63ccb69 --- /dev/null +++ b/docs/android/android_design_pattern.md @@ -0,0 +1,17 @@ +### Android 中常用的设计模式 + +q:单例中的饿汉和懒汉的区别,多线程中的表现 + +#### 面向对象六大基本原则 + +1.单一职责原则 2.开闭原则 3.里氏替换原则 4.依赖倒置原则 5.接口隔离原则 6.迪米特法则 + +#### 项目中用到的设计模式跟场景 + +单例、工厂、责任链、观察者、代理、建造者 + +#### 代理模式 + +作用:在不修改被代理对象的代码的前提下,可以对它进行扩展,在 AOP 领域很常见 +AOP:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 +常用在日志记录、性能统计,安全控制、事务处理、异常处理等 diff --git a/docs/android/android_framework.md b/docs/android/android_framework.md new file mode 100644 index 0000000..1d50554 --- /dev/null +++ b/docs/android/android_framework.md @@ -0,0 +1,26 @@ +### Android 框架层面 + +#### 插件化和热修复 + +热修复原理:Java 代码、Native 代码、资源 +资源热修复:反射更改所有保存的 AssetManager 和 Resource 对象 +Native 代码热修复:反射修改 ClassLoader 加载 so 文件路径 +Java 代码热修复:自定义 ClassLoader,优先加载补丁包里的类 + +#### LruCache 原理 + +Least Recently Used 缓存策略 + +#### Android 签名机制 + +V1 和 V2 在技术上和物业上的区别 + +#### Apk 构建流程 + +App bundle? + +#### Apk 的安装过程 + +#### Andorid 版本特性 + +#### Android 屏幕适配 diff --git a/docs/android/android_jetpack.md b/docs/android/android_jetpack.md index 4833325..b6bd979 100644 --- a/docs/android/android_jetpack.md +++ b/docs/android/android_jetpack.md @@ -2,6 +2,10 @@ ViewModel、LiveData、Lifecycle、Room、WorkManager、Navigation、Paging 等组件 +#### Lifecycle + #### ViewModel #### LiveData + +#### WorkManager diff --git a/docs/android/android_network.md b/docs/android/android_network.md new file mode 100644 index 0000000..f700018 --- /dev/null +++ b/docs/android/android_network.md @@ -0,0 +1,4 @@ +### Android 计算机网络 + +计算机网络(TCP、UDP、HTTP) +七层模型(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层) diff --git a/docs/android/android_plan.md b/docs/android/android_plan.md index 4751f62..fac09af 100644 --- a/docs/android/android_plan.md +++ b/docs/android/android_plan.md @@ -16,3 +16,9 @@ - Github hook (规范化commit message) - Code Review - 业务开发 + +# 个人介绍 + +1. 个人信息 +2. 当前公司主要的工作内容 +3. 个人的核心优势(1.独立开发从 0 到 1 的项目 2.比较注重代码质量,有一定的代码洁癖 3. 有较好的数据结构与算法知识,常刷 Leetcode diff --git a/docs/android/android_ui.md b/docs/android/android_ui.md index 855a3fa..dd1857e 100644 --- a/docs/android/android_ui.md +++ b/docs/android/android_ui.md @@ -13,4 +13,16 @@ sendMessage(): dispatchMessage -> Handler.mCallback != null -> Handler.mCallback #### 2.View 绘制过程 +UI 的刷新机制:ViewRootImpl.scheduleTraversals() -> 加入到待执行队列并给刷新信号注册监听 -> VSync 信号到来时取出对应的 scheduleTraversals()并加入到主线程的消息队列 -> 消息取出并执行 measure()、layout()、draw() +同步屏障:Looper.loop()  调用 MessageQueue 的 next()方法取出队列头部 Message 执行 -> 遇到同步消息(一种特殊机制)后会寻找异步消息执行,不然就会一直阻塞,除非同步屏障取出 -> 界面刷新是异步操作,具有最高优先级 + +ViewRootImpl.requestLayout() -> ViewRootImpl.scheduleTraversals() -> 加入待执行队列并给刷新信号注册监听 -> VSync 信号到来时取出对应的 scheduleTraversals()并加入到主线程的消息队列 -> 消息取出调用 ViewRootImpl.performTraversals()执行 measure()、layout()、draw() + #### 3.事件传递机制 + +ViewGroup.dispatchTouchEvent() -> ViewGroup.onInterceptTouchEvent() -> (true) onTouchEvent() +-> (false) View.dispatchTouchEvent() + +getParent().requestDisallowInterceptTouchEvent(true) + +#### 4.RecyclerView 常见面试题 diff --git a/docs/android/android_webview.md b/docs/android/android_webview.md new file mode 100644 index 0000000..fa7db28 --- /dev/null +++ b/docs/android/android_webview.md @@ -0,0 +1,3 @@ +### Android Webview 实践 + +#### Hybrid 应用 native 与 js 如何互相调用 diff --git a/docs/flutter/flutter_optimize.md b/docs/flutter/flutter_optimize.md new file mode 100644 index 0000000..9d9c5f1 --- /dev/null +++ b/docs/flutter/flutter_optimize.md @@ -0,0 +1 @@ +### Flutter 性能优化 diff --git a/docs/flutter/flutter_third_lib.md b/docs/flutter/flutter_third_lib.md new file mode 100644 index 0000000..cb55c0b --- /dev/null +++ b/docs/flutter/flutter_third_lib.md @@ -0,0 +1,5 @@ +### Flutter 常用第三方库 + +river_pod (2.0)、Dio、GetIt、RxDart + +#### Flutter diff --git a/docs/flutter/flutter_ui.md b/docs/flutter/flutter_ui.md new file mode 100644 index 0000000..ec7770a --- /dev/null +++ b/docs/flutter/flutter_ui.md @@ -0,0 +1,7 @@ +### Flutter 常见问题 + +#### Flutter 绘制机制 + +#### Flutter 事件传递机制 + +#### Flutter 不支持反射 diff --git a/index.html b/index.html index ba8a7f0..2e68ca9 100644 --- a/index.html +++ b/index.html @@ -83,7 +83,7 @@

Android 高级开发工程师

- 男/1990 + 男/1989 18551229348 @@ -227,10 +227,10 @@

React

-
+

自我评价

-

热爱技术岗位,富有好奇心和自驱力,善于通过学习提升自我,善于沟通,追求极致,挑战自我。

+

TODO: 热爱技术岗位,富有好奇心和自驱力,善于通过学习提升自我,善于沟通,追求极致,挑战自我。

@@ -246,16 +246,17 @@

技能清单

- 熟悉使用JUnit、Robolectric、mockk、Espresso等框架单元测试及Android测试

- 熟悉自定义View, View绘制流程和事件分发机制, 高性能的UI开发

- 熟悉MySQL、SQLite3、Redis、Hive等数据库的使用

-

- 熟悉Node.js,熟练Express、Koajs、Eggjs后端框架,有Eggjs后端完整的开发经验

+

- 熟悉Node.js,了解Express、Koajs、Eggjs后端框架,有Eggjs后端完整的开发经验

- 熟悉Bitrise、Github Actions、Bitbucket Pipelines等CI/CD平台

- 熟悉使用Python、Groovy、Bash等语言开发自定义脚本

- +

- 熟悉常用的设计模式、计算机网络、数据结构和算法, 有刷LeetCode的习惯

- 英语CET-4, 有创业和跨国公司工作经验,英文能力满足日常工作要求

-

- 创过业,做过Team Leader,对带领团队共同成长有自己的见解

+

- 做过Team Leader,也擅长与他人合作,对带领团队共同成长有自己的见解

+

- 有多个独立开发从0到1的项目经验,也有多个App重做、重构的经历、对App架构演进有自己的见解

@@ -276,14 +277,15 @@

工作经历

苏州恒创慧力智能科技有限公司

- 2022.02 - 至今 | Android高级开发工程师 + 2022.02 - 2024.01 | Android Team Leader

My Income 新加坡保险项目Android客户端(Kotlin)

职责与工作内容: -

1. 负责Android端基于Kotlin、Jetpack组件的MVVM架构设计及重构

-

2. 负责核心模块,远程配置(Firebase Config)、网络请求(Retrofit)、数据库(Room)、Token认证等模块的封装和单元测试,登录(Biometric)、消息模块、支付(信用卡)、推送(FCM+SFMC)、应用混淆

-

3. 实现基于Maven BOM的第三方依赖统一版本管理、build配置从Groovy迁移到KTS

-

4. 基于Bash语言的Git Commit Message规范化实施、实现Groovy自动同步自定义的Git Hooks脚本、集成单元测试覆盖率框架Jacoco

-

5. 输出项目新手入手、架构设计、重构步骤、代码规范、单元测试、代码混淆等一系列文档,降低项目维护成本

+

1. 与后端、设计、测试等团队紧密合作,共同推进产品的开发与迭代

+

2. 负责Android端基于Kotlin、Jetpack组件的MVVM架构设计及重构

+

3. 负责核心模块,远程配置(Firebase Config)、网络请求(Retrofit)、数据库(Room)、Token认证等模块的封装和单元测试,登录(Biometric)、消息模块、支付(信用卡)、推送(FCM+SFMC)、应用混淆

+

4. 实现基于Maven BOM的第三方依赖统一版本管理、build配置从Groovy迁移到KTS

+

5. 基于Bash语言的Git Commit Message规范化实施、实现Groovy自动同步自定义的Git Hooks脚本、集成单元测试覆盖率框架Jacoco

+

6. 输出项目新手入手、架构设计、重构步骤、代码规范、单元测试、代码混淆等一系列文档,降低项目维护成本

获得成绩:

1. 项目在重构后Play Store评分上升到4.6+,同时公司也超额完成年度Kpi

2. 提升Android产品稳定性、使月均Crash-free User指标提升5.4%,稳定在99.8%