最代码官方的gravatar头像
最代码官方 2017-04-11 21:06:56
大学期间如何选择java开发方向和学习java程序?

大学期间如何选择java开发方向和学习java程序?

原文:http://blog.csdn.net/qq_31655965/article/details/68948883

作者:qq_31655965

最近一直在重新学习Java的基础,也写了一系列的博客(重新认识java系列)。很荣幸得到了许多同学的反馈。其中有许多人是初学者,来问我一些问题,也有一些是已经有过一定的基础,看了我的博客,也有了一些新的认知,来和我讨论。当然,大部分人都是在问我怎么学习,自己不知道该怎么学了,让我出个主意啥的,真正讨论问题的并且加了我好友的,大概只有两个吧。因为总有人陆陆续续的加我并且问我怎么学习啊啥的,一个一个回复同样的内容我觉得没有什么必要,所以在这里总结一下,方便自己也方便大家。

前排提示:我不是什么大神,有n年经验的大牛。我只是一个在校本科生。不保证我说的都是对的,但是我所说的,都是我自己的亲身经历。不保证对所有人都适用,具体情况,请大家自行斟酌~

java的方向

有一些初学者在学java,但是却不知道学了java可以做什么。我来粗略的总结一下。

做桌面程序

桌面程序,就是我们平常使用的客户端。由于java是一门跨平台的语言,所以用java写的桌面程序天生就是跨平台的。但是,不得不说,awt和swing做一个桌面程序实在是太痛苦了,javafx也不咋地。所以,除非你神经大条或者只是想学习了解一下。不建议这条路。

做游戏

在我的印象里。。用java写的游戏只有mc。。。我知道肯定还有别的,但是应该都不怎么出名吧(也有可能是我孤陋寡闻)。所以,很明显,这也不是一条有前途的路,除非你也能写个mc出来。现在做游戏还是c++,lua,js,c#多一点吧。讲道理我也不太熟,但是我知道,用java写游戏不靠谱。

写服务端

这是学java的三个最好的选择之一。现在大型的网站基本上都是用java写的。虽然现在服务端百花齐放,php,nodejs,go,ror,Python都在抢这一块的饭碗,但是java还是有很大的竞争力的。不信?bat现在在春招,你去看一下岗位,都有招java的,但是其他的呢?反正我是没看到。。

当然,我这不是在说java无敌,宇宙第一,而是说,java在服务端的前景还是很好的。

唯一的不好就是,学的人有点多,初级程序员满地跑,没有一定的实力还是不怎么好混的。不过,我感觉现在java服务端找工作还好。。反正我找个实习两天就找到了(大概是我要求不高。。)

android

这个就是最好的选择之二了。不多说了,有google爸爸支持,Android未来n年还是死不了的。虽然现在也可以用kotlin开发,google也在推自己的dart语言。但是java的地位还是无法撼动的。

遗憾的是,听说最近android不怎么好找工作。当然,我只是听说,毕竟我不是专业的。

嵌入式

n年前,还是直板手机的年代。我记得有的手机支持java。。可以安装后缀为.jar的软件。当时觉得这种手机牛比的不得了。因为我在用这种手机之前一直在用辣鸡国产,那种叫斯凯平台的?忘了名字了,反正用键盘输入*#220807#,就可以召唤神龙的那种手机。。。。

扯远了,当时那种支持java的手机,就是使用的一种叫做javame的技术。javame就是一种轻量级的java,可以在移动设备(手机,汽车车载设备,机顶盒什么的)运行java程序。

不过现在javame差不多也死绝了吧,不清楚。。反正我没接触过,哈哈哈。

大数据

这是最后一个我推荐的方向。都说现在是数据时代。各种大数据技术层出不穷。目前处理大数据的技术有python,java,R等。虽然说java没有绝对的优势,但是也是一大霸主。不服?Hadoop就是用java实现的,还用多说什么么?

要学习什么内容

先声明一下。我接下来的建议,都是针对在校的大学生或者有充足的时间的转行的人的。对于那些想要快速转行,然后找到工作的可能不是很合适,因为我的建议或者说经验是需要很多时间的。

首先,不管你以后选择什么方向。基础永远都是最重要的!!!不要觉得自己看了一套视频,或者看完一本入门的书,能写个简单的代码就叫学会了。你还差的很远。工作好几年的人也不敢说对java基础了如指掌。所以,巩固基础不分时间段,你的职业生涯的任何时刻,都应该巩固基础。并且,基础不只是java的知识,还有一些基本的算法,数据结构,计算机网络,计算机组成原理等。

所以,第一要学的,是基础!(要不断的学)

