励志22岁Android程序员小伙高中学历,现上海拿到25K offer,不迭代升级还等着被取代吗?

本文你会看到这些,认可就继续读正文:

  • 职业规划开始走偏了,请马上调整过来了
  • 程序员交很多技术朋友真的很重要
  • 外包没有归宿感,可替代强
  • 互联网公司对自己技术成长非常有帮助,但工作强度非常高 996常态
  • 模拟面试,简历优化,投简历的技巧都很重要
  • 爱总结爱输出的人不会差
  • 学习是人生最大的投资
  • 技术是一个不断迭代的过程,所以要保持一个学习的状态
  • 年轻多读书考好大学,不然年龄大了特别迷茫焦虑

正文开始:

基本情况

本人是15年参加培训,在当时本地的一所培训机构培训二年多的时间,当时才16岁, 高二刚读完,成绩也是那种特别不好的,因为朋友的影响,选择了辍学,属于那种半路出家的,在培训期间,主要以Android为主,加上生活费一共花了差不多7万左右。在整个年级里面属于那种算学的还不错的(自己认为)。我今年22,从事Android开发,这是我的基本情况。

工作经历

一共到现在换了四家公司。下面介绍下每家公司的一个情况和总结。

运维开发—8K(2017/3-2017/10)

17年来上海找工作,因为当时没有工作经验么,所以简历包装了一下,找了一份运维的工作,带了一个四人的小团队,当时的想法也很简单,只要能找到工作就行,做运维做了不到一年的时间,也学到很多东西,不管是交流、思考问题、管理,都感觉提高了很多。最终也是因为想到自己的一个职业规划,还是想从事开发方面的工作。

Android开发—12K(2017/10-2018/5)

2018年入职了一家医疗行业的小公司,做Android开发,比较偏传统。做了差不多半年左右的时间,因为公司拖欠工资、资金链断裂问题,选择了离职,但在这半年的时间里,技术提升了很多,同时也收获了一些技术上的朋友,从最开始的领导,慢慢到现在变成了朋友,一直到现在都保持技术上的交流,包括工作方面的,我们都属于特别热爱的技术的那种,聊技术能聊一晚上,说的可能有点夸张,但在Android这个领域里面算研究的比较深的了。

Android开发—17K(2018/6-2019/4)

然后接着之后做了一年左右的外包,法本外派到微软,就类似于人力外包,然后帮微软的客户做房地产相关的项目,当时去微软也是抱着一种学习的心态去的,因为当时对外包这个也不知道是一个什么样的情况,没有体验过,做了一段时间明白了网上对外包的一些不好的看法,项目不稳定,代替性强,只要项目已结束,PM觉得你的作用不是很大,随时都有可能把你裁掉。工作地点不稳定,像我当时做完一个项目,接着又去另外一个客户现场做,这样长期下来,跑来跑去,就感觉自己特别的累,但是也有好的地方,上班的时间比较自由,不太被控制,同时项目结束一批换一批,接触到的人也比较多,这样也能提高融入团队的能力、交流能力。在这一年的左右的微软外包时间里,也学到了很多组件化相关的技术、另外对Android更深的技术也有了一定的认知与了解。也为后面的工作,做了铺垫。

Android高级开发—23K(2019/4-2020/7)

2019年4月,刚满了二年工作经验的我,也收获了一些offer。最终选择了一家互联网公司,旅游行业,待遇也比较的可观,虽然没有大厂的offer,但当时对于我来说已经算比较不错的了,毕竟技术栈也是我比较感兴趣的。这一年的时间里,基本上每天都是晚上10点左右下班,但在这样的高强度工作下,感觉自己对NDK的理解、设计能力、与一些中间组件的使用和研究都提升了很多, 也接触了很多比较新的技术,Kotlin、Jetpack、Flutter、等。但由于当时的疫情,公司受到了很大的影响,正因为这次疫情,技术相关的部门裁了很多人,我也在其中,但赔偿还行,3个月,8月份开始找工作,到现在也收获了一些比较不错的offer。

关于面试

