写在最后
在技术领域内,没有任何一门课程可以让你学完后一劳永逸,再好的课程也只能是“师傅领进门,修行靠个人”。“学无止境”这句话,在任何技术领域,都不只是良好的习惯,更是程序员和工程师们不被时代淘汰、获得更好机会和发展的必要前提。
如果你觉得自己学习效率低,缺乏正确的指导,可以一起学习交流!
加入我们吧!群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
其实从三月份投递简历开始准备面试到四月份收offer,也不过1个月的时间,但这都是建立在我过去一年的积累啊,无数次的通宵自习室,图书馆的专属椅子都被我坐的陷进去。避免误导大家,这次也不做标题党,写了准备一年,踏踏实实干事。
都是比较不错的书单
以下是我去年给自己订的学习计划:
一月:
大数据入门
整个一月份都在刷入门视频和《Hadoop权威指南》,又临近期末,每天5点半起床,看两个小时的视频然后上课或者复习期末考。
二月:
剑指offer刷一遍、数据结构、JavaSE、JVM、多线程
①剑指offer有些搞不懂的直接跳过,等下个月第二遍再刷;
②数据结构重点是各种树、二叉树、红黑树的一些特性以及链表的特性;
③JavaSE主要是类对象接口的区别,能不能继承,Static的特点,各种Hashmap,ArrayList等集合框架的原理源码;
④JVM是根据网上整合的高频面试题进行学习的,刷了一遍面试题之后才去看周志明的《深入理解Java虚拟机》,JVM难的不是JVM布局,垃圾回收算法等这些理论,而是结合代码和项目场景。比如说一段代码,有很多个类、方法,其中又有静态类和全局变量,这时候项目跑起来的时候哪些先加载,哪些变量存放在哪个区,不止要懂理论,还要结合代码懂理论。还有就是项目中的OOM,栈溢出,JVM的参数调优等等。
⑤多线程也是刷网上面试题和博客的,几本多线程的书都是一坨一坨的,理解不来。先动手把几个多线程实现方法实现了一遍,然后分析优缺点,再由此切进去线程不安全和各种锁。多线程学习不同JVM,自己多动手,多调试一下,控制台都会告诉你答案。
三月:
剑指offer二刷,数据库、操作系统、网络、准备面试
①剑指offer第二遍重点刷第一遍时思路懂代码不懂的。
②数据库刷了牛客网SQL实战100多题的,其他都是索引原理,悲观乐观锁等理论。
③操作系统刷高频面试题。死锁的产生条件、解决方法等等,资源调度算法,并发和并行等。
④网络也是刷面试题。三次握手四次挥手以及为什么要这样做、TCP和UDP、网页请求过程、DNS解析过程、网络模型、响应码的意思等。
⑤我每刷一道算法或者理解了一道面试题都会进行整理,所以到面试之前看看整理的文档和博客就行,异常轻松。这个月也继续投递简历进行面试,从三月份开始都是边投边准备,不存在全部准备好再去投。
三月份收了京东、瓜子二手车等二线大厂的offer。
四月:
大数据项目、手写剑指offer、继续面试
①三月份被阿里菜鸟部门的三面面试官怼了一发,说简历没有大数据项目面大数据岗,理论会再多有什么用,于是打算在四月份补一下项目。
②在补项目的同时,不忘算法,练习白板写代码。
四月份收了腾讯、去哪儿一些offer,腾讯和去哪儿终面都得现场面,所以一天飞北京,一天飞深圳。拿到腾讯offer的时候跟HR商量能不能去上海或者北京的base,HR说不行,于是就没去了。选工作和生活城市有一个硬性标准:离家远!那些在北方读书的同学毕业之后一直要往家里跑,而我则是一直往外跳,或许是因为在厦门待了四年吧,家乡也是「围城」啊。
5-12月:
实习,看框架源码,面试,整理面经
最后选择了去Kyligence实习了,刚好趁这个机会学习了Kylin源码,看了Hadoop和Spark的部分源码。后面的面试也是为了倒逼自己学习,在面试中找不足,也顺便整理了一些面试资料;
总结:
一定要列好自己的学习计划,也要学会根据自己的学习情况调整计划。项目是面试的敲门砖,也是面试的大头,我是从大二出去实习的,所以在项目这边可以花较少的时间,不用从零开始学。底层理论一定要会,不然大厂无望。算法一定要硬刚,总共就那几种题型,我刚开始也很抵触的,觉得太难了,后面迎难而上也就那么回事。第一遍不行就第二遍,不然就第三遍,直到现在剑指offer里面也有一些我不懂的题目,但我也不会去深究,大局为重,不抠细节。
别的同学放寒假的时候,自己一个人在学校旁边租了个小房子学到过年前夕;为了巩固实习的项目更好地面试,跑了几次之前实习的公司请同事吃饭问项目细节;为了阿里面试用肝硬刚,连夜复习;简历投的太多,信息都被卖了,而且一听到手机响就以为是面试电话;去腾讯终面,在深大的通宵自习室连夜复习。
以上是我过去一年的准备,说说我从投递简历到收offer这一个月的准备。
1.复习算法。把以前刷过的算法题分类整理了一下,因为之前有整理过,所以复习起来没用多少时间,还特意去理解了长长的KMP算法,LRU算法。
2.复习理论基础。除了复习整理的面经和资料之外,还特意去了解了一下Golang,因为头条用的go语言。
3.特意准备了几个项目技术难点,能在面试的时候炫一下。
四、头条一面(Java+项目)
1.倒排索引
2.讲讲redis里面的哈希表?
3.happen-before的规则?
4.volatile修饰符,synchronize锁
5.java单例模式的实现,懒汉、饿汉?
6.进程与线程的区别,多进程和多线程的区别?
7.HashMap原理,为什么用红黑树,红黑树的特点?
8.快排时间空间复杂度,最好最坏的情况,优化方案?
9.TCP的拥塞控制,具体过程是怎么样的?UDP有拥塞控制吗?如何解决?
10.讲讲了解的垃圾回收算法和回收器,什么时候执行STOP THE WORLD?
11.了解Go语言吗?
五、头条二面(大数据+项目)
1.Kylin的项目架构
2.Paxos和ZAB协议
3.CAP理论,分区容错性的意义
4.大表Join小表优化,如何处理数据倾斜?
- 讲一下最大堆和最小堆
6.HDFS的读取、写入,容错处理。(源码)
7.MapReduce的过程(第一版和第二版的)
8.MR shuffle,Spark shuffle。
9.namenode HA,脑裂,Yarn的调度机制。
题外话
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多程序员朋友无法获得正确的资料得到学习提升,故此将并将重要的Android进阶资料包括自定义view、性能优化、MVC与MVP与MVVM三大框架的区别、NDK技术、阿里面试题精编汇总、常见源码分析等学习资料。
【Android思维脑图(技能树)】
知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。
希望我能够用我的力量帮助更多迷茫、困惑的朋友们,帮助大家在IT道路上学习和发展~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
😕/bbs.csdn.net/topics/618156601)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!