0
点赞
收藏
分享

微信扫一扫

37岁Android程序员裸辞,四个月被497家公司拒绝,问猎头后懵了

崭新的韭菜 2022-02-05 阅读 58

在职场确实普遍存在着“35岁定律”,如果到了35岁,你还无法脱颖而出、还做着基层工作,那很可能你就是要被「优化」的对象 —— 毕竟比你年轻、好用又便宜的年轻人,太多了。

今天又看到有人提了这么一个问题:

如果你很确定,自己在35岁(或40岁)时,一定会离开现在的公司,无论被动或是主动,你会怎么想、怎么做?

不得不说,这是一个很不讨喜的问题。但是,却也是一个值得你我去深思的问题。

前几年,国内经济的飞速发展,带动了许多行业,也使许多人找到了机遇。

在这样的大背景下,我们很容易过于乐观,失去对未来的警惕。我们总会默认,未来的每一天会像昨天一样,风平浪静,不会有什么大的变化。

但变化往往就在不知不觉之间席卷而来。

所以一定要早做准备,未雨绸缪。

那么在市场紧缩以及大前端的趋势下,我们移动端程序员如何突破职业瓶颈,保持个人的核心竞争力呢?

一、硬技能:专业的技术知识

==============================================================================

1.Java / Kotlin开发语言


Java

  • 常用数据结构:

ArrayList、Vector、

CopyOnWriteArrayList、

HaspMap、ConcurrentHashMap、

HashTable 等使用场景。

  • JVM 虚拟机包括 Java 内存管理,GC 垃圾回收机制,类加载机制。推荐书籍:《深入理解 Java 虚拟机 JVM 高级特性与最佳实践》。

  • 多线程编程,包括线程池,锁机制,线程同步 。推荐书籍:《Java 并发编程实战》和《Java 多线程编程核心技术》。

  • AOP 编程实现,包括 JDK 动态代理实现,ASM 直接操作字节码、CGLIB 实现,其原理封装了 ASM,使用更方便。

  • Javassist:在字节码加载前直接修改需要切入的方法,以及注解处理器 APT,这在 Android 中开源的库应用较多,比如 DataBinding , ButterKnife, EventBus3 等等。

  • 异常处理 Exception,包括检查性异常、运行时异常处理。

  • IO 流相关,包括堵塞型 IO 和非堵塞型 IO。

  • Java 的一些高性特级,比如反射、代理、泛型、枚举、正则表达式等等;同时了解一下 jdk1.8,1.9,1.10 等新特性。相关书籍比较多,推荐《Thinking in Java》和《Effective Java》。

Kotlin

Kotlin 是一个基于 JVM 的新编程语言,在 Google IO 2017 中被 Google 宣布成为 Android 官方开发语言。

Kotlin 有哪些优点?

①简洁性: 提供了很多标准函数,大大减少样板代码的数量。

②安全性:避免空指针异常等错误。

③互操作性:充分利用 JVM、Android 和浏览器的现有库。

④工具友好: 可用任何 Java IDE 或者使用命令行构建。

在 Kotlin 中要树立函数式编程思想。把函数理解为一个值到另一个值的映射关系,以函数作为单元来处理各个业务逻辑,函数既可以做参数,也可以作为返回值。多使用 Kotlin 提供的标准函数,比如 let、run、with、apply、also、 Lambda 表达式。尽量使用闭包和高阶函数。

Kotlin 的另一个突出特点是协程,为设计异步、非阻塞的程序提供了强大的范式。协程是一种轻量级的线程,它提供避免阻塞且更廉价可控的操作: 协程挂起。将复杂异步操作放入底层库中,程序逻辑可顺序表达,以此简化异步编程。

最后简单说下 Kotlin/Native,它的设计初衷是支持在非 JVM 虚拟机平台环境的编程,如 iOS、嵌入式平台等,同时支持与 C 互操作。推荐书籍:《Kotlin 实战》。

2.Android 进阶技术点


进程相关,包括 App 进程原理以及 AIDL 原理。

性能优化,包括:内存,cpu,耗电量、网络请求、UI 布局、线程、数据库等优化方法以及优化工具的使用。

Android 源码相关,包括:Binder 机制,Activity 启动流程,Handler 原理,AMS ,PMS,WMS 原理,View 的绘制流程,Touch 事件传递机制等等。

编译打包流程,从 java/kotlin 源码到最终形成 APK 的过程。

热修复的实现原理,目前热修复框架的种类繁多,常见的包括底层替换、类加载和 Instant Run 方案。

逆向工程原理,主要是为了防止 apk 被反编译破解,以及了解 apk 加固方案。

插件化,目前方案同样很多,主流的技术实现是 Hook 方式,注册 Activity 进行占坑,使用占坑 Activity 通过 AMS 验证,还原插件 Activity,其他组件的原理也大致类似。

NDK 开发,调用 JNI 以及回调 Java 的方式。

自定义控件,需要注意 onMeasure,onLayout,onDraw 的调用时机,以及 Touch 事件分发机制。

动画 View Animation,视图动画在很早的 Android 版本系统中就已经提供了,只能被用来设置 View 的动画。

属性动画 Property Animation,只对 3.0 以上版本,可以设置给任何 Object,包括还没有渲染到屏幕上的对象。这种动画是可扩展的,可自定义任何类型和属性的动画。

Webview 中 Native JS 交互,常用的 JSBridge 等。

Gradle 的特性以及 DSL 语法,比如 Gradle Transform API 的使用,它允许第三方插件在 class 文件转为 dex 文件前操作编译好的 class 文件。利用这一特性,我们可以在代码编译阶段实现代码注入或者代码修改,这也是很多埋点技术和热修复技术的基础。

**安全性:**HTTPS 通信原理,数据加密方式,包括 MD5,RSA 等,webview 安全性,代码混淆,数据验签,组件通信安全,服务器通信。

CI 持续集成:Jenkins ,Gitlab CI 等搭建持续集成开发工具。

Sersor 传感器:包括陀螺仪,加速传感器,方向传感器,重力传感器,光线传感器等。

Android 开发国际化

ART 和 Dalvik 虚拟机的区别,主要是 AOT,Ahead-Of-Time 预编译。

熟悉 DEX 文件结构。

单元测试

JUnit4,AndroidJUnitRunner,

Mockito 框架的使用。

自动化测试:Monkey / Monkey Runner ,Espresso ,UI Automator 等。

掌握模块化开发方式:主要注意分好层、模块间跳转通信。

代码重构能力,推荐书籍:《重构改善既有代码的设计》、《重构与模式》

Google 动态化框架 App Bundles

Jetpack,Google 推出的新一代组件、工具和架构指导,旨在加快 Android 应用开发速度。Jetpack 主要分为 4 部分:

Android开发常用的第三方库:

响应式编程:RxJava、RxAndroid,Google 的Agera

网络库:包括Retrofit,OkHttp,Volley

图片:Fresco,Gilde,Picasso

依赖注入:Dagger2

数据库:Realm,ORMLite,GreenDAO,ObjectBox

数据总线:EventBus,otto

写在最后

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从哪里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家

我的【Github】会分享一些关于Android进阶方面的知识,也会分享一下最新的面试题~

如果你熟练掌握GitHub中列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。

64/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)阅读下载**,最后觉得有帮助、有需要的朋友可以点个赞

举报

相关推荐

0 条评论