我凭什么从3K到30K,大厂程序员进阶之路!
Posted 懂你的大海
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我凭什么从3K到30K,大厂程序员进阶之路!相关的知识,希望对你有一定的参考价值。
我来讲讲我的故事,或许对大家有所启发。
阶段一:
毫无章法那应该是在 2011 年,那时我是大二,我特别喜欢编程,我虽然读的是计算机专业,但是毕竟理论学习和社会实践并不接轨。
我学习有点着急,想赶紧进行项目实战,那时候正值移动开发兴起的时候,听学长说现在移动开发很火,在一线城市做 ios 开发和 android 开发很值钱。
我心动了,开始了提前自学之旅,从网上搜集各种关于移动开发的教学视频,买了一个 Android 机,搜了很多各种各样的关于 Android 开发视频,那时候移动开发刚刚开始,但是相关资料不太多,所以,很困难,学习起来毫无章法,各种学习视频都看,凑在一起。
学的是磕磕绊绊,学校的 Java 课还没开,我就提前自学,看完网上的 Java 基础视频就投入到 Android 实战中了,经常导错包,看着跟视频上敲得一样,为啥我运行就有 bug 呢?这就是阶段一的情况,学的不系统,毫无章法,各种拼凑,磕磕绊绊。
阶段二:
强化理解,入门了由于我暑假提前关在宿舍自学了两周 Java 课程,也跟着视频做过 Android 项目了,但是本质上并没有入门,都是视频上敲一遍,我就跟着敲一遍,理解也不够深入。
幸运的是,大二一开学 Java 课程开课了,跟着老师的教学,我又学了一遍 Java 课,由于之前自己学过,又听老师讲了一遍,对 Java 理解更深刻了,把 Java 基础都了解透了之后,才恍然大悟,之前学的并不入门,如果不能把基础理解透,只是比着葫芦画瓢,并不能举一反三,只有真正掌握透语法,原理才能让你举一反三,以不变应万变。
顿时感觉自己开悟了。强化理解,让我入门了,从此掌握了学习编程语言的真谛的感觉,醍醐灌顶。说到这里,其实挺羡慕现在的人学习编程的,因为太方便了,不像我们那个年代网上学习资料和课程都很少,需要自己研究,慢慢啃,现在网上的教学课程都很系统,资料也特别多。
阶段三:
顿悟升级,突飞猛进如果说阶段二让我深刻理解了学习编程的真谛是:要从基础构建系统全面的学习体系,深刻理解基础原理的话。那么阶段三就是从源码和开源入手,掌握编程的翅膀。
其实,像编程语言基础的语法,数据结构,算法这类东西,还有有一些计算机原理之类的知识,这些东西都是编程和实践的根本。他们看似枯燥和基础,但是具有最长久的生命力。这是我开悟的第一层真谛。
我自学 Android 的时候,慢慢渐入佳境,突然有一天我要实现一个非常炫酷的效果的时候,在网上搜了很久,都没有找到解决办法,直到看到一篇文章在讲源码,要自定义 View ,就要看 View 类的源码,看看里面有哪些事件和方法,你要重写这些事件或者方法,就可以实现自己想要的效果。然后自己下载了 Android 源码开始研究看看 View 里到底藏着什么东西?
在大二,那是我第一次用 Source Insight(查看源码的工具),看完之后,一步一步的研究,里面到底是什么?慢慢的知道什么意思之后,就自己开始尝试,最后通过继承和重写把自己想要的结果实现了,才发现自己的编程正在突飞猛进。
以后在遇到自定义 View ,实现炫酷效果时,基本上都难不倒我了。突飞猛进正在开始。后来,随着移动开发越来越火,另外也深刻了解了 GitHub 之后,才发现,自己原来也不需要重复造轮子,很多牛人都在里面开源,而这正是为了我的编程插上了翅膀。
我在遇到一些比较难的效果的时候,现在 GitHub 寻找有没有现成的库,如果没有,那就自己动手写,如果有现成的,就直接用,不用重复造轮子,那时候,我感觉编程太快了。后来,我想既然人家开源,我为什么不开源呢?我就把自己常用的一些效果和方法进行了封装,我也开源或者弄成工具类,等下个项目再用的时候,我就不用再写一遍了,直接引入就可以啦。没错,到这个时候,我才真正的感觉到自己的编程突飞猛进了。
我们简单来梳理一下:
阶段一:毫无章法,磕磕绊绊,它时刻在提醒我们编程要系统的去学,而不是东拼七凑,否则就是在走弯路;
阶段二:强化理解基础,从基础原理来深刻理解编程语言才能让你举一反三;
阶段三:深入理解系统源码,学会看源码,会让你作为一个程序员有一种天生骄傲,什么效果都难不倒我,再到自己封装工具,使用开源,让你的效率飞速提升。
你看,其实编程如果你到了阶段三,再回顾之前,你就会发现编程其实就是那么简单。而整个学习的历程对我帮助很大,对于毕业后学习 Python 也起到了至关重要的作用,让我更深一层的理解到所有的编程语言都是相通的。
在未来,是 IT 的时代,人人都会编程的时代,作为一个程序员在敲出代码,实现出效果的那一刻,有一种天生骄傲感,感觉是这个时代的主人,这个时代由我主宰。
最后一个建议就是:大家学习一定要找对圈子,自己自学我经历过,太痛苦,太孤独,也太累了,遇到问题没人商量,浸泡在不错的圈子里一起学习,成长更快。
架构师筑基必备技能
目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。
JAVA知识要点:
1、 Java序列化、泛型与反射
2、虚拟机底层原理
3、Android内存原理
4、 Java高级并发原理详解
5、 编译时技术掌握与实战
6、JDK高级动态代理
7、高级数据结构与算法
8、 Java IO操作
9、
。。。。
Android R FrameWork源码与UI
在Android中,Framework泛指系统架构层。Framework的中文意思是“框架”,在软件开发中通常指开发框架,在一个系统中处于内核层之上,为顶层应用提供接口,被设计用来帮助开发者快速开发顶层应用,而不必关心系统内核运行机制,通常Framework都会隐藏main函数等应用程序必须的组件,开发人员只需把精力放在功能代码的实现上。说简单点,Framework具体的工作也就是为android应用开发的开发人员提供了一系列的服务和API的接口。
UI其实并不是单纯指用户看到的效果。因为在Android开发中,每个控件背后都有一套深层次的体系在支撑,自然而然,会UI不单纯指的是会自定义控件,我们还应该知道自定义控件背后的执行流程,包括从Activity的创建,XML的解析,到每个控件的测量、布局、绘制。当然在中间还夹杂着比如动画、事件分发机制、嵌套滑动机制等知识点。还有谷歌提供的一些UI框架也使我们要掌握的对象,比如Jetpack组件库、Material Design等。
知识要点:
1、 FrameWork源码解析(SDK 30)
2、Android常用组件深入解析
3、JetPack全家桶
4、Android R新特性解析
。。。。。
大厂内部APP调优方案
性能优化是一个项目必须要经历的过程,你的应用好与坏都是在用户使用的过程中反映出来的,如果性能优化没有做好,对于你的应用来说影响是非常大的。尤其是现在的Android市场竞争非常激烈,如果你的应用体验没有竞品的好,那么用户流失是必然的。
性能优化不是一件简单的事情,每个应用的性能好与坏无法由一个人来决定,因为性能优化的维度有太多了,从我们项目的整体架构,到我们代码的每一个细节,再到应用使用环境的测试,只有步步为营,才能做好一个项目的优化。大部分开发者把性能优化指向与不闪退就行,但是实际上性能优化包含了很多方面,比如从简单的启动优化、 UI优化、 卡顿优化、 崩溃优化、 安全性优化,到深层次的弱网优化、 大图加载优化、 储存优化、 高效传输优化、 极限瘦身优化,再到实际开发过程中的OOM问题原理解析、 ANR问题解析、 Crash监控方案。要想把这些优化流程做好,我们不仅从项目架构、代码规范等方面入手,还用学会利用第三方的检测工具来检测项目性能,最主要是,我们需要一套完整的性能优化方案,这正是我们所缺少的,所以我们必须要把缺少的补上, 打造一套真正的完整的性能优化体系,把性能优化流程化,常态化。
1、 APP基础优化
2、APP深度优化
3、开发焦点问题优化
4、编程效率优化
5、项目实战
抖音在APK包大小资源优化的实践
优酷响应式布局技术全解析
网络优化
手机淘宝双十一性能优化项目揭秘
高德APP全链路源码依赖分析
彻底干掉OOM的实战经验分享
微信Android终端内存优化实践
对标腾讯T3.3架构师
Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。
Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。
本篇知识要点:
1、架构师设计思想篇
2、 手淘全套架构设计与实现
3、 开源框架
4、OKHttp网络框架
5、一线大厂核心框架剖析与实现
NDK模块开发(音视频系列)
NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。
在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。
本篇知识要点:
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习
Flutter学习进阶
2019 年无疑是 Flutter 技术如火如荼发展的一年。
每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。
本篇知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门
…
微信小程序开发
微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。
本篇知识要点:
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战
由于篇幅原因,如有需要以上完整学习笔记PDF,可以点击这里免费自取!!
以上是关于我凭什么从3K到30K,大厂程序员进阶之路!的主要内容,如果未能解决你的问题,请参考以下文章