前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android开发三年,无奈被迫歇业丢失坑位,重新出发找到对的“大厂进击攻略”很重要!

Android开发三年,无奈被迫歇业丢失坑位,重新出发找到对的“大厂进击攻略”很重要!

原创
作者头像
Android技术干货分享
修改2021-07-30 10:26:53
7910
修改2021-07-30 10:26:53
举报
文章被收录于专栏:Android技术分享

背景

近几日看到有部分网友发帖晒自己的面试经历,有成功拿到offer的,也有面试不顺的。接下来我们看一份Android开发3年左右,面试求职时遇到的一些挫折和困惑。

1、Android开发,待了3年的小创公司突然没了,上哪去找我的“坑位”?

首先介绍一下自己的情况。目前所在的是一家小的创业公司,待了 3 年多,薪资一般吧。由于这几年公司也在转型。工作经历大概可以分为 3 个阶段。

第一阶段是从进公司开始做 android app 开发,无论是外包或者公司的主力产品都做过。

第二阶段是做 ROM 开发,由于公司规模不大,除了硬件和底层的东西外,基本上是一个人负责了整个 ROM 的修改,编译,发布(基于 MTK 的某一个 rom,然后做一些 android framework 层面上“奇奇怪怪”的定制)。

第三阶段,也就是当前。之前做的 ROM 所适配的手机销量未达预期,公司也不再准备投入更多,基本上是做做简单的维护。而我被分配的新任务是做机器学习的一些东西,比如 Tensorflow, OpenCV 做做图片处理,训练之类的。

我对于自己的评价:

Android app 开发能力一般,但是足以胜任一般 app 开发的任务(因为确实有段时间未做公司正式项目的 app 开发,但是也不是说已经荒废了技能);

Android frameworks 方面比普通开发者了解更多;

解决问题,学习实践新技术的能力不错(无论是从第一次编译 AOSP 到后来整个 ROM 的开发,发布。还是从对机器学习完全陌生,到现在能够描述常见机器学习的算法,使用 Tensorflow 实现一些这方面的需求)。

说到昨天的面试,面试官几乎是按照他所准备的 Android 面试题一一提问。如:View 自定义,handler 机制,内存泄漏等。我的表现则让自己非常不满意,他问的这些我大部分都能答上,但是我自己所组织的语言,描述的结果却差强人意。大部分是因为我自己表达能力的问题,我觉得这些问题如果是作为笔试题目,我能够更从容的回答。我更期待的是对于我自己项目经历的说明。因为这是我和其他应聘者不一样的地方。而面试官却完全没问我简历上的项目经历。虽然最后我还是自己硬讲了一下,但面试官也并未有兴趣,我讲的也很干瘪。最后面试就这样结束了。

我自己的想法:自己准备不充分,没能干净利落地应对这些“ Android 标准面试问题”。至少这些基础问题应该能够一两句话就讲清楚。完全没有体现出自己区别于其他应聘者的地方。我认为自己能够又更快又稳的做好开发工作,能够深入的研究框架,源码,解决一些疑难问题,而我要怎么才能让面试官也这样认为?

2、做了三年Android,公司发不出工资了,怎么办?

坐标重庆,做 Android 也三年多了。毕业后就来的这家公司,因为工资发不出了(最近开始把三个月前的工资分期发出来了),所以开始找后路。

但是发现简历真的没有什么写的地方,之前群里一个老哥天天说要招人,我好不容易怼了一个简历过去,对方表示这样不行的。 然后我要了一份所谓的参考资料过来。

一看对方写着给 aosp 贡献过代码……带领小组啥的……

作为一个搬砖工,哪里来的这些经验。

所以问一下各位大佬,你们是怎么写自己的简历的。

接下来谈谈我个人的看法

关于第一个网友最后这句“我认为自己能够又更快又稳的做好开发工作,能够深入的研究框架,源码,解决一些疑难问题,而我要怎么才能让面试官也这样认为?”

他的困惑在于如何展示自己的亮点以弥补不足(准备面试题不充分)。这是个学问,我认为是远超你背题的意义:

