首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java自学之路

Java自学之路

作者头像
用户7116066
修改2020-03-24 10:12:05
8300
修改2020-03-24 10:12:05
举报
文章被收录于专栏:java_学习java_学习
一.如何选择职业方向

我见过很多之前都不是计算机专业出身的,现在从事Java开发或者大数据等职业,而且现在做的都还不错。我想这些人应该都是经过深思熟虑的做出选择的,或者是人云亦云,不过都已经走出来了。我是从事JAVA这块十多年,从初级开发到现在架构师,确实一路经历很多。

就目前主流互联网公司,JAVA的应用场景还是最多的,比如大型的分布式系统、微服务架构,基本上服务端开发用的多数是JAVA。这就决定了市场需求,如果技术还可以,找工作不是问题。当然,做IT这块有很多选择,大致有几个方向:

1.前端工程师

大型互联网公司都是前后端分离的,前端负责前端开发,比如H5、APP等工作,后端服务服务端开发。前端现在也很复杂,需要掌握HTML、css、javaScript这些基本技术外,还需要一些流行框架,比如Node、angular2、vue.js、react等,这些更新都很快。

优势:前端的起薪比较高,我觉得前端现在很紧缺的,薪资普遍比后端高点。

劣势:对于职业规划上,前端以后可以做前端架构师、前端的Team Leader。但是很少见到技术总监、CTO这些M级职位是前端出身的,当然,也不是绝对。

2.大数据工程师

大数据之前还是很抢手的,但是目前市场应该趋于饱和,也是不错的职业方向。如果你现在是DBA,我想你转大数据应该很快。比如你做数仓Hive上写sql,估计一天就可以转型成功。所以现在很多DBA转大数据,而且感觉很简单,so easy,但是估计只会写SQL。如果你是数仓Hive上写SQL的,我的建议是写个半年就可以了,多了基本上就废了。技术栈如下:

Java语言、Linux 、Hadoop(HDFS+MapReduce+Yarn )、 HBase、Hive(Hql基本操作和原理理解)、 Kafka、Storm/JStorm、Scala、Python、Spark (sparkCore+sparksql+Spark streaming ,或者加上MLLIB) 、还有(Sqoop/Flume/Oozie/Hue等)。

Spark可以用scala或者java,用scala操作RDD比较方便,前提是有学习成本。scala一行代码搞定的,用JAVA有可能几十行,但是一些其他中间件基本上都支持JAVA,用scala就少些,集成个方便比较麻烦。

流式计算,Flink未来应该是趋势,Spark streaming严格来讲是批处理。

3.JAVA工程师

JAVA已经流行了很多年了,不过现在GO语言慢慢的也在兴起。大型互联网公司分布式架构,服务端语言大多数是Java语言,周边生态也是最全的。

做后端的以后职业规划可以有技术型,比如技术专家、架构师。管理可以往Team Leader、技术总监、CTO。

其他还有很多选择,比如数据工程师、机器学习、量化工程师,也是不错的选择。

二. JAVA需要学习的技能

如果你坚定的选择Java,那就开始吧。

1. JAVA基础

这个是基础,是以后发展的根本。

你可以选择从看书开始,比如JAVA编程思想、JAVA核心技术卷,不过我不建议先从这里开始,翻译过来有很多语言比较晦涩,而且书也比较厚,坚持学完估计会花不少精力,也会有挫折感。

你可以选择网上一些免费的教程,http://www.amcto.net,也有面向零基础的JAVA教程。

学习过程中,重要的事情说三遍,动手!动手!动手!理解的再好,都没有动手来的彻底,还有一点就是做笔记。

需要学习,面向对象、注解、泛型、多线程、IO、JVM、集合、反射、网络编程、设计模式、JDBC等技能。学习过程中,随时做些小的项目。

2. JAVA WEB

语言类,html、javaScript、css(了解)、Servlet、XML、AJAX、JQuery、http协议。

框架类,Spring MVC这个就可以了,像Struts、Hibernate、Webwork这些你可以忽略了,即使遗留项目,现学也来得及。

3. 数据库

项目都是动态的,肯定离不了数据库,也是以后工作中经常用的。如果时间有限,基本上MySQL要掌握。

  • DDL、DML
  • 事务隔离级别
  • 数据库索引,比如索引原理(B+Tree)、聚集索引、非聚集索引、不同引擎的索引实现区别。
  • binlog,MVVC等。这个有点麻烦,可以以后学。
4. 缓存

系统中很多数据是要放入缓存,缓存速度很快。Memcached由于只放内存,断电会丢数据,Redis现在是主流,需要掌握如下:

  • 五种数据结构,string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
  • 集群方式,初级可以先了解。单节点实例、主从模式、sentinel模式、cluster模式。
  • 常用命令
  • 持久化机制,rdb、AOF。
  • 原理,比如单线程、惰性删除等。
