前言
首先说明一下我校招的时候准备的是 Java 开发岗位,所以下面的内容主要适用于 Java 学习。
研一的时候痴迷于王者荣耀不可自拔,实习面试的时候被各个大厂毒打了一番,眼看身边的同学都已经拿到大厂实习 offer,我当时真的急了,卸掉游戏认真准备了一年,最终结果还不错,拿到了百度、美团、华为、网易、银联、等大厂offer。
这篇文章我也不打算写面经了,主要写一下我当时面试准备了哪些东西,大家可以当做 Java 学习路线来参考学习。
主要内容包括(干货满满):
学Java有哪些就业方向?
数据结构和算法
设计模式
计算机基础
Java 入门
Java 高手进阶
基础框架(SSM)
微服务框架
常用中间件
数据库
分布式架构
必须掌握的工具软件
学习资源网站列表汇总
学习常见问题(FAQ)
买一瓶可乐,泡一杯咖啡,lets go 学习~
学Java有哪些就业方向?
在介绍 Java 怎么学之前我给大家介绍一下学完了能干什么,因为有目标的学习才是最高效的。
很多 Java 入门学习者对岗位或者方向的概念非常模糊,今天学安卓、后天学大数据,三心二意的学习势必造成技术不精,这就是面试官通常说的:这位面试者基础比较差。
学习技术首先要认准一个方向专注下去,有了一定积累后再将自己的知识面扩宽,找到自己感兴趣的方向再沉下去学习,周而复始你就成为这个行业的专家了。
Java 这门语言,在公司里根据分工不同衍生出了众多的岗位或者技术方向。
我在 boss 直聘上搜索了 BAT 等大厂的岗位,目前有以下三类岗位非常热门:
安卓开发
技能要求:
- 熟悉 Android UI 开发非常熟悉,对 UI 架构有理解,并了解基础的 UI 交互知识;
- 熟悉 Android 调试工具和方法,可以应付各种 Android 复杂问题;
- 熟悉 Android Framework 层,有通过 Android 源码阅读定位问题的经验;
Java 后端开发
技能要求:
- 具备扎实的Java基础,对JVM原理有扎实的理解;对Spring、MyBatis、Dubbo等开源框架熟悉,并能了解它的原理和机制,* 具有大型分布式系统设计研发经验;
- 熟悉基于Mysql关系数据库设计和开发、对数据库性能优化有丰富的经验;
- 熟悉底层中间件、分布式技术(如RPC框架、缓存、消息系统等);
大数据/数据仓库
技能要求:
- 熟悉Hadoop/Spark/sqoop/hive/impala/azkaban/kylin等大数据相关组件;
- 精通sql及性能调优,熟练使用java、python、scala其中一种编程语言;
- 掌握数据仓库 (DW) / OLAP /商业智能 (BI) /数据统计理论,并灵活的应用,具备大型数据仓库设计经验;
- 这里只列举了三类比较热门的技术岗位,希望大家结合自己的经验思考一下方向。
敲黑板:认清自己,找准方向,越早确定方向越容易成功!
学习常见问题
学了容易忘怎么办?
这是大家学习会遇到的头号大问题,怎么解决?重复学习。
打个比方,假如你正在学习 spring 注解,突然发现了一个注解@Aspect,不知道干什么用的,你可能会去查看源码或者通过博客学习,花了半小时终于弄懂了,下次又看到@Aspect 了,你有点郁闷了,上次好像在哪哪哪学习,你快速打开网页花了五分钟又学会了。
从半小时和五分钟的对比中可以发现多学一次就离真正掌握知识又近了一步。
人的本性就是容易遗忘,只有不断加深印象、重复学习才能真正掌握,所以很多书我都是推荐大家多看几遍。哪有那么多天才,他只是比你多看了几遍书。
推荐这么多书都要看完吗?
当然不是!有一些书都是同类型的,作者写书的侧重点不一样,大家要学会挑重点看。
拿到一本书,首先要把目录多看一遍,一般而言书的前几章都是介绍型的内容,如果你已经有了基础,可以直接跳到后面原理解析或者实战部分。
需要学多久才能成为技术大牛?
学习无止境!
业界说法,通过不断努力学习,一到两年可以达到初级水平,三到四年达到中级水平,五年可以达到高级水平。
实际上每个人的学习能力和精力不一样,时间参考意义不大。
只要你在一个方向或领域有自己的建树,就可以叫你大牛;如果你在公司是技术骨干、技术专家、架构师,也可以称之为大牛。
敲黑板:技术学习千万不要浮躁,谦卑一点多学一点,天外有天。
现在 python、Go 语言很火,要不要直接学它们?
不要纠结语言,语言只是工具。今天 Go 很火,明天会有其他语言。
我有一个同学毕业去阿里写 Java,后面跳槽到深圳腾讯写 C++,现在又跳到字节跳动写 Go,在大佬面前这些语言只是语法不一样而已。所以建议大家打好基础,答应我一定打好基础。
学习很难坚持下去怎么办?
建议大家学习的时候找一些兴趣相同的人一起,一个人学习很孤独,一群人学习可以相互鼓励互相促进,不容易放弃。
总结
感谢你看到这里,文章有什么不足还请指正,觉得文章对你有帮助的话记得给我点个赞!
最后为大家准备了一些Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等,关注公众号:前程有光领取!