1、无论我们是做前端 /后端 /框架 /底层硬件 /算法,我们所服务的最终是一个手机 app。所以我们务必要有一个成品 App 作为展示(非 demo )。这比一通把面试官唬懵比的胡诌更能打动他(对方水平越低,这个越有效)。最好同时有一个竞品作对比,凸显优势(竞品当然是你自己选择了)。如果对方开始问我们是怎么实现的。这就到我们的主场了。

2、我们要有除了 App 开发以外的特长。上述网友提到了 TF,正好可以用上

3、我们同时需要面试预演。没有人的话自问自答,有人配合我们的话更好。目的就是,把话说清楚。说起来简单,但是很多初次面试的人连话都说不好。这直接影响人第一印象。对于技术面试来说,更需要注重用词。配合 1 使用效果更佳

要不要去刷题 /背面试题,我认为是要的。(上面说的是一个准备不充分的情况)

1、面试更加踏实,还可以作为自己临时的应答储备 2、彰显态度。“花很多时间去背题”本身就是对面试的重视,至于效果如何另说。 3、对自己有的知识查漏补缺,巩固深化。 怎么看都是好事情。如果面试官看出你刷题并认为刷题是一个不好的点,那是他境界还太狭窄。

Android 技术的发展。在人才市场来看真的是头重(前端)脚轻(后端),会有这种窘况也是正常。而上述网友三年技术经验,我觉得视野应该不仅局限于 Android。

关于简历

基础信息部分:

1、 简历头部可写姓名、联系电话和邮箱。(醒目,让别人想联系你的时候一眼看到)。 2、 目标职位:明确,不要含糊其辞,最好针对公司所发的招聘职位填写(海投一般效果不好) 3、职业意向:如:业务功能模块开发、还是架构设计。 4、 目标薪资:可以写面议,也可以写目标月薪(最好以范围为主)。

工作经历、教育经历:

如果是985、211院校可写在基础介绍之后,工作经验之前。如果是一般本科或者专科,可在后面一带而过。

工作经历:根据工作经验写,内容尽量多。把具体负责或者参与的事情写出来。通常一个项目包含如下几个模块:

1、 参与系统分析设计 2、 功能模块的开发(这里可以具体到什么功能); 3、 功能缺陷的修改 4、 系统维护(系统问题处理,系统升级)(所有的项目都会用到)

专业技能:

如果你是工作一两年经验的(或编写一两年工作经验),基础技能大概介绍一下就可以了。

最好根据公司所招聘岗位的要求,针对性强调突出技能,也可把自己擅长的技术强调一下。忌写一大堆技术名字,让别人一看就是培训班出来的。

项目部分:

1、先介绍环境:如使用 Jetpack + glide + OKHTTP等) 2、项目描述部分:简单为主,控制在两到三行。面试官基本上看项目名称就知道是什么,一般不会细看。 3、重点:责任描述,越详细越好。

技术描述:

表示所用到的技术亮点。如果你对自己的技术不自信,请慎用。一般面试官会直接就该部分提问。但是如果你确实有工作经验,可总结一下工作中使用的一些新技术、难技术。这是道加分题。

Android开发发展方向

很多人会觉得Android技术深度不深,技术栈不庞大,Android职业发展有限,这个真是大大的误解。

先说技术上,Android的技术栈随着时间的推移变得越来越庞大,细分领域也越来越多,主要有Android应用开发、逆向安全、音视频、车联网、物联网、手机开发和SDK开发等等,每个细分领域都有很多技术栈组成,深度都足够精深,就拿所有细分领域通用的Android系统底层源码来说,就会叫你学起来生不如死。

再说职业上,确实Android应用开发很难升任CTO,一般的CTO主要是后端,这主要是两个原因:

1、后端的技术栈很早就成熟了,我8年前转做Android开发时,那帮30多岁的Java开发就已经很厉害了,随着时间的推移,后端技术大牛远比Android大牛的人数要多,也更厉害,他们做技术经理时,我们都还在搬砖。 2、后端确实可以统筹全局,在公司业务上属于重要地位。

不过我们忽略了最重要的一点,如果我们是做后端的,一定能做到CTO吗?我想也是很难的,所以不要眼睛只盯着高处,先想想自己能达到什么程度,站在半山腰就说山下面的风景不开阔本身也不合理啊。

如何提升自身竞争力

选择一个细分领域