其次,现在互联网每天都在不断前进。无论是网站还是app都需要有服务端才能运行的起来(单机的和静态网站还是不多的)。所以,不管你以后会不会从事java后台的工作,我觉得了解一下还是很有好处的。而且,一般的大学应该也会开javaweb这门课吧。

所以,我觉得每个学java的人,在时间充足的情况下,可以去学习javaweb。当然,如果你本来就是想往这个方向发展的,那就更不用说了。

最后,我推荐大家了解一下大数据。为什么呢?现在是一个大数据的时代,无论你是否要往这个方向发展,多了解一些总是有好处的。分布式文件系统,分布式数据库,负载均衡等前沿技术多接触接触总是好的。

所以,我也建议大家可以多了解一些大数据方面的知识。

当然,以上是我个人的见解。每个人都应该有各自的人生规划,你也可以按照自己的规划来。

怎么学习

其实,我主要是想说这一部分。每个人都有自己的学习方式,我来分享一下我的。

大一

这个时候,刚刚接触计算机,你可能什么都不懂,听课也是一脸懵逼,什么for循环,if语句,恶心的不得了。这个时候你要做的不是抱怨,而是去努力的寻找乐趣。因为你已经入了这个坑了,除非你转专业,否则你是摆脱不了它的。

怎么寻找乐趣呢?我觉得,编程最大的魅力,就是当你成功的时候的那种发自内心的成就感。不知道大家还记不记得第一次写helloworld的时候,各种出错—分号写成中文的了,大括号少了一个—但是最后终于成功的输出了结果的那种喜悦。

对于一个刚刚接触编程的人,我觉得,写游戏是最容易获得成就感的。这里给大家推荐一个之乎专栏— 做游戏,学编程(C语言)。专栏的作者,通过让一些学生做游戏来学习c语言。我觉得这个一个很好的学习方式,即有挑战性,又可以培养出成就感。

大学的入门语言差不多都是c或者c++吧。。如果不是,你也可以参考一下专栏里的小游戏,然后用你自己的语言试着写一下。

