最后
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。
还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
Android 基础知识点
Java 基础知识点
Android 源码相关分析
常见的一些原理性问题
希望大家在今年一切顺利,进到自己想进的公司,共勉!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
我觉得每一个程序员的梦想大概就是能够找一份大厂的 Offer,我觉得这很正常,这并不是我们的饭后谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻炼几年,相信对自己能力的提升还是非常大的。但不是每个人都能够进入大厂的,这往往取决于我们的能力、学历、面试表现等因素。
现在面试大公司你说你没有大型项目开发经验估计都拿不出手,jetpack、NDK、插件化、热修复理论等等已然大厂面试所必须的知识。但是,你真进入大厂了,可能几年都用不上这些知识,还是老老实实去写CRUD。
与其抱怨,不如提高自己
相比于前几年来说,现在的面试难度提升了不少。你说说现在程序员这么多,你投递的公司可能与你一起投递的就有300人,可人家只招5人,那怎么办?简历PASS掉一大批,然后面试再PASS掉一大批。从这样来看,现在流行说的:“面试造火箭,工作拧螺丝”还是很有道理的,提高面试难度只是为了从很多人中招到自己需要的那些人。
很多人都抱怨现在工作越来越难找了,的确,互联网行业现在确实没有之前好找工作了。我觉得有很大一部分原因是现在的培训班培训出来了太多半路出家的程序员,培训班打着保障你高薪就职的称号引诱了很多人进入这个圈子。我并不是对半路出家的人有偏见,只是一个事实就是培训班出来的一些人是真的无法胜任很多工作。
一是大部分培训班的培训水分特别大,说白点,很多培训班就是为了圈钱;二是半路出家的人的基础肯定是没有大学习踏实学习计算机知识的人好的,这就造成很多培训班出生的人很难往前走;三是互联网行业确实对年轻的人有一部分偏爱,毕竟刚毕业的大学生还是比较廉价的,但是互联网行业并不是吃青春饭。
所以,不管是培训班出生、应届生还是工作几年的小伙伴都要对自己有一个清晰的认识,搞清楚你自己所欠缺的能力,搞清楚你自己的优势(企业为什么要招你)。知道自己不足的地方之后,就要去努力!
互联网行业其实还是挺公平的,虽然面试的时候会将你的学历作为参考,但是如果你的能力真的厉害,你的简历真的丰富的话,面试官还是会很欣赏这样的应聘者的。
互联网竞争激烈,但是我们这些移动开发者来说可能竞争会相对于更加强烈一点,毕竟现在大环境形势也没有之前好了,下面来讲讲身为Android开发的那些“悲哀”。
移动开发程序员的那些“悲哀”
移动开发程序员完全是一个刀口舔血的职业!
我今年33岁,身边熟悉的不少朋友,从事互联网行业,年龄在 40 岁附近。常常,我通过观察他们,想象自己的未来的样子。
这些朋友,更准确的说,是我的老师,师兄,前辈,在40岁的年纪,人生境况各不相同。
有位师兄,打拼多年,现在的职级是阿里 P9。这一两年和他联系较多,主要是作为晚辈后生请教问题。阿里集团有十万员工,在 P9 职级的员工只有寥寥千人,所能够获得的工资和股票,远远超过了普通人的期望。我问过他,怎么看待这几年愈演愈烈的中年危机话题。他没有多说,只淡淡的提了一句,「其实不是像大家讲的那样紧张,如果三四十岁,职级还是 P6,能不中年危机吗」,这里需要说明一下,阿里的硕士入职定级一般是 P5。
我们来品品这句话,是有一定信息量的。诚然,以这位师兄取得的成绩和社会地位,中年危机对他来说,可能是没有亲密接触过的。但从以往的交流中,我知道师兄热爱思考,也热爱与人打交道,甚至对我这样一位寂寂无名的晚辈后生都经常保持联系。所以他对社会百相是有着高于一般人的认知的。他之所以这样说,其实是想告诉我,在他的观念里,与其说职场中年危机是一种现象,倒不如说是一种结果。
何出此言,从毕业后的二十多岁,到可能出现中年危机的三四十岁,这十几年里,有些东西的改变是我们无法阻止的,例如身体机能的下降,精力明显没有青年时旺盛了。但有些东西,是我们可以争取的。
像师兄说的,如果一个程序员,人近中年,还在相对而言较低的职级位置上,这十几年的时间,基本是处于一种原地踏步的状态,过着温水煮青蛙的日子,技术深度和广度都停滞不前,当公司的效益下滑时,很容易成为优化的目标。
特别是我们移动开发人员,以前小厂需要分别招一个IOS和Android开发人员,Flutter技术的升级使用,实现了跨平台开发,公司岗位需求变成了只招一个Flutter技术开发人员就可以满足部分需求了。裁员缩减成本就成了悬在移动开发人员头上的一把利剑,随时会降临到自己身上!
关于移动开发程序员的通病
1、一些马上毕业的同学和已经毕业一年从事Android开发相关的工作的初级开发者,往往会有这样的疑惑,不知道要学习什么东西。自己摸索着学习呢,又不知道学习的路线对不对,发愁啊。
实话说这个蛮正常的,咱们Android开发要学的东西也不少,大多数开发者都会有这种时期,当自己项目完成、处于维护阶段的时候,工作不忙,想自己学习,但是又不知道(我也想学习,可现实她不允许啊)
从何学起?怎么学?东一榔头西一棒子,最终收获甚少。然后开始自我怀疑,厌倦学习,从此堕落。
2、还有一些高级工程师除了代码,完全不知道这个世界是怎么运转的。
- 你知道怎么与陌生人打交道吗?
- 你知道怎么推销产品吗?
- 你知道你一个东西做出来,怎么把它推广出去吗?
- 你知道除了技术以外,互联网的众多行业是怎么挣钱的吗?
如果这些都不懂,恭喜你,你是纯纯的程序员,将来被优化以后,你将完全不懂如何生存。
那我们应该怎么办呢?
只说问题,不讲方案,不是我的风格,透过问题看到本质,进而给出解决方案才是。
既然知道了问题的本质,那答案就很简单了,程序员的小伙伴们,不要两耳不闻窗外事,一心只读圣闲书了。
具体怎么做呢?
1、尽量让自己拥有较长时间竞争力的技能和思想。
比如说,很多年轻人热衷于学习新的工具,新的编程语言,学习在新的平台做系统,当然,这是有一定红利期的,但作为个人的竞争力,稍过几年,很可能就一文不值。
我应该是中国最早写cold fusion代码的人,谁还知道这是啥玩意,是中国最早翻译asp教程的人,也是中国最早一波写php代码的人,从当时看,很牛逼对不对,过不了几年,这玩意也算竞争力?
什么是竞争力,多理解系统底层的逻辑和思想,诸如内存分配的机制,多理解数据结构的原理和设计理念,这些也不能说永远都有竞争力,但如果理解到位,并且应用得当,至少可以保证二三十年自己的思想不会在业内落伍。
具有发现问题的敏锐度,掌握分析问题的方法和思路,也能让自己职场竞争力相对牢固一些。
那些中年技术大咖,你让他们继续跟年轻人一起比敲代码,真敲不过,当然个别有还能敲得很利索的,大部分可能已经无法熟练的使用具体的编程工具和具体的特定算法,跟优秀的年轻人比拼了,但他们知道如何有效的在复杂的系统中发现问题,定位问题,并针对性的给出解决问题的方向,这就是竞争力,这个竞争力,依然可以持续很多年。
2、站的越高,位置越稳。
如果你曾经站在Top 1/1000的优势位置,虽然来了很多优秀的年轻人,你可能力不从心,掉到了Top 1/100。虽然没有曾经的光辉,但仍然具有足够的竞争力。仍然配得上非常优秀的标签。
如果你沾沾自喜自己现在属于Top 20%的优秀人群,但年轻人一波波冲进来,你眼看着自己掉到了 Top30%, Top40%, Top50%,对不起,优秀俩字从此与你无缘。
3、即便力不从心,也要奋力向前。
你说一代更比一代强,有的时候真的力不从心,但看你目标是什么,想独孤求败,一览众山小,可能越来越难。但毕竟!毕竟大部分人是懒惰,缺乏耐心的。想让自己超过大多数人,毕竟没那么难。
TK教主有句话很经典,具体原文找不到了,大概意思我整理一下,如果你否定天分的存在,只强调勤奋努力,那就是蠢。但如果你因此认为勤奋努力没有用,那就是又懒又蠢。
比如我这些年一直下围棋,学习新的定势,不断提升棋力,实话说,以我的水平,你说打职业比赛,开玩笑,差距太大了。每年会有大量学棋青少年超过我的水平,这是挡不住的,认了,但只要我坚持进步,就会超过很多停步不前的围棋爱好者,我四十多岁,还在涨棋,没有年轻人学的快是真的,但总有大量停步不前的围棋爱好者会被我超越对不对。
只要你肯进步,总会超越大量不进步的人。对于普通人来说,这就足够了。
4、广结善缘,稳固地位。
趁着自己优秀的时候,多帮助和扶植优秀的年轻人,我一直是这么强调的,等他们足够优秀了,你的地位和影响力会越加稳固。
有些人觉得,教会徒弟,饿死师傅。干嘛不给自己留点竞争力。
现在这个社会,优秀的人才太多,优秀的年轻人太多,你不教,别人也会教,你的徒弟不抢你的饭碗,别人的徒弟也会抢你的饭碗。你结善缘,还能等他们成长起来感恩回馈,你藏着掖着,最后你真的以为能守住什么竞争力?抢你饭碗的年轻人会在任何角落里冒出来。
5、提升视野,向上发展。
一个人在职场如果经历了很多事情,经历了很多岁月,多半总会有点优势,这个优势叫做见识,你知道一个企业是怎么成,怎么败的,你知道一个产品是怎么做起来,怎么壮大的。这就是你的竞争优势,年轻人学的算法再好,很多想法再优秀,没有见识过大场面,总会缺那么一点格局和视野。
但可怕的是,很多人虽然经历了很多事,却没有见识,匮乏视野。
比如简单化,标签化的看待问题,老板当时成功是因为运气比较好。
比如从不关心产业和市场变化的情况,一直随波逐流。
比如在自己的工作职能之外,毫不关心合作伙伴,上下游,同行的生存和发展话题。
当然也比如更常见的,只关心行业八卦话题,对各种巨头老板的绯闻八卦如数家珍,对各种真真假假的小道消息乐此不彼。并以为这是见识,视野。
所以,当更有活力,更便宜的年轻人冲上来,他们的教育背景比你更好,他们的算法逻辑比你更清晰,你还剩下什么,信谣传谣的能力和素质?
还想安安静静当个螺丝钉?对不起,你生锈了。
总结一下,优秀的门槛越来越高,这是历史趋势,谁也挡不住。
但任何时代,大部分人总是会固步自封,随波逐流,随着岁数增长,你可能真的无法挡住优秀的年轻人超越你,但你只要肯进步,总会不断超越那些停步不前的大多数。
另外就是广结善缘,提升格局,不要让自己停留在跟年轻人竞争基本战斗能力的场景里,那样你就很难维持竞争力了。
那些双非/三本/专科学校的Android开发,有机会进入大厂吗?
我自己也是非985非211学校的,结合自己的经历以及一些朋友的经历,我觉得让我回答这个问题再好不过。
首先,我觉得学校歧视很正常,真的太正常了,如果要抱怨的话,你只能抱怨自己没有进入名校。但是,千万不要动不动说自己学校差,动不动拿自己学校当做自己进不了大厂的借口,学历只是筛选简历的很多标准中的一个而已,如果你够优秀,简历够丰富,你也一样可以和名校同学一起同台竞争。
企业HR肯定是更喜欢高学历的人,毕竟985,211优秀人才比例肯定比普通学校高很多,HR团队肯定会优先在这些学校里选。这就好比相亲,你是愿意在很多优秀的人中选一个优秀的,还是愿意在很多普通的人中选一个优秀的呢?
双非本科甚至是二本、三本甚至是专科的同学也有很多进入大厂的,不过比率相比于名校的低很多而已。从大厂招聘的结果上看,高学历人才的数量占据大头,那些成功进入BAT、美团,京东,网易等大厂的双非本科甚至是二本、三本甚至是专科的同学往往是因为具备丰富的项目经历或者在某个含金量比较高的竞赛比如ACM中取得了不错的成绩。一部分学历不突出但能力出众的面试者能够进入大厂并不是说明学历不重要,而是学历的软肋能够通过其他的优势来弥补。
所以,如果你的学校不够好而你自己又想去大厂的话,建议你可以从这几点来做:
①尽量在面试前最好有一个可以拿的出手的项目;
②有实习条件的话,尽早出去实习,实习经历也会是你的简历的一个亮点(有能力在大厂实习最佳!);
③参加一些含金量比较高的比赛,拿不拿得到名次没关系,重在锻炼。
非计算机专业的学生能学好Android吗?我能进大厂吗?
当然可以!现在非科班的程序员很多,很大一部分原因是互联网行业的工资比较高。我们学校外面的培训班里面90%都是非科班,我觉得他们很多人学的都还不错。另外,我的一个朋友本科是机械专业,大一开始自学安卓,技术贼溜,在我看来他比大部分本科是计算机的同学学的还要好。参考Question1的回答,即使你是非科班程序员,如果你想进入大厂的话,你也可以通过自己的其他优势来弥补。
我觉得我们不应该因为自己的专业给自己划界限或者贴标签,说实话,很多科班的同学可能并不如你,你以为科班的同学就会认真听讲吗?还不是几乎全靠自己课下自学!不过如果你是非科班的话,你想要学好,那么注定就要舍弃自己本专业的一些学习时间,这是无可厚非的。
建议非科班的同学,首先要打好计算机基础知识基础:
①计算机网络
②操作系统
③数据机构与算法
我个人觉得这3个对你最重要。这些东西就像是内功,对你以后的长远发展非常有用。当然,如果你想要进大厂的话,这些知识也是一定会被问到的。另外,“一定学好数据机构与算法!一定学好数据机构与算法!一定学好数据机构与算法!”,重要的东西说3遍。
移动端开发需要怎么增强自己的式?
首先明确一个观点,那就是移动开发是必须有的,只要平台在原生开发就必须有。但是浑水摸鱼的日子没有以前那么好过了,因为小程序和各种跨平台开发让企业有了更多的选择。
如果你还想做界面开发,那么增强你的能力广度是必须的,比如:
- 小程序的上手并不难,同时还有诸如 uni-app 、taro、chameleon 可以帮助上手。
- 通过学习 React-Native 来认识前端开发,学习 React、CSS、JavaScript 等相关能力,只要你会 RN 其实等同于你已经学会了小程序。
- 了解学习诸如 Flutter 、 PWA 、WebAssembly 等新的技术迭代。
当然,最后不要落下数据结构与算法、计算机原理等基础知识,这些才是程序员后期的竞争力,如果想要把握更多的当然你也可以学习后端开发相关的知识。
关于面试的充分准备
一些基础知识和理论肯定是要背的,要理解的背,用自己的语言总结一下背下来。
虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,我能明显感觉到国庆后多了很多高级职位,所以努力让自己成为高级工程师才是最重要的。
好了,希望对大家有所帮助。
接下来是整理的一些Android学习资料,有兴趣的朋友们可以关注下我免费领取方式。
①Android开发核心知识点笔记
②对标“阿里 P7” 40W+年薪企业资深架构师成长学习路线图
③面试精品集锦汇总
④全套体系化高级架构视频
**Android精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水!
[外链图片转存中…(img-r8H0NF9b-1715334006195)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!