湖南渣渣二本,毕业三年从月薪3K飙升2W,我想把安卓开发逆袭的系统学习方法分享给你-程序员宅基地

技术标签: 面试  Android开发  android  移动开发  程序人生  

残酷的现实

湖南渣渣二本毕业,XX学院(我就不提了,以免伤到校友)。毫不讳言的说,毕业后,大部分同学可以说啥都没学会,基本上就是写个“Hello Word”、“system out”的水平吧。想继续从事计算机的,花个三四万,报个培训,出来后伪造个工作经验直接上岗。更多的同学是直接转行。

这里可能会有人说了,现在有校招的~ 水平要求都不怎么高~ 实习会给你培训的 ~ 就是背个面试题的事儿~

校招?别做梦了,根本没有校招好吗!真正的校招是985、211的待遇。去我们学校校招的都是些工厂招工的,你去吗?

没办法,硬着头皮去广州深圳找工作,2016年,月薪2500!广深互联网行业很少包吃住,前面几个月房租都是问家里人要的。一个学计算机的,还没工厂流水线挣的多!这就是现实,而且非常难找,只能进些创业公司,稍大一点的,没实战经验,没实习经历,又是个渣渣二本,面试机会都没有!

有人会说,是不是你能力不行啊?是的,相比名校那些编程天才,我可能能力不行。但跟本校同学相比,我可以说是他们中最优秀的,我连续三年得国家励志奖学金。每年的学校一等奖学金都会有我的。我虽然没有实习经历,但我大三就开始学APP开发,我自己开发的桌面软件就有三款。还有大大小小各种APP的团队开发。然而又有什么用呢?

这就是现实!!!残酷的现实!!!

逆袭

到今年六月,已经是我从事Android开发的第4年了。在深圳摸爬滚打了3年多,一直混迹于小厂的圈子,跳来跳去,薪资8k左右基本上没什么上升了。圈子受限,技术水平也难以得到实质性的提升。

这时我也明白了老人们告诉过我的一句话:作为一名程序员,圈子很重要!

真正迎来转折,是年初疫情爆发,那时我赶着“金九银十”跳槽到一家公司不久。疫情裁员风波直接把我变成了无业游民。小厂的圈子全都在裁员,工作基本找不到了。

疫情在家呆了很长一段时间,想了很多,想摆脱这种苦逼的生活,想好好地,稳定的存点钱,也到了该成家的年纪了。

耗时大概三个月,系统复习知识点、查漏补缺。以及狂刷2000页Android面试真题PDF后,收获了京东的offer,下面分享我的心得体会。

分享一个GitHub宝藏地址:https://github.com/Timdk857/Android-Architecture-knowledge-2-纯干货,收藏不后悔系列。

面试

从3月初开始复习,准备面试题。复习的资料主要为《Android开发艺术探索》和《Android PDF知识大全》(一位朋友分享),还有就是网上的其他博客资料。

初期面试到处碰壁。从3月中旬开始面试,一直到4月底。共面试9家公司,近20轮面试,拿到2个小公司和1个上市公司(不是出名的公司)的offer,最后准备去上市公司了。也投递了BAT、360、抖音、快手、平安等大厂的岗位,不过大部分没给面试机会,少数大厂在后续面试中也把我拒绝了,原因是:基础知识不够扎实,技术深度不够。

接下来我将这一个月内我接触的知识点铺展开来,也给大家一点参考,文末也有分享完整详细的Android知识大全PDF

书籍:《Android开发艺术探索》、《Android进阶之光》、《Android进阶解密》、《图解Http》

书是不能不看的,以上这几本,除了图解Http之外,都要大致读一遍。当然时间可能没那么充裕,所以要跟着目录,挑一些自己的弱项好好复习一下。Http这本书是因为有几家公司面试问到了网络相关的知识,所以我才去阅读的

**算法:**LeetCode,把链表、排序、树标签里所有简单类型的题目练一下手。特别是排序,冒泡、快速、二分、选择、归并一定要达到手写的水平!

