首页 > 其他分享 >我的 Android 学习之路,一位 5 年中大厂的 Android 老哥跟你聊聊

我的 Android 学习之路,一位 5 年中大厂的 Android 老哥跟你聊聊

时间:2023-09-15 12:36:52浏览次数:48  
标签:启动 AnchorTask 学习 算法 大厂 聊聊 Android 优化

本文首发我的微信公众号:程序员徐公

光阴似箭,日月如梭,时间真的过得飞快。 加上实习,从事 Android 开发,差不多有 5 年了,在这里,我分享一下我的经验,在 Android 的学习路上,我是站在巨人的肩膀上成长起来的。

大概分为三个部分

一、Android 职业规划
二、Android 学习路线
三、如何进入大厂

Android 成长生涯

我的 Android 学习之路,一位 5 年中大厂的 Android 老哥跟你聊聊_Android

1-3 年

前 3 年,我觉得是我们成长最快的时候。

尤其是刚开始工作的一年,刚开始接触项目,我们会接触到很多新知识,比较网络框架的封装,Android 架构 MVVN,MVC,MVP 等。

这段时期是我们进步最快的时候,因为很多东西我们都不会,我们会逼着自己去学习。

第二到第三年,也是我们成长的关键时期。这时候,在项目中,我们基本会自己独立负责需求。这时候的我们,大多数基本功能都可以自己独立实现。需要注意的是代码风格和代码思维的培养

代码风格,指的是编码习惯。比如方法命名,方法的合理拆分,适当添加注解,注释。听起来可能会很虚,但是千万别小看这些细节。反正我在组里见过一些工作五六年的,代码一坨一坨的,像 si 一样。

代码思维,有点类似于人的视野和思考方式吧。很多时候,实现某个效果,有很多种方案。我们为了应付需求,可能会随便选择一种,没有去了解其他方案。而这恰恰错过了我们成长的最佳时期。

记住,永远别给自己设限,或许在编程的路上会遇到很多问题,但是总会有解决方法的,而这取决你的态度。

3-5 年

这个时期,不出意外,我们基本都是高级工程师了。这时候大多数人会遇到瓶颈,不知道学些什么好。好像什么都会,但是不够深入。我也遇到这样的情况,现在正在深挖。

这方面我暂时也给不了太多意见,只能说,选择一个方向,静下心来,去学习,相信能收获到我们想要的。

学习方向有很多,比如 Android 性能优化(启动,卡顿, Crash 治理), JNI C++,gradle 打包,编译速度,音视频等等,这些都是大的方向。

最近写的一些文章,自我感觉还行,有兴趣的可以看看。

Android 启动优化(一) - 有向无环图

Android 启动优化(二) - 拓扑排序的原理以及解题思路

Android 启动优化(三)- AnchorTask 开源了

Android 启动优化(四)- AnchorTask 是怎么实现的

Android 启动优化(五)- AnchorTask 1.0.0 版本正式发布了

Android 启动优化(六)- 深入理解布局优化

5 年之后

技术人的四大出路,你适合哪一个

大多数技术人,一般会有以下方向。

  • 第一:成为技术大神,比如架构师,及技术专家等。
  • 第二:技术管理,比如技术总监等。
  • 第三:技术转型,如转项目管理,产品等,你牛逼的话,说不定下一个张小龙就是你(哥们,想多了,那有这么容易)。
  • 第四:自主创业,做自媒体等

我目前来说,可能会选择第一条路吧,成为一名技术专家。

我的 Android 学习之路,一位 5 年中大厂的 Android 老哥跟你聊聊_Android 学习路线_02

在技术的路上,或许会很累,很难,可那又怎样呢

35 岁中年职业危机,很多职业都有,不仅仅局限于程序员。

从本质上面说,自身竞争力下降占很大原因。毕竟,优秀的人才从来不缺少机会。

既然选择了,便只顾风雨兼程。

为了未来有更多的选择,从现在开始,朝着自己的目标努力奋斗吧,书写属于自己的人生。


Android 学习路线

下面,说一下 Android 的学习路线,不会很具体,主要是从大的方面来说,感兴趣的可以看一下。

我的 Android 学习之路,一位 5 年中大厂的 Android 老哥跟你聊聊_Android 学习_03

搭建基本的开发环境,敲下 Hello world

首先你配置好电脑开发环境。首先需要配置 Java,AndroidStudio 的开发环境。

现在的 IDE 对比几年前的,真的是方便多了,可以自动帮我们配置好环境变量。还记得当年刚开始配环境的时候,折腾了两三天。在配置变量的时候,有时候英文的逗号输成中文的,在 cmd 窗口输入 Java,一直提醒没有这个命令,一把鼻涕一行泪

依稀还记得,当配置完环境之后,敲下第一段程序 Hello world 时的那份喜悦。

掌握基本的语法和常用的数据结构