但是,我要重点说的是。写游戏其实是一件很有挑战性的事。有的人也许会在一开始就陷入困境,不知道如何继续下去。这个时候,如果你能坚持下去,多问问老师,学长,百度,google,把问题解决,那你以后肯定会很优秀。如果你放弃了,不要灰心,因为并不是所有的人都适合通过游戏来培养兴趣,你也可以通过做一些acm的题来提高自己。每个学校应该都有相关的网站吧。如果没有的话,可以去浙大的看看。(来我们学校的也行。。。http://cpp.zjut.edu.cn 或者 http://acm.zjut.edu.cn) 。做一些自己能力范围之内的题,也可以提高自己的兴趣。

当然,这些只是针对一部分同学,毕竟很多人其实对代码无感。。根本耐不下性子去写代码。对于这部分同学,我建议去学习html 和 css。因为它们入门超级简单,是用来写网页的。没有c语音那么复杂的逻辑,几个标签,几个css就可以设计出一个精美的网页,我想这也会很有成就感吧。

大一的这一年,是打基础,培养兴趣的一年。不需要你有多么大的成就,写出多么厉害的程序。只要你能够培养出兴趣,并且愿意在编程这条路上走下去,那么你的任务就算完成了。

所以,这一年,你要做的,就是培养兴趣,让自己爱上编程(最基本的要求)。

大二

假设你现在已经喜欢上编程了。但是一般大一只会学一门语言(默认c/c++,不要问我为什么,因为我就是这么学的。。)。所以你可能只是写了几个小游戏,写了个小管理系统或者刷了一些题。你不满足于现状,你想做一些更有意思,更好的东西。同时,这个时候,学校应该也开了java课了。(如果没开,你就自学。毕竟这篇文章讲的是java,主角再不登场就没有多少露脸的机会了)。

写在前面:大二要做的,是拓宽你的广度!!!广度!!

首先,你要好好学java。可能学校的进度是一个学期。但是我建议大家用一个月的时间学完。因为有了c和c++的基础,java其实很容易就学会了(入门级学会)。更好的情况是,你在大一结束的那个暑假,就抽时间先搞定java基础。这样当开学的时候,别人还没接触java,而你可以骄傲的和别人说,你都学完了。成就感满满的。

那么,怎么学java基础呢?我的建议是视频为主,入门书为辅,自己跟着写代码。

看书其实是一件很枯燥的事情,如果你初学java,只是看书的话可能配置一个环境变量就要搞好久,这会打击你的自信心。不要小看配置环境变量这个过程。我记得当时两天配不好环境变量最后让我帮忙的人可不少。但是视频就好多了,因为老师会亲自演示给你看,你会少走很多弯路,并且也比书有趣多了。

书为辅,是因为老师不可能记得所有的知识,总会有疏漏的地方或者讲得不太好的地方,这个时候 书就可以派上用场了。看完一节课的视频,然后关掉视频,自己写一遍相应的代码,出错了自己先试试能不能解决,是在不能的话,再看一遍视频,直到跑通。然后去看看书里对这部分知识的讲解,加深印象,查漏补缺。

这里的重点是,一定要自己写一遍代码。你看的时候觉得自己会了,可是大部分时间,你一写全是错误。所以一定要自己写。并且,在你初学的时候,不要使用编译器(eclipse idea NetBeans等),就使用notepad++这种类型的编辑器就可以。

这套流程最大的缺点就是耗时比较久,但是效果是很好的。java里有很多都和c/c++一样的,比如一些语句什么的,如果你已经掌握的很好了,直接忽略掉这些也是可以的,这就看你自己的情况了。

推荐一些学习资料(后面会给出)。

  • 视频: 毕向东,马士兵,韩顺平的视频都挺好的。口碑也都不错,不信可以自己去百度一下。我看的毕向东的,讲的挺有趣的。但是每个人口味不一样,你可以多下载几套,都听一下,然后选一套自己喜欢的。 
     
  • 书籍:入门推荐《head first java 》。head first 是一个系列,这系列书最大的特点是图文并茂和案例驱动,让读书的过程不那么的枯燥。《疯狂java讲义》据说也挺不错的,但是我没有看过,不做评价。 
     
  • 编辑器推荐:notepad++ 免费,小巧。初学者够用了,直接百度下载就好。sublime , vs code, atom 也可以,挑一个自己喜欢的就好。

一个月,干掉java基础!这是你大二首先要做的事。

前面说过,这一年,你要做的是拓宽自己的广度。什么意思呢?就是说,你要尽可能的去多接触一些技术,多学一些知识,因为你以后很难再找到这么多你可以自由支配的时间了。

java基础搞定。接下来,学习Java Web。

你要知道,优秀的人永远都走在大部队的前面。不要学校安排什么你就学什么,学校不安排你就不学。事实上有的老师讲的不是很好,大学里真正有用的知识,都是自己学的。所以,接下来要做的是自学java web。

依旧是视频+书+写代码。

java web更重要的是实践。我当时学的时候的书就是学校的教材。。我是基本没看书的。就跟着视频一步一步来,有问题就google。在大二上学期结束的时候,完成javaweb的学习。

因为需要和前台做一些交互,所以免不了要学一点前端的知识(html + css + js)。在正式学习web之前,先学点前端知识(资料都准备好了,自取不谢)。然后按部就班的学习javaweb。

这个过程中,遇到的问题千奇百怪,我记得我当时一个小问题google了一天都没能解决,最后才知道是jar包版本的问题。。所以,遇到问题是很正常的,遇到很难解决的问题也是很正常的,只要你肯问,肯查总能解决。

好了,你现在已经有了自己写一个小网站的能力了(丑点无所谓)。接下来就厉害了。去参加比赛!进实验室!做项目!没有什么比做一个项目更能提高水平了。

所以,你大二下的任务就是尽可能的去做项目,依次来巩固你学的技术。可以参加一些比赛,或者加入实验室,或者寻求老师的帮助。总之,你要做项目!

除此之外,你需要继续扩展你的视野。前端(不是你之前学的简单的html!),python,android,iOS,cocos。。。只要是你感兴趣的,就去接触一下,不需要你学的多厉害,也不需要你完全掌握。只是为了让你的视野更加开阔,知道原来还有这么多技术,原来还可以这样。

大二的一年,你需要学会java和javaweb,并且至少做一个拿得出手的项目。同时,尽可能的提高你的视野。当你觉得你一无所知,你还是个菜鸟,这一年的任务就完成了。

大三

这是很关键的一年,因为这一年你将决定是否考研。考研的我就不管了。。接下来是针对准备一毕业就工作的同学的。

写在前面:这一年,你要做的,是深度!

通过大二一年的努力,你的广度已经足够了。并且在这个过程中,你应该也找到了自己最感兴趣的方向,如果没有,那就继续研究java吧,总比你不知道学什么好。无论怎样,这一年,你的重心都应该放在一条路上。以java为例。

首先,巩固基础!

这是最重要的。怎么做呢?进阶书籍+看博客+写总结+写开源项目。

这个阶段的视频不是很多,也没有必要了。直接看书+看博客+开源项目,最后再总结就够了。我举个例子,比如,我现在要学设计模式,我买一本《head first 设计模式》然后一个模式一个模式的学,每学一个模式,看一遍书,然后google一下这个模式,看几篇高质量博客,结合书和博客自己写一个总结,甚至可以自己写一个博客专栏,让后来者也能享受到你的学习成果。同时,可以好好整理一下自己学习过程中的代码,放到github上,最好可以试着封装一下这个模式,让其他人更方便的使用这个模式。当你收获一个又一个的star时,你会非常有成就感的。

上面是学习的大致方式。学完了,怎么检查自己有没有学好呢?给大家提供一个网站牛客网,你打开就知道怎么用了。

基础都包括什么呢?

  • 面向对象的思想。
  • java常用类。
  • 集合框架。
  • io
  • nio
  • 多线程并发
  • 设计模式
  • 算法
  • jvm
  • 计算机网络
  • spring
  • orm框架
  • 。。。

每个知识点,不只是要会用,更要能理解一下底层的原理,有必要的话可以看看jdk源码或者框架源码。

推荐一波资料。

  • 《java编程思想》《java核心技术》《head first 设计模式》《设计模式之禅》《java并发编程实战》《重构 改善既有的代码设计》《算法导论》

你要知道,bat等大厂每年会有两次招聘,一次春招,在每年3-5月,一次秋招8-10月。春招是招实习生的,秋招是招正式员工。所以,如果你想进这些公司,就要提前做好准备。至少,上面的那些基础你是必须得都掌握的。

大三这一年,要让你的深度足够,有能力的可以继续延伸自己的广度。这个阶段,最忌讳的是朝三暮四。早上看python,下午发现go很有趣,看了一下午go,晚上听说R很厉害,又去研究R了。千万不要这样!不要成为各个领域的杂牌军,你现在要做的,是在一个方向有一些建树。

大四

实习。。。

实习的话我能给的建议不多,虽然我的实习经历还蛮多的。但是毕竟不是混迹职场多年的人,就不乱说了。

找工作,待遇,环境挺重要的。但是我觉得,这个公司的技术栈,行业背景也是很重要的。我实习的三家公司是三个不同的行业,所以我知道,不同的行业差距还是很大的。有的公司招聘的时候会要求你在这个行业有过经验啥的。所以,行业背景还是有必要注意一下的。同时,为了自己为了的前途,一定要问清楚公司的技术栈!

当然:作为一个有抱负的人,毕业设计一定要向着优秀发展!并且依旧要不断提高自己的水平。这个时候,学什么可能得根据公司的需求来了,但是,永远不要停止学习!

学习资料

这里放一些学习资料:https://github.com/CleverFan/awesome-java-datum 。简单的总结了一下,还有很多没放上去。最近公司的事情和挑战杯的比赛搞得我有点头大。。忙完这阵会都放上去的。大家可以先收藏着。。

总结

大一:培养兴趣 
大二:横向发展,广度优先 
大三:纵向发展,深度优先 
大四:选好方向,不断提高自己

事实上,大二结束以后就可以试着去找工作了(我就是),这个阶段,不要在意工资什么的,只要有机会你就去,一定会有收获的。如果你不知道学什么了,有一个很鸡贼的方法,就是可以多去参加一些面试,多投简历,面试中一定会有你不会的问题,然后你就知道学什么了吧?(面试过了,可以不去的嘛。。。)

在你的学习过程中,你会遇到很多的bug,我建议大家把每个解决bug的过程都记录下来。因为同一个问题,你可能会遇到好几次,整理bug,不仅仅是为了下次遇到能快速解决问题,而且可以养成一种归纳整理的习惯。可以写成博客,也可以以笔记的形式记录,比如有道云笔记等,gitbook也是一个好东西~

我现在是一个大三的学生,经验和经历都有限。所以我也不确定我的学习方式,以及我的看法是不是正确的。但是这些都是我现在正在用的方式。所以我把它分享出来。如果有哪里说得不好或者不对,请路过的大神指点一下。感激不尽。

如果你还需要其他的资料,或者想和我一起学习。欢迎加群281440885。加群请备注,来自博客。刚刚建的,里面只有几个人,都是学生~

很晚了。。先写这些。有时间再补充,欢迎大家批评指正。


打赏
最近浏览
Ma2020  LV6 2021年3月10日
240598911  LV10 2019年12月19日
简单梦啊  LV3 2019年3月11日
苗毅6666  LV32 2019年3月8日
wudilaosiji 2018年12月30日
暂无贡献等级
小明程序员  LV9 2018年11月13日
lebu9527  LV11 2018年9月9日
CGmatt  LV9 2018年6月5日
pengboss  LV12 2018年2月2日
DawnBells  LV5 2017年12月12日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友