一个好的面试,往往需要做很多的准备,我6月份离职的这段时间,两个月里,基本上都是在家学习,但也会和朋友一起出来吃饭阿啥的。我面试之前会找人来模拟面试,然后根据模拟面试的一个情况,梳理下说话的节奏、项目介绍、技术点的回答的流畅性,然后简历修改完之后,最好找一个你认识的技术或者HR,帮你看下,这样简历投递后反馈率还是比较高的。

还有一点就是每次面试完,最好把面试中一些回答的不是很好的问题或者是没回答上的,记下来,然后针对的去学习,下次面试遇到了会提高面试的一个通过率,投递简历的话,如果是没有工作经验的,或者没有一个目标的,可以选择批量投,我刚出来找工作的时候,就是批量投,自己也没有一个明确的目标,只要能找到工作就行,如果是有工作经验了,哪就针对的去投,还有就是投的一些公司,最好做下调查,比如看下融资情况,做什么业务的等等…, 4个月的时间里,前面两个月是在家学习,后二个月是在找工作,前前后后面试了大概15家公司左右。

这里说下我面试被问到一些面试题吧,这也是我自己的一个总结。

1、Handler 相关知识,面试必问!

  • Handler Looper Message 关系是什么?
  • Messagequeue 的数据结构是什么?为什么要用这个数据结构?
  • 如何在子线程中创建 Handler?
  • Handler post 方法原理?
  • Android消息机制的原理及源码解析
  • Android Handler 消息机制

2、Activity 相关

  • 启动模式以及使用场景?
  • onNewIntent()与onConfigurationChanged()
  • onSaveInstanceState()与onRestoreInstanceState()
  • Activity 到底是如何启动的
  • 启动模式以及使用场景
  • onSaveInstanceState及onRestoreInstanceState使用
  • onConfigurationChanged使用以及问题解决
  • Activity 启动流程解析

3、Fragment

  • Fragment 生命周期和 Activity 对比
  • Fragment 之间如何进行通信
  • Fragment的startActivityForResult
  • Fragment重叠问题
  • Fragment 初探
  • Fragment 重叠, 如何通信
  • Fragment生命周期

4、Service 相关

  • 进程保活
  • Service的运行线程(生命周期方法全部在主线程)
  • Service启动方式以及如何停止
  • ServiceConnection里面的回调方法运行在哪个线程?
  • startService 和 bingService区别
  • 进程保活一般套路

5、Android布局优化

  • ViewStub、include、merge
  • 什么情况下使用 ViewStub、include、merge?
  • 他们的原理是什么?
  • ViewStub、include、merge概念解析
  • Android布局优化之ViewStub、include、merge使用与源码分析pi的。

6、BroadcastReceiver 相关

  • 注册方式,优先级
  • 广播类型,区别
  • 广播的使用场景,原理
  • Android广播动态静态注册
  • 常见使用以及流程解析
  • 广播源码解析

7、AsyncTask相关

  • AsyncTask是串行还是并行执行?
  • AsyncTask随着安卓版本的变迁
  • AsyncTask完全解析
  • 串行还是并行

8、Android 事件分发机制

  • onTouch和onTouchEvent区别,调用顺序
  • dispatchTouchEvent,onTouchEvent,onInterceptTouchEvent 方法顺序以及使用场景
  • 滑动冲突,如何解决
  • 事件分发机制
  • 事件分发解析
  • dispatchTouchEvent,onTouchEvent,onInterceptTouchEvent方法的使用场景解析

9、Android View 绘制流程

  • 简述 View 绘制流程
  • onMeasure,onlayout,ondraw方法中需要注意的点
  • 如何进行自定义 View
  • view 重绘机制
  • Android LayoutInflater原理分析
  • Android视图状态及重绘流程分析
  • Android视图状态及重绘流程分析
  • Android自定义View的实现方法

10、Android 的核心Binder多进程 AIDL

  • 常见的 IPC 机制以及使用场景
  • 为什么安卓要用 binder 进行跨进程传输
  • 多进程带来的问题
  • AIDL 使用浅析
  • binder 原理解析
  • binder 最底层解析
  • 多进程通信方式以及带来的问题
  • 多进程通信方式对比