第一:你要先掌握基本的语法,可以从一些书籍开始学起。跟着书本慢慢敲,从第一个程序 Hello World 慢慢敲起,万丈高楼平地起

由于 Android 是用 java 或者 kotlin 语言开发的,建议优先掌握 java 语言。这里推荐两本书籍。

  1. java 编程思想,一本很经典的 java 书籍
  2. java 剑指 offer,面试神器。校招的时候,有很多面试题目,里面都有涉及到。

第二:掌握基本的语法之后,常用的数据结构,数组,链表,队列,栈。这些基本的概念和语法要知道。还有线程,文件 IO 操作,网络操作。

学完这些之后,Java 的基本知识你大概掌握了,这时候建议你动手写一些小项目或者 Demo,比如坦克大战,计算器等,这些网上都有代码。想跟着视频一起学的话,推荐马士兵的视频,可以在我的微信公众号 程序员徐公 回复”Java“,会将教程发给你

Android 学习入门

掌握这些之后,你可以去看一些 Android 入门的书籍或者一些视频。

书籍我推荐郭霖的第一行代码,目前出了第三版了,写得真不错。

视频的话,我推荐你可以看黑马的 Android 视频,里面会从一些基本语法讲起,接着是项目实战,会手把手教你实现简单的新闻客户端,360 手机卫士等等。

想获取黑马视频资料的话,可以去我的微信公众号程序员徐公回复"黑马"两字,会将教程发给你。

我的 Android 学习之路,一位 5 年中大厂的 Android 老哥跟你聊聊_Android_04

Android 进阶

学习完基本的知识之后,可以去看看任玉刚的 Android 开发艺术探索,虽然是几年前出版的,但真的是精华。

接着,可以关注一些架构,性能优化方面的。

  • MVC, MVP, MVVN
  • 内存泄露怎么检测,常见的内存泄露有哪些
  • 怎么检测 ANR,有哪些手段呢,优缺点是什么
  • 怎么捕获 Crash,Java Crash 和 native crash 有哪些不同呢
  • Android 检测启动时间,启动优化怎么做,常见的 Android 启动优化手段有哪些
  • Android gradle,是怎样打包的,怎样提高编译速度

这里推荐几篇不错的文章

Android 启动优化(一) - 有向无环图

Android 启动优化(二) - 拓扑排序的原理以及解题思路

Android 启动优化(三)- AnchorTask 开源了

Android 启动优化(四)- AnchorTask 是怎么实现的

Android 启动优化(五)- AnchorTask 1.0.0 版本正式发布了

Android 启动优化(六)- 深入理解布局优化

关注前沿技术

关注前沿技术,可以去一些论坛,公众号上面逛逛。

论坛的话,推荐掘金,CSDN

Android 技术公众号的话,推荐鸿洋,郭霖的公众号,当然还有我的公众号程序员徐公。文章的质量算是比较高的。

最后,有空的时候多去 github 或者 google 官网 看看,有什么新技术,一般第一时间会更新。


如何进入大厂

面试是一个双向选择的过程,我们要保持足够的自信。

在我看来,要进入大厂,有 4 点最重要。

  1. 编程能力,包括常用技术以及常用技术的原理,毕竟招人,是来干活的,不是来当爹的
  2. 技术深度,在大厂,分工越来越越明确,职责越来越细。很多时候,需要的是某一个技术领域的人才,而不是什么都懂一点的全才。
  3. 算法。
  4. 软技能,沟通能力等

如何学习算法

现如今,如果你想进入大厂,腾讯,阿里,头条,拼多多等,不管是社招还是校招,肯定都会面试到算法的。

相信很多人有这样的想法,面试的时候早火箭,工作的时候拧螺丝。确实,这种情况非常常见,我也认同。但没办法,谁叫我们想进入大厂呢。

不过,这种情况也可以理解。怎么在几轮面试中确定面试者的水平呢? 肯定是考察算法,基础这些,原理这些

虽然这些代表不了全部,但起码能在一定程度上代表了面试者的水平能力。要知道,编程语言其实都是想通的,编程思维和算法能力才是核心。

掌握了原理,编程思维,切换到另外一门语言其实是很快的。这也就是面试官喜欢考察算法和原理的原因。

至于要怎么学习算法,我简单归纳一下

第一:要了解基本的数据结果,数组,链表,Map,Set,二叉树等,了解他们的优缺点,时间复杂度,空间复杂度等

第二:要掌握一些常见的算法,递归,迭代,八大排序,二分查找,贪心算法等

第三:掌握一种算法,不仅要知道 what,还要知道 why(分析各种算法的优缺点),比如 topK问题,有常见的几种解决方案,排序,快排思想,海量数据堆排序

