最后
分享一份工作1到5年以上的Android程序员架构进阶学习路线体系,希望能对那些还在从事Android开发却还不知道如何去提升自己的,还处于迷茫的朋友!
-
阿里P7级Android架构师技术脑图;查漏补缺,体系化深入学习提升
-
**全套体系化高级架构视频;**七大主流技术模块,视频+源码+笔记
有任何问题,欢迎广大网友一起来交流
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
当时,我花了大概2个月时间,快速成长,当然这得益于我的勤学好问,碰到你无法理解的问题,一定要先尝试思考,然后再去求教他人。
当时如果项目非常着急的情况下,请立即把问题抛出来,求助他人,因为你是在为公司的项目负责,而不是个人的自我学习。
每天来回的一个小时里面,足够我看完一些技术文档。
当我想尝试其他语言基础知识,或者做点好玩的东西,这段时间对我来说非常重要。
因为我在回家后,就知道我应该做什么,怎么做。
会不会很枯燥无味?老实说,肯定会!曾经有一段时间,我在公交车上每天看的是“今日头条”,今日头条确实非常棒,他本身的算法太可怕,一直推送你喜欢的内容,以至于后来很长一段时间,我都没敢打开力扣学习。
好在我这人幡然醒悟的比较快,因为我很清晰的知道,我要的是什么,那就是让自己变强,因为你变强后,你才有资格得到你想要的。
有些人只会抱怨,怨天怨地,我想说的是,在那个过程,你已经浪费了很多时间,比如看完一篇python的爬虫文档。
一直保持海绵体的吸收知识,不仅让我自己看到自己的进步,也让我快速在职场里面脱颖而出。
我在第一家公司呆了大概2年后,我跳槽了。
那个时候的我,非常自信,我有有足够的资本自信,因为这两年,我一直在进步,kotlin、第三方开源框架、framework、高级UI、数据结构、NDK、flutter等等,还有其他编程语言我也有所涉略。
这边给各位小伙伴一个建议:
一定是中高级的Android开发,才有市场,一定要自己动手做点小项目,再去找工作。
另外,Android的职业规划之路有很多,全在于你是否愿意继续学习,因为后面可拓展的技术太多了,比如上面提到的flutter。
##(四)入职腾讯
我在跳槽后,进入一家很知名的网络公司,那个时候,我的水平,离进入腾讯的技术员,还有一定的差距。
主要的差距在于,基础理论知识!
越是大公司,越重视程序员的基础知识,这也是非科班出生程序员的致命痛点。
那么是否有办法补救,当然有,那就是:看书、刷题库。
看书和刷题库是最有效弥补基础知识的方式,我自己整理了一套面试题,里面有历年各大知名网络公司的面试题,百度、腾讯、阿里巴巴、美团、滴滴等等都有,其实这些公司的面试题,都是非常基础的知识。看到这些题,你就知道我花了多少精力了。
再跳槽到第二家公司,我是我们公司Android开发的小领导,在繁忙的工作中,每天我必定抽出时间继续学习。
有很多程序员容易满足,不会主动去学习,直到他们需要用到的时候,才开始翻书学习,这种态度不是说不行,只是在我看来,有点懈怠了。
程序员是一个需要不断学习的岗位,同时程序员也是一个高薪的岗位,所以这样容易滋生懈怠,其实这样未尝不可,只是如果你想站在更高的平台,那么不要停止学习,哪怕每天只是学一点点。
后面的事情,顺理成章,19年,我开始规划自己入职腾讯的计划。
除了刷腾讯公司每年的面试题之外,我还认真的了解腾讯技术部门的架构,以便清晰的知道,如果自己要进去,自己应该负责哪些事项,同时,这些事项需要拥有哪些技术的程序员。
在一切做好准备后,我去面试的那天,游刃有余,我丝毫不觉得我在面试一家多么厉害的公司。
下面分享我的面经:
一面(1h):
-
谈谈你学习过的架构模式 MVC MVP MVVM
-
一个Union类型,共有一个int类型、Float、Double类型的字段,请问在32位的CPU创建时需要占用多少字节?
-
Union和Struct的区别
-
谈谈你所了解的C语言的内存管理
-
说说你了解的程序设计模式,知道多少说多少
-
说说TCP和UDP的区别,你认为QQ的实现是使用TCP还是UDP?
-
谈谈你了解的C语言的编译过程
8 . 进程和线程的区别
-
谈谈你对Viper架构模式的了解
-
Fiddler的工作原理解释一下
-
死锁产生的原因以及解决办法
-
进程的调度算法有哪些,分别解释一下?
-
Android程序共享数据的方式有哪些?
-
Android的性能优化
-
Handler和HandlerThread的区别
-
八皇后问题了解过吗?具体怎么实现的?
-
解释一下异步编程,说说它的应用
-
Android应用的启动过程
二面(40Min):
1. 多线程了解吗?
-
多线程如何实现通信?
-
多线程如何实现线程安全?
-
多线程如何实现同步机制?
-
进程间的通信方式?
-
谈谈你对架构模式和设计模式的理解。
-
现在让你设计一个字典,说一下你的设计思路。
三面(3.5h):
-
请你画出MVP架构图,并解释一遍它的运作流程。比如网络操作
-
解释一下页面展示数据获取的数据来源。
-
多线程会导致什么问题,应该怎么解决?
-
Android进程的优先级是怎样的?
-
说一下Activity的生命周期
-
onStar和onResume方法的区别是什么?什么时候用onStart,什么时候用onResume.
-
说一下冒泡排序的区别?
-
冒泡排序最优的时间复杂度?
-
一棵没有特定顺序的二叉树,如何存放在文件中?
-
手写代码,给一个int的数组,将其移动k位(使用交换的思想)。如array = [1,2,3,4,5], k = 2, 则移动后的array为[4,5,1,2,3]
-
设计QQ传文件功能,并画出模块设计图。
-
说一下防火墙穿越的实现原理
-
加密算法和加密原理
-
Https实现原理
-
手写代码,无限大整数转16进制
-
讲解一下登陆时密码加密过程
-
推理题
宴会上,人们都带着白色或者黑色帽子,其中至少有一个人带黑色帽子,每个人都能看到别人帽子的颜色,看不到自己帽子的颜色。假设每个人都足够聪明,如果在熄灯的时候你觉得你自己带了黑色帽子,就鼓掌。第一次没人鼓掌,第二次没人鼓掌,第三次有人鼓掌。请问有多少个人带了黑色帽子。
Hr面(20Min)
1.自我介绍
-
你认为你身上最显著的三大特征是什么?
-
产品、薪资、个人发展、平台、地域等等 选择你认为最重要的三个?并解释为什么?
4.你除了腾讯还有面试别的公司吗?为什么选择腾讯?
5.家住哪,倾向在哪个城市工作?
6.介绍一下你的社团活动经历,说说印象最深刻的一次。
7.说说你的实习经历
8.你对待加班的看法。
结语
看到这篇文章的人不知道有多少是和我一样的Android程序员。
35岁,这是我们这个行业普遍的失业高发阶段,这种情况下如果还不提升自己的技能,进阶发展,我想,很可能就是本行业的职业生涯的终点了。
我们要有危机意识,切莫等到一切都成定局时才开始追悔莫及。只要有规划的,有系统地学习,进阶提升自己并不难,给自己多充一点电,你才能走的更远。
千里之行始于足下。这是上小学时,那种一元钱一个的日记本上每一页下面都印刷有的一句话,当时只觉得这句话很短,后来渐渐长大才慢慢明白这句话的真正的含义。
有了学习的想法就赶快行动起来吧,不要被其他的事情牵绊住了前行的脚步。不要等到裁员时才开始担忧,不要等到面试前一晚才开始紧张,不要等到35岁甚至更晚才开始想起来要学习要进阶。
给大家一份系统的Android学习进阶资料,希望这份资料可以给大家提供帮助。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
他的事情牵绊住了前行的脚步。不要等到裁员时才开始担忧,不要等到面试前一晚才开始紧张,不要等到35岁甚至更晚才开始想起来要学习要进阶。
给大家一份系统的Android学习进阶资料,希望这份资料可以给大家提供帮助。
[外链图片转存中…(img-VsLO5DL5-1715312797952)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!