2024年安卓最全一位四年多Android开发老鸟,对开发经验总结与排坑经历分享,学生会面试题选择题

本文讨论了如何通过系统学习、面试准备和职场策略,从初级程序员晋升到Android架构师或技术专家,强调了知识体系、面试技巧、性能调优、开源框架理解和团队合作的重要性。
摘要由CSDN通过智能技术生成

最后

都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。

技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;

我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

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

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

地摊文学里总劝人去social多交朋友,但是经营人脉不等于去社交,也不等于去认识很多酒肉朋友。我个人理解,真正有价值的社交其实都是弱社交。也就是那些和你不太熟悉的人,比如前同事,校友,不怎么来往的同学等等。经营人脉其实并没有太多东西,就是就只有一点,就是管理好外界对我们的看法和认知,维持住“人设”。简单来说,就是我们要注意羽毛和口碑,说不定什么时候它就起到了作用。

很多大牛的创业经历当中都有这样一条,早期一起参与创业的追随者都是出自对这个人本身的认可参与的,而不是冲着事。比如老罗,我并不是老罗的粉丝,也不是很喜欢这个人,但不可否认,他是一个很有魅力的理想主义者。所以才会有那么多人愿意帮助他和加入他。大家感兴趣可以去了解一下,早期老罗创办英语培训班的时候,为了争取生源,给老师们开的工资很低,这些老师心甘情愿拿低工资参与其中,就是因为认可老罗这个人。

在职场当中真正好机会是很稀缺的,很多机会只有局内人才能接触到。比如你们在招聘网站上看得到腾讯王者荣耀的部门招人吗?当然看不到,因为这样的岗位太珍贵了,一般都是内部推荐就消化了。假如你在这样的岗位当中,现在组里有一个空缺,老板让你内推一个人进来,你说你会找谁?我估计十有八九都会找和自己关系最好的前同事,虽然可能已经好几年没有联系了。

反过来也是一样的,当我们这些弱社交体系下的人有不错的机会的时候,是否会想到我们,很大程度上其实就取决于我们之前和他们共事的时候表现是否出色,为人是否靠谱,我觉得,这才是经营人脉的核心价值。

谨慎选择

其次,我想说的一点是谨慎选择,主要体现在我们跳槽换工作的时候。我们一定要清楚,我们跳槽的战略目标是什么。是为了大幅涨薪,是为了职业发展,还是因为到了瓶颈,或者是因为想要脱离现在的环境?

在前期的时候,我们跳槽往往是为了脱离现在的环境,因为当下有了一些让我们不爽的东西,所以我们换工作走人。但其实这是不对的,当然环境很重要,我们需要追求一个更好的工作环境,但是最好我们能找到一些更大的意义。如果只是盯着一点,很容易吃亏。

当今互联网圈子里,其实不缺机会,你只要稍微用过一两个招聘软件,每到招聘季必然会接到一堆猎头的电话和信息。生怕你不知道你待得太舒服,忘了跳槽。很多人其实本身可能并没有那么强更换工作的意愿,但是架不住猎头各种套路。先是用其他公司的高薪骗你交出简历,接着骗你去面试,然后稀里糊涂地你就拿到offer了。很多人就这么着稀里糊涂地换了工作,那么当然也就顾不上战略目标了。

互联网时代,信息越来越方便也越来越廉价,带来的后果其实就是有价值的信息越来越难得。到处都是的信息某种程度上来说都是垃圾,含金量高的信息还是很难获取的,信息差某种程度上是拉大了,而不是缩小了。在这种情况下,当我们在职业生涯当中做出决定的时候一定要理智和谨慎。一定要谨记物以稀为贵的道理,到处都是的信息一定不是最好的。

当你明白了这个道理之后,最起码你就不会被猎头忽悠了。不管猎头说什么,你都可以不为所动。因为猎头能推荐出来的岗位大多数都是市场少到处都是的职位, 用脚指头也能想到无非是pdd、头条这些。那你想想看这种到处撒网招人的岗位能是核心部门,能有很好的发展前景么?当然我也不是说这些机会都不好,也会有些比较好的,但是这就很考验运气了,万一没碰上好运气其实是挺伤的,35岁之前是我们发展自己的黄金时间,非常宝贵,轻易伤不起的。

如果要跳槽,我建议可以联系一下之前的老同事或者是校友、同学,或者是找一些前辈、老上司请教,也是可以的。这种通过内部人脉获得的机会,大概率是要比猎头、招聘软件这些外部渠道获取的机会靠谱和珍贵的。总而言之,跳槽择业一定要谨慎,谋定而后动,千万不要急。

内在外在缺一不可

最后,我想和大家聊一下发展条件的问题。我从前一直觉得职场上嘛,当然有才最重要了,有才华才能受重用。我相信可能很多人都会这么觉得,尤其是刚毕业的年轻人。但随着我接受的社会毒打越来越多,我发现这个理解其实不太对。

一个人往上走的路其实是内在和外在两方面共同作用的,两者缺一不可,内在当然是我们自己的能力和品质,其次也需要外在的辅助,外在就是外界对我们的信任和评价。你有能力也需要老板信任你愿意把重任交给你,这样你才能做出成绩来晋升。如果老板信任你,但是你自己不行也一样没辙。因为老板也需要向更高的老板交代,他也不可能以自己的职业生涯冒险来扶持你,除非老板是你爸爸。