第四:刚开始学的时候,可能会比较吃力,可以先刷题,慢慢找感觉,从易到难

  • 比如,第一天,你刷这道算法题的时候看不懂,先不用着急,很多人都是这样过来的,先搜一下答案,看一下别人是怎么解决的。
  • 看懂了之后,自己用代码写一遍,跑一遍。这很重要,很多时候,你以为你自己懂了,但当你在写的时候是写不出来的,在你动手写代码时,会不断加深你的印象
  • 第二天,自己再写一遍,加深印象

第五:学好算法不是一日之功,需要长期的积累。建议的做法是每天做一两道题,题目不在多,贵在于理解。坚持一两个月,你会发现你的感觉逐渐好起来了。

https://github.com/gdutxiaoxu/Android_interview

小结

以上是我这些年来, Android 学习路上的一些简单分享。在 Android 的学习路上,我是站在巨人的肩膀上成长起来的,同样,我也希望成为你们的巨人。

希望我们可以成为朋友,成长路上的忠实伙伴!,可以关注我的微信公众号程序员徐公

标签:启动,AnchorTask,学习,算法,大厂,聊聊,Android,优化
From: https://blog.51cto.com/u_10719323/7479713

相关文章

  • Android平台GB28181设备接入侧如何实现按需打开视音频采集传输
    GB/T28181规范GB/T28181是中国国家标准,全称为《安全防范视频监控联网系统信息传输、交换、控制技术要求》,该标准规定了城市安全防范监控系统中视频监控联网系统的一般要求和架构,以及信息传输、交换、控制的技术要求。它主要应用于安防领域,为各种视频监控系统提供了一致的接口规范,使......
  • 过去3个月各种Android面试
    在过去的3个月里,笔者历经了各种面试的考验。这场考验,就像是在造火箭,复杂而艰辛。尽管如此,笔者凭借自己的实力和努力,最终拿下了百度、腾讯和京东的录用通知。经过深思熟虑,笔者可能会选择京东,这也许让你感到有些意外。腾讯无疑是一个诱人的选择,它提供的薪资和福利待遇都相当可观。笔......
  • android中的VERSION和VERSION_CODES和compileSdkVersion, minSdkVersion 和 targetSdk
    一背景经常会有代码中用到  Build.VERSION.SDK_INT<Build.VERSION_CODES.O,这是指什么意思。在app项目中,经常会看到android{compileSdkVersion30buildToolsVersion"30.0.3"defaultConfig{applicationId"com.yl.qrcode"minSdkVersio......
  • Android studio 修改APK打包生成名称
    在app的build.gradle的android{}添加一下代码android.applicationVariants.all{variant->variant.outputs.all{defcreateTime=newDate().format("YYYYMMdd",TimeZone.getTimeZone("GMT+08:00"))//在这里修改apk文件名......
  • Flutter插件flutter_boost 在android模块中的报红问题解决.
    1,在开发Flutter插件时,打开插件的android项目,准备编写native端的代码时,发现各种报红,代码无法跳转,体验十分不好。就像我下面的截图一样:导入了FlutterBoostflutterBoost源码爆红。但是运行正常。。这说明本身是没有问题的。。分明是没有错误的类都存在。但是就是爆红。。。。可......
  • Android 9 WiFi连接过程
    我们从setting 入口开始分析该过程;1.setting界面 packages\apps\Settings\src\com\android\settings\wifi\WifiSettings.java 创建Dialog2@OverridepublicDialogonCreateDialog(intdialogId){switch(dialogId){caseWIFI_DIALOG_ID:......
  • 独家珍藏的Android面试突击宝典,轻松应对95%秋招面试题
    前言最近发现了很多同学出现的一个问题,简历已读不回,没有面试机会等等问题,觉得互联网不行了,Android不行了,甚至有人说自己这辈子最后悔的事情就是进入it这个行业。我每次看到这样的反馈或者这样的说法的时候,心里总不是滋味,我承认大家现在反馈的问题在一定程度上确实是客观存在的情况,......
  • Android广播接收器详解
    1.Android广播接收器简介在Android中,BroadcastReceiver(广播接收器)是一种组件,用于监听系统广播或应用程序内自定义广播,并在广播发生时接收并处理这些广播。广播接收器可以用于实现组件之间的通信,无论是在同一个应用程序内还是在不同应用程序之间。广播接收器有两个主要部分:注册广......
  • Android软键盘弹出关闭监听
    https://juejin.cn/post/6844903489051557902?from=singlemessage&isappinstalled=0#commentpackagecom.xiucai.common.manager;importandroid.graphics.Rect;importandroid.util.Log;importandroid.view.View;importandroid.view.ViewTreeObserver;import......
  • 聊聊神经网络的基础知识
    来自《深度学习入门:基于Python的理论与实现》张量Numpy、TensorFlow、Pytorch等框架主要是为了计算张量或是基于张量计算。标量:0阶张量;12,4,3,向量:一阶张量;[12,4,3]矩阵:二阶张量;[[12,4,3],[11,2,3]]多阶张量:多维数组;可以将张量的阶度理解为多维数组的维度。神经网络......