**数据结构:**Java的HashMap——7和8的区别、ArrayList、LinkeList。Android的ArrayMap、SparseArray系列。还有阻塞队列ArrayBlockingQueue、LinkedBlockingQueue。HashMap的结构和细节是遇到最多,建议仔细看一下源码,一定要有自己的理解(划重点)。把HashMap如何存储、如何查找。hash碰撞,以及内存利用率这些问题理解一下

**设计模式和架构:**准备一些自己拿手的模式,在网上查一下资料。准备一些套话,关键词耦合,二次修改方便,外部不用关心内部实现等等。MVC、MVP、MVVM三种,起码要了解两种,并且能清晰明确的说出,两种架构间的优缺点。

我本身经历过一次MVC -> MVP的过渡,所以面试的时候就只提了这两种。MVVM没接触过,就实话实说没搞过,面试官也不会再问。千万不要打肿脸充胖子,没接触过就说不会就可以了。
关键词:UI逻辑、业务逻辑、不影响对方的前提下修改、逻辑清晰,方便定位

**简历:**这个就8用提了,面试的敲门砖。我的简历也写的不是很好,但因为会一点音视频的知识,所以还是有一点加分项的。简历要注意简洁明了,star法则;诸如:我做了A工作,将效率提高200%、我优化了xxx,把速度优化了10~20倍。1 ~ 2页最佳

最开始写简历的时候,实在不知道该如何动笔。磨磨蹭蹭憋了好几天没整出来。其实这个时候就要平心静气,把自己的思维拔高一点。站在整个项目的角度去细细查看,这个时候就会发现项目中还是有不少亮点的。

**Android基础:**这个就很重要了,当然涉及面也相当广。四大组件,生命周期这个啥都不说了,直接冲就是了,基本都会问到。Handler、View绘制流程、事件分发,这些都是老生常谈。

**Android框架基础:**AMS,Activity的启动过程。Android绘制流程(这个看个人了,因为我简历上写了熟悉Canvas哭,手动狗头)

**Java基础:**多线程、线程池、锁机制,这两个知识点问到的还挺多的。其他的包括,内存区域、内存泄漏、垃圾回收。。。(这些懂个概念即可,不深究)

系统学习

在体系化的学习过程中,博客、书籍、视频课程都是较好的学习手段。

鉴于Android也是基于java语言的,因此很多与java相关的基础也是必须掌握的,比如《深入理解Java虚拟机》、《Effective Java》等相关书籍也是必读的。

Android相关的书籍包括《Android权威编程指南》、《Android开发艺术探索》等,进一步的还可以去阅读Android相关源码,配合《Android源码设计模式解析与实战》等书籍,对阅读源码大有裨益。

如果你觉得自己看书太慢而且难以全部理解,博客不够系统,可以找一套进阶视频学习。没有的话我可以免费分享一套给你。在我的石墨文档中就可以获取了:
Android架构视频+BATJ面试专题PDF+学习笔记

最后

2020年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。祝大家2020年万事顺利。

给大家一些建议

1.遇到问题,不要没有进行仔细分析,就直接百度和谷歌
2.学习知识的时候,不要没有自己的思考和理解,死记硬背
3.要记得深入追究一个问题的本质原因
4.一定要有自己知识点总结和梳理
5.学到知识点,没有很好的实践,动手能力不够
6.要自己的学习的方法
7.确定目标和找到有效的学习方法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chuhe1989/article/details/107007499

智能推荐

JWT(Json Web Token)实现无状态登录_无状态token登录-程序员宅基地

文章浏览阅读685次。1.1.什么是有状态?有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie值,记录对应的session。然后下次请求,用户携带cookie值来,我们就能识别到对应session,从而找到用户的信息。缺点是什么?服务端保存大量数据,增加服务端压力 服务端保存用户状态,无法进行水平扩展 客户端请求依赖服务.._无状态token登录

SDUT OJ逆置正整数-程序员宅基地

文章浏览阅读293次。SDUT OnlineJudge#include<iostream>using namespace std;int main(){int a,b,c,d;cin>>a;b=a%10;c=a/10%10;d=a/100%10;int key[3];key[0]=b;key[1]=c;key[2]=d;for(int i = 0;i<3;i++){ if(key[i]!=0) { cout<<key[i.