11、Android ANR

  • 为什么会发生 ANR?
  • 如何定位 ANR?
  • 如何避免 ANR?
  • 什么是 ANR
  • 如何避免以及分析方法
  • Android 性能优化之 ANR 详解

12、Android 内存相关

  • 什么情况下会内存泄漏?
  • 如何防止内存泄漏?
  • 内存泄漏和溢出的区别
  • OOM 概念以及安卓内存管理机制
  • 内存泄漏的可能性
  • 防止内存泄漏的方法

13、Android 性能优化

  • 如何进行内存cpu耗电的定位以及优化
  • 性能优化经常使用的方法
  • 如何避免 UI 卡顿
  • 性能优化全解析,工具使用

14、OKHTTP和Retrofit

  • OKHTTP完整解析
  • Retrofit使用流程,机制详解
  • 从 HTTP 到 Retrofit
  • Retrofit是如何工作的

15、Android 组件化与插件化

  • 为什么要用组件化?
  • 组件之间如何通信?
  • 组件之间如何跳转?
  • Android彻底组件化方案实践
  • Android彻底组件化-代码和资源隔离
  • Android彻底组件化—UI跳转升级改造
  • Android彻底组件化—如何使用Arouter
  • 插件化框架历史
  • 深入理解Android插件化技术
  • Android 插件化和热修复知识梳理

关于学习

我的学习方法,看相关的视频教程,比如腾讯课堂、极客时间、慕课网这种平台都是比较不错的,里面有些视频是收费的,我觉得学习就是一个投资的过程,自己也花了不少的钱在这上面,然后就是体系化的去学习和实践,每学一个技术点,最好记录到笔记上,或者是记录在博客上,这样有利于加升印象,特别学的东西多了之后,不通过笔记记录,很难记住,主要还是找到适合自己的学习方法, 我自己特别适合看视频来吸收。

还有就是看相关的技术博客、比如博客园里面的博主,写的技术文章给我的影响还是蛮大的,看书也是不错的,然后就是给每周制定学习计划,这个计划时间,也不要控制的太死了,最好中间空一些时间出来,因为可能中间会插入一些其他的事情来,这样就会影响到后续的一个计划。

我觉得学习这个话题,对于程序员来说是很重要的,其他的领域也很重要,因为技术是一个不断迭代的过程,所以要保持一个学习的状态,以后对自己的一个职业发展是非常顺畅的,如果自己不迭代升级,长期这样的话,可能会被一些年轻努力的程序员取代,薪资也会跟着年龄下滑,所以趁着年轻而没有什么压力的情况下,把自己的技术功底学好,多投入一些钱花到学习上来,到一定时候,这些努力都会得到相对应的报酬。

如果是年轻的时候不努力,年龄大了而且有家庭了,这个时候可能会感觉自己很迷茫,不知道以后的路怎么去选择,因为我身边有这样的技术朋友,能感觉的到那种迷茫,一般到了一定年龄很难克制自己去学习了,因为来自家庭上、工作上的压力会让你分散这些精力和注意力,所以不要等到年龄大了再来学,那个时候已经晚了。

个人感悟

说下我的一个经历与状况吧,因为我本身没上过大学,也不知道大学的生活是一个什么样的状况,培训出来后是一个专科的学历,19年考了一个专升本,所以有那么一点点羡慕那些上过大学的同学吧,因为工作的原因,也认识了一些同事,他们的学历背景都比较的好,而且学习能力、与人相处都不错,以前我自己觉得学历没什么用,只是一块敲门砖,但现在看上去,有那么一点天真,特别是找工作的时候,找相当大一点公司,可能就会因为学历连面试机会都有没有,所以学历还是很重要的,像我目前的一个打算是2021年准备考一个硕士来弥补下学历,随便开阔下视野。

以前欠下的东西,只要选择继续走这一条路,迟早要还回来的,不然后面的路很难走,特别是到一定年龄和年薪的时候,再往上晋升领导或者是技术总监,这个时候学历可能会受到一定影响。趁着还是学生的时候,多读点书,考一个好一点的大学,尽量不要选择我这种半路出家的,不然后面的路会走的很累。

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文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

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

以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章