5. 工具类
  • Java开发工具,Eclipse(免费),IntelliJ IDEA(社区版是免费的)。
  • 版本控制工具,SVN、git(互联网公司大部分用这个)。
  • JAR包管理工具,Maven(大多数), gradle(少部分)。
6.框架类或中间件
  • spring是必须的,IOC和AOP是必须掌握的。EJB现在就不要提了。
  • 消息,ActiveMQ、RabbitMQ、RocketMQ、Kafka(大数据场景用的较多)。分布式事务很多都是用消息解决的。
  • MyBatis,简单易用,大部分都是用这个。Hibernate这个重量级ORMapping框架用的很少了。
  • RPC通信,Dubbo(常用)、Motan(新浪)、Spring Cloud(现在很火,微服务的一种常用架构)、gRPC(Google的用的也蛮多)。
  • 分布式一致性协调框架,Zookeeper,本是主要用于大数据场景,不过现在很多分布式也是用这个,了解下基本原理,原子消息广播等。
7. 数据结构与算法

线性表(数组、链表)、栈与队列、树与二叉树(树、二叉树基本概念、二叉查找树、平衡二叉树、红黑树),这些还是要会的。

关于LeeCode,如果你校招进大厂,这个你要好好刷刷了,你即使是神童,不刷你也搞不定。现在很多社招也会面这个的。

8. 操作系统

Linux操作系统的常用命令会用一些,工作中大概率会用到的。至于select、epoll、Zero以后可以慢慢学习。

三.怎么学习
1. 善于借助搜索工具

遇到问题,恭喜你,有问题才能进步。先想着自己解决,不行解决搜索引擎,比如百度、google。搜索也是有技巧的,不妨先学习下搜索的技巧。如果能阅读源码肯定是极好的。

切记,不要很随便的问身边的同事技术问题,除非你觉得是合理的,工作中要树立自己的品牌,千万不要被别人打上不好的标签。

2. 官方文档是不错的学习途径

想学一门技术,最先去找官方文档,基本上文档都是可以接受的,当然,你的英文要好点,不好也没关系,借助有道,慢慢的就可以了。实在不行就找一些网上的视频教程,但是最新的有可能没有,或者是别人总结过的,有可能被带歪了。

3. 善于做笔记或者写博客

无论学什么,能用自己的语言总结出来,都会有新的收获。即使过了很久,翻开笔记或者博客,很快就会把只是串起来。还有一点,写博客可以拓宽自己的知名度。

我其实很少写博客,但是笔记会每天都做的,不断修改。若干时间后,翻开之前的笔记,妈呀,这太low了吧,有这种感觉说明进步了。

4. 动手做项目是成长最快的方式

重要的不需要解释了。

四.怎么写简历
1. 简历要中肯

简历写的中肯合理,比如初学者写精通分布式架构,面试官肯定觉得这是神童,会问你分布式常用架构是什么、调用链监控怎么解决的、熔断、限流。或者简单点问分布式事务,两阶段提交、三阶段提交、CAP理论、Base理论,你怎么解决分布式事务问题的?

你可以这么写,了解分布式架构,面试官问你,最起码可以答出来12来。

切记,简历不可以造假,写的内容自己心里有数即可。

2. 简历中要有亮点

多写项目经验,不要通篇都是会哪些技能。如果我是面试官,我提问会很迷茫。项目经验多写自己参与的部分,遇到哪些难题,解决方案是什么,这个看起来比较nice。

我其实比较讨厌,上来就写做过OA、CRM啥的企业管理软件,因为写的人太多了,有点普通,问你工作流引擎还不一定答出来。

如果你做过电商项目,写个订单状态机设计还是不错的,最起码每个订单不是硬编码,可以自由配置。还有库存超扣怎么解决的,这些都可以的。

以上就我的个人经验,如有不妥,请指正,愿你在未来的职业中星辰大海。

转自:http://www.amcto.net/blogdetail/1

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.如何选择职业方向
    • 1.前端工程师
      • 2.大数据工程师
        • 3.JAVA工程师
        • 二. JAVA需要学习的技能
          • 1. JAVA基础
            • 2. JAVA WEB
              • 3. 数据库
                • 4. 缓存
                  • 5. 工具类
                    • 6.框架类或中间件
                      • 7. 数据结构与算法
                        • 8. 操作系统
                        • 三.怎么学习
                          • 1. 善于借助搜索工具
                            • 2. 官方文档是不错的学习途径
                              • 3. 善于做笔记或者写博客
                                • 4. 动手做项目是成长最快的方式
                                • 四.怎么写简历
                                  • 1. 简历要中肯
                                    • 2. 简历中要有亮点
                                    相关产品与服务
                                    大数据
                                    全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档