年终奖盲区_年终奖盲区表-程序员宅基地

文章浏览阅读2.2k次。年终奖采用的平均每月的收入来评定缴税级数的,速算扣除数也按照月份计算出来,但是最终减去的也是一个月的速算扣除数。为什么这么做呢,这样的收的税更多啊,年终也是一个月的收入,凭什么减去12*速算扣除数了?这个霸道(不要脸)的说法,我们只能合理避免的这些跨级的区域了,那具体是那些区域呢?可以参考下面的表格:年终奖一列标红的一对便是盲区的上下线,发放年终奖的数额一定一定要避免这个区域,不然公司多花了钱..._年终奖盲区表

matlab 提取struct结构体中某个字段所有变量的值_matlab读取struct类型数据中的值-程序员宅基地

文章浏览阅读7.5k次,点赞5次,收藏19次。matlab结构体struct字段变量值提取_matlab读取struct类型数据中的值

Android fragment的用法_android reader fragment-程序员宅基地

文章浏览阅读4.8k次。1,什么情况下使用fragment通常用来作为一个activity的用户界面的一部分例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章 – 2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输_android reader fragment

FFT of waveIn audio signals-程序员宅基地

文章浏览阅读2.8k次。FFT of waveIn audio signalsBy Aqiruse An article on using the Fast Fourier Transform on audio signals. IntroductionThe Fast Fourier Transform (FFT) allows users to view the spectrum content of _fft of wavein audio signals

随便推点

Awesome Mac:收集的非常全面好用的Mac应用程序、软件以及工具_awesomemac-程序员宅基地

文章浏览阅读5.9k次。https://jaywcjlove.github.io/awesome-mac/ 这个仓库主要是收集非常好用的Mac应用程序、软件以及工具,主要面向开发者和设计师。有这个想法是因为我最近发了一篇较为火爆的涨粉儿微信公众号文章《工具武装的前端开发工程师》,于是建了这么一个仓库,持续更新作为补充,搜集更多好用的软件工具。请Star、Pull Request或者使劲搓它 issu_awesomemac

java前端技术---jquery基础详解_简介java中jquery技术-程序员宅基地

文章浏览阅读616次。一.jquery简介 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互 jQuery 的功能概括1、html 的元素选取2、html的元素操作3、html dom遍历和修改4、js特效和动画效果5、css操作6、html事件操作7、ajax_简介java中jquery技术

Ant Design Table换滚动条的样式_ant design ::-webkit-scrollbar-corner-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏19次。我修改的是表格的固定列滚动而产生的滚动条引用Table的组件的css文件中加入下面的样式:.ant-table-body{ &amp;amp;::-webkit-scrollbar { height: 5px; } &amp;amp;::-webkit-scrollbar-thumb { border-radius: 5px; -webkit-box..._ant design ::-webkit-scrollbar-corner

javaWeb毕设分享 健身俱乐部会员管理系统【源码+论文】-程序员宅基地

文章浏览阅读269次。基于JSP的健身俱乐部会员管理系统项目分享:见文末!

论文开题报告怎么写?_开题报告研究难点-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏15次。同学们,是不是又到了一年一度写开题报告的时候呀?是不是还在为不知道论文的开题报告怎么写而苦恼?Take it easy!我带着倾尽我所有开题报告写作经验总结出来的最强保姆级开题报告解说来啦,一定让你脱胎换骨,顺利拿下开题报告这个高塔,你确定还不赶快点赞收藏学起来吗?_开题报告研究难点

原生JS 与 VUE获取父级、子级、兄弟节点的方法 及一些DOM对象的获取_获取子节点的路径 vue-程序员宅基地

文章浏览阅读6k次,点赞4次,收藏17次。原生先获取对象var a = document.getElementById("dom");vue先添加ref <div class="" ref="divBox">获取对象let a = this.$refs.divBox获取父、子、兄弟节点方法var b = a.childNodes; 获取a的全部子节点 var c = a.parentNode; 获取a的父节点var d = a.nextSbiling; 获取a的下一个兄弟节点 var e = a.previ_获取子节点的路径 vue

推荐文章

热门文章

相关标签