Android现在细分的领域非常多,前面说到的有应用开发、逆向安全、音视频、车联网、物联网、手机开发、SDK开发和智能电视盒子开发等等,在这些领域中选择一个并不断深入。比如音视频,在8年前我刚入门Android时,音视频就是闷声发大财了(PC端),工资高的令人乍舌,现在在移动端,音视频更是青出于蓝,是一个非常好的选择,如果想要入门可以看看何俊林《Android音视频开发》。

尽量学习半衰期长的知识

知识半衰期指的是:随着知识更新周期变短,知识裂变速度加快,一个知识落伍的周期。知识半衰期长的职业都是越老越值钱的,比如英语老师和外科医生,知识更新慢并且几乎不会落伍。这一点我们程序员是绝对比不了的,我们的大部分知识半衰期是比较短的,一个框架短短几年可能就会被淘汰,这也导致程序员需要不断的学习新知识,而我们每个人的时间和精力是有限的,那么根据知识半衰期,有策略的进行学习就变得尤为重要。

上面的半衰期图不完全准确,但是却值得参考,如果你是其他的技术领域也可以参考这个半衰期图。这个图不是告诉我们不要去学RN和小程序,而是结合自身工作尽量学习半衰期长的知识。

做减法,尽量专精一门技术

现在的社会,技术分工越来越细,越细就意味着大部分企业(小作坊除外)需要专精的人才(最好是精通一门通多门)。你会发现身边脱颖而出的技术人大多都是靠一门技术,却很少看到会一堆技术却都不精通的冒出来。好比在武侠的世界,高手对决都在同一个时间段拿出看家武学,如果看家武学都不精,分分钟被虐,剩下的武学也无需拿出来献丑了。联想到现实版本就是去大公司面试Android,结果Android技术了解不深,被各种虐,剩下的前端技术、后端技术、python什么的,面试官也没兴趣了解了。 所以并不是你会的技术越多越好,一定要做好减法,先专精一门,然后再去学别的技术。

说说最近Android火热的技术

Android相关的火热技术最近几年也是频出,没事就在刷屏,我来说说对这些火热技术的看法。

  • Kotlin,从知识的半衰期来看,这门语言非常值得学习,不过想要普及还是非常难,因为Kotlin还没有表现出非用它不可的竞争力,另外很多企业使用的成本比较高,大多数领导都是不求有功但求无过,不会下力气推广。
  • Flutter,从知识的半衰期来看,这个框架存在的时间相对不会长,目前也就一些有技术储备的公司去试验去尝试,如果自己公司技术储备不够,就贸然当小白鼠显然不是很明智。

这两个技术都建议大家来学习,但不要指望它们会给你增加什么太大竞争力,李四1周能学会,张三同样也能。

Android进击大厂常见问题汇总

1、网络

  • 网络协议模型
  • TCP 和 UDP 区别
  • TCP 三次握手
  • TCP 四次挥手
  • POST 和 GET 区别
  • HTTPS

2、Java 基础&容器&同步&设计模式

  • StringBuilder、StringBuffer、+、String.concat 链接字符串:
  • Java 泛型擦除
  • ArrayList、LinkedList
  • HashMap 、HashTable
  • ArrayMap、SparseArray
  • volatile 关键字
  • wait 和 sleep
  • lock 和 synchronized
  • 可重入锁
  • 公平锁
  • 乐观锁和悲观锁
  • 死锁 4 个必要条件
  • synchronized 原理

3、Java 虚拟机&内存结构&GC&类加载&四种引用&动态代理

  • JVM
  • JVM 内存模型
  • JVM 内存结构
  • GC
  • 回收类型
  • 判断一个对象是否可被回收
  • GC ROOT
  • 四种引用
  • ClassLoader
  • 双亲委托模型
  • 动态代理原理及实现

4、Android 基础&性能优化&Framwork

  • Activity 启动模式
  • View 工作原理
  • 事件分发机制
  • Window 、 WindowManager、WMS、SurfaceFlinger
  • View 动画、帧动画及属性动画
  • Handler、MessageQueue、Looper
  • MVC、MVP、MVVM
  • Serializable、Parcelable
  • Binder
  • IPC 方式
  • Android 系统启动流程
  • App 启动流程
  • 进程保活
  • 网络优化及检测
  • UI卡顿优化
  • 内存泄漏场景及规避
  • LeakCanary 原理
  • OOM 场景及规避