为什么姜太公要钓鱼,不自己去投简历呢?原因就在这里,他一定要让周文王发自内心地觉得他有经天纬地之才,这样才能结结实实地委以重任。如果他自己去投简历,周文王说不定还要琢磨一下,这老头这么大把年纪了还能不能上战场了?庞统虽然凤雏之名,但初期不被刘备信任时,也一样难酬壮志。与他相反的诸葛亮,一开始谱摆得很足,刘备三顾茅庐才终于出山,显然刘备会更觉得孔明更有才一些,也更愿意把机会交给他。

映射到职场当中,为什么说外来的和尚会念经,并不是外来的和尚嘴更溜,而是老板更愿意相信他们有真本事。那为什么老板不相信下面的人呢?很明显是因为下面的人在职期间并没有带来老板想要的改变,没有达到老板的预期。想明白了这一点,你就能明白,为什么在大公司主管走了,大老板不是从下面提拔一个上来,而是从外面招一个空降的原因,不是老板蠢,还不是因为下面没有能打的嘛。

所以如果我以后要跳槽的话,相比于薪水待遇这些,我反而更加关注这两点。我需要新的环境有认可我的人,新的环境有条件让我发挥出我的实力。说白了,我需要一个相信我可以解决问题,愿意给我机会施展的大佬或者是团队。因为薪水待遇能够满足的机会其实不少,但是能满足这点的就很难了。职场当中很多人喜欢带着老下属,还有些人喜欢跟着旧老板,之前我一直觉得这是办公室政治。这两年经过了社会毒打之后,我才发现这当中都是有道理的。

我们理想当中都希望老板能够唯才是举,任人不唯亲,但这毕竟是理想情况。实际当中很有可能是,你和老板关系不够好,老板很难关注到你,也就自然更加难以知道你是否有才了。而且才华和能力也不是唯一指标,古往今来恃才傲物的先贤们,往往也是埋没的多,得志的少。更何况才华也未必越多越好,有的时候够用就行了。你能统兵千万,但我现在就要一个拳头硬能打架的。

所以当我们混迹职场的时候,除了要关心我们自己能力或者是经验方面的成长之外。也要把眼光往外放一放,看一看外在的环境是否利于我们施展拳脚,积累口碑。对于我们职业生涯前期,其实这些东西是比薪水以及职级这些更加重要的东西。

关于Android学习路线与资料分享

1.架构师筑基必备技能:

Android应用是由Java语言进行开发的,SDK也是由Java语言编写,所以我们要学习java语言。另外,虽说kotlin语言得到了Android官方的热推,但是kotlin也是编译成了java语言再运行的。对于Android来说,只要SDK没有用kotlin重写,那么Java语言是都需要学习的。而且Androidapk的后台服务器程序大概率是java语言构建,所以学习java也是一种必然。

那么Java中哪些东西是我们Android程序员需要学习的呢?由于Android程序员习惯了CV代码块,所以与Android中比较相关的稍微比较难的Java基础几乎都是一个门槛,像泛型,多线程,反射,JVM,高效 IO,注解,序列化等,都是被CV的对象,而程序员是不懂原理的,具体内容如图所示。

2.Android框架体系架构——Andlroid高级UI与FrameWork源码

说到FrameWork别的不说,你只要去 Github上看一下腾讯Matrix的源码,就知道Framework 的知识有多重要了。像掉帧监控,函数插装,慢函数检测,ANR 监控,启动监控,都需要对 Framework 有比较深入的了解,才能知道怎么去做监控,利用什么机制去监控,函数插桩插到哪里,反射调用该反射哪个类哪个方法哪个属性……

3. 360°全方面性能调优

Android性能调优方面包括了很多知识点,其中关键的就有设计思想与代码质量优化, 程序性能优化,开发效率优化, 我们开发者将这些统称为Android360°全方面性能调优。 其实在软件开发过程中,想必很多读者都遇到过系统性能问题。而解决系统性能问题的几个主要步骤是:

测评:对系统进行大量有针对性的测试,以得到合适的测试数据。

分析系统瓶颈:分析测试数据,找到其中的hotspot(热点,即bottleneck)。

性能优化:对hotspot相关的代码进行优化。

4.解读开源框架设计思想

在Android开发中开源框架设计思想中的知识点也是较为重要的,相信大家都可以看到在每个公司招聘当中,对Android开源框架要求都是比较严谨的。而想要完全搞懂还得学会整理和规划:我们常见的Android热修复框架、 插件化框架、 组件化框架、 图片加载框架、 网络访问框架、 RxJava响应式编程框架IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,这些都是属于Android开源框架设计思想的。如下图所示:

5.NDK模块开发

Android平台从诞生起,就已经支持C、C++开发。众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言。但这并不等同于“第三方应用只能使用Java”。在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C”的编程方式是一直都可以实现的。在最近比较吃香的音视频开发技术也是属于NDK模块开发。关于音视频进阶方面可看这篇文章:关于音视频进阶方面可点击这篇文章:作为一个Android程序员,精通音视频开发,寒冬再冷也冻不到你

6.架构师练成实战

在学好以上知识后就应该运用到实战当中了,在常见的实战当中:架构设计,网上商城项目实战,新闻客户端项目实战,多格式播放器项目实战,Gradle自动化项目 都是属于重中之重的。

当然还有小程序项目实战也是Android开发者必须搞懂的:

7.微信小程序

阿里架构师对小程序的看法:

自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

真正的技术提升。**

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 28
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值