5、Android 模块化&热修复&热更新&打包&混淆&压缩

  • Dalvik 和 ART
  • APK 打包流程
  • App 安装过程
  • 组件化路由实现

想要达到大厂标准到底要深入学什么?

根据知识的半衰期,作为Android应用开发最应该学习的就是Java、App开发相关技术、Android系统底层源码、数据结构、设计模式、网络相关等等。

但是大部分实际开发中,算法是最不常用的,经常是为了面试去学的,那么剩下的内容都是需要深入学习的。

如果你觉得自己学习效率低,缺乏正确的指导,可以参考下我下面分享的学习路线:

学习一线大厂的各项技术:

大厂是我们的技术先驱,不仅仅是各种技术,还有很多令你大开眼界的使用方法,学习这些有利于自己竞争力的提高,深入理解后也可以提升你的学习效率。

现在竞争这么激烈,只有通过不断学习,提高自己,才能保持竞争力。

1.2020大厂面试高频知识点

  • 图片
  • 网络和安全机制
  • 数据库
  • 插件化、模块化、组件化、热修复、增量更新、Gradle
  • 架构设计和设计模式
  • 性能优化
  • Android Framework
  • Android优秀三方库源码

2.Jetpack架构组件从入门到精通

  • Android Jetpack - Navigation
  • Android Jetpack - Data Binding
  • Android Jetpack - ViewModel & LiveData
  • Android Jetpack - Room
  • Android Jetpack - Paging
  • Android Jetpack - WorkManger
  • Android Jetpack架构组件之Lifecycle
  • Android Jetpack Compose 最全上手指南

3.Framework精编内核解析

主要内容包含:

  • 深入解析Binder
  • 深入解析Handler
  • Dalvik VM 进程系统
  • 深入解析 WMS
  • PackagerManagerService

4.Kotlin强化实战(附Demo)

  • 第一章 Kotlin入门教程
  • 第二章 Kotlin 实战避坑指南
  • 第三章 项目实战《Kotlin Jetpack 实战》
    • 从一个膜拜大神的 Demo 开始
    • Kotlin 写 Gradle 脚本是一种什么体验?
    • Kotlin 编程的三重境界
    • Kotlin 高阶函数
    • Kotlin 泛型
    • Kotlin 扩展
    • Kotlin 委托
    • 协程“不为人知”的调试技巧
    • 图解协程:suspend

5.Android设计思想解读开源框架

  • 热修复
  • 插件化
  • 组件化框架设计
  • 图片加载框架
  • 网络请求框架
  • RXJava 响应式编程框架设计
  • IOC 架构设计
  • Android架构组件Jetpack

6.NDK模块开发

  • NDK 模块开发
  • JNI 模块
  • Native 开发工具
  • Linux 编程
  • 底层图片处理
  • 音视频开发
  • 机器学习

定期面试:

光学习了大厂的技术还不够,如何了解当下Android市场需要哪些技术呢?

定期的面试足以让你了解当下市场需要哪些技术,也更加容易确定自身的短板在哪,同时,也可以督促自己学习提升(小伙子,你了解的技术有点落伍了呀…)

万一拿到了高薪Offer,岂不是更赚?

多看大佬的学习笔记,学习大佬的设计思想:

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
    • 1、Android开发,待了3年的小创公司突然没了,上哪去找我的“坑位”?
      • 2、做了三年Android,公司发不出工资了,怎么办?
      • 接下来谈谈我个人的看法
      • 关于简历
      • Android开发发展方向
      • 如何提升自身竞争力
      • Android进击大厂常见问题汇总
      • 想要达到大厂标准到底要深入学什么?
        • 以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。
        相关产品与服务
        腾讯云 TI 平台
        腾讯云 TI 平台(TencentCloud TI Platform)是基于腾讯先进 AI 能力和多年技术经验,面向开发者、政企提供的全栈式人工智能开发服务平台,致力于打通包含从数据获取、数据处理、算法构建、模型训练、模型评估、模型部署、到 AI 应用开发的产业 + AI 落地全流程链路,帮助用户快速创建和部署 AI 应用,管理全周期 AI 解决方案,从而助力政企单位加速数字化转型并促进 AI 行业生态共建。腾讯云 TI 平台系列产品支持公有云访问、私有化部署以及专属云部署。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档