如何自学 Java 开发?

985本科,还有4个月毕业。 本科期间比较迷茫、任性,方向搞不清走了点不得不走的「弯路」,现在终于逐渐理清头绪,在为毕业后的求职做准备。 自己打算是搞移动开发(虽然听朋友说这方面现在油水不是很多了,推荐我学好 C++ 搞游戏开发,但是楼主真的不喜欢搞那种大型游戏网游什么的,因为我自己曾经就身陷其害啊!我比较喜欢和朋友聚一起玩玩玩桌游,所以将来能设计款好的桌游我会很高兴的哦*^__^* )方向,我综合了下决定往安卓…
关注者
3758
被浏览
197592

52 个回答

非常感谢知友们的60个赞。写这个回复已经有一个月了,期间学习计划和方式有了很多的变动,最近事比较杂,心比较乱,本来是不打算更新回复的。但是还真怕一些想入门学习编程的朋友看我回复之后会被误导,还有就是评论区一些留言的原因所以就更新一下吧。

请记住一句话:别人的终归只是建议,最后的决策还得自己下。

读书第一遍:好像是这样。第二遍:原来是这样。第三遍:没错,就是这样。对于一本新书来说,读完这本书很容易,但是记住里面10%的内容却是很难。

没有任何一个技术不是经历了大牛们的奉献和时间的洗礼。所以至此时为止之前所说的任何技术,甚至一直学的java语法也都不敢说“精通”二字。

每个人的学习路线是不一样的,都是一个探索的过程。出错走歪路在所难免。这里只是说一下自己从一无所知到现在有些基础之间的经历经历而已,没必要非要,也不可能硬搬到另一个人身上。至于说我明显不够踏实。这个还是比较认同的。但是有些原因在里面,之前学了jdk的并发类,一直对它的实现原理感到困惑,如果追的话就会追到本地方法。所以就想了解一下操作系统是怎么实现的Lecture Notes and Readings,之后还发了这个问题:如何在整体上快速了解 Linux 操作系统? - Java 悉心指导有之,一笑而过有之,出言讽刺有之。但是取精华弃糟粕,可以总结为大牛们还是很不建议现在学那个的,所以就暂时阁下了。

至于Redis的话huangz1990 (黄健宏) · GitHub 这里有全部的中文注解结合《Redis设计与实现》应该是可以一看的吧。Redis是非常重要的,不管是存储数据还是充当各种情况的key-value缓存都是相当棒的,而且暂时片面的认为Memcached可以大致上看成是Redis的一个子集。至于它们涉及到的单线程或者多线程,网络连接库,内存压缩之类的不同,我只想说自己目前只有学的份没有评价的资格。我只是暂时是这么认为的,也许明天我学了一些东西,后天就不这么认为了。

还有就是:“至于二本去bat大把吧,找个内推就能过简历了” 这个还真不知道,下面是自己简历的一点内容,和这份简历在拉钩上投出去的效果,仅供参考。



不知道会不会有人认为自己是在知乎上卖萌求大神点赞获取就业机会的。想说的是现在已经得到了一家挺出名的视频公司许诺的offer,只要学校现在让出去实习的话,我是可以出去的。最近事比较多,脑子也乱。待安定下来之后一定会好好反思。总结一下自己之前的思路,和以后怎么发展。

-----------------------------------------------------原回答如下-------------------------------------------------
如果你一点基础没有的话可以试着走走下面的javaweb路子:
1>毕向东的java视频看两遍
2>javaweb,struts2,spring,spingmvc,hibernate,Mybatis学完试着用版本控制软件和UML
3>毕向东的视频看一遍
4>《thinking in java》
5>《深入理解java虚拟机》
6>《how tomcat works》
7>《struts2技术内幕》
8>《sping技术内幕》
9>将web基础与这些框架源码相结合整理思路,翻阅tomcat,sping,struts等框架源码理解设计思路
10>并发编程网各种好的文章,如果可能自己试着实现
11>自己写个mvc出来
12>《数据结构与算法分析java描述》
13>《高性能MySQL》前几章
14>《MySQL技术内幕Innodb存储引擎》
13>《鸟哥的Linux私房菜》
14>《计算机网络自顶向下》
15>《深入分析javaweb技术内幕》

并没有写《算法导论》《深入理解Linux内核》等经典的大神级别的书籍,可见自己还是很菜的,但是一直在向那方面努力。咱们还是在一条起跑线的,就是看你之后怎么选了。这条javaweb路线亲测是可用的。985高校,占很大优势,基本上走完第二步就会有很多公司要你了,然后继续走完下面的。不像我一个普通二本,今年春招投了N个简历没一个回的。这样也好,反正是大三也不是太急,有时间再充半年电。现在在学c++ primer plus,试着debug Redis源码,还在看《Linux内核设计与实现》,跟着mit课程学习写操作系统。计划学习王爽老师的《汇编语言(第3版) 》。当你真的入门之后自己就知道学什么了。其实吧,我感觉基础真不是什么问题,最主要还是自己是不是真的想学。很多人学完ssh就去公司实习做项目去了,没事了看个电影旅个游之类的。几年之后几乎都转行了。不想一直做码农真的不是一句话能表达清楚的,你得拿行动来诠释。
先来回答问题

1、我现在学 Java 应该注意些什么「不限于语言语法」的基础呢?为了近期能更好的求职,我还应该学习哪些知识看哪些书呢?

因为也是面试官,所以尝试给一些建议。

首先 还是要重视基础,越是大公司,越注重基础考察,因为实际上他们并不需要你来了就能干很多活,他们需要的是你的学习能力,是否聪颖,以及未来的潜力
基础比如:操作系统、网络、算法数据结构、离散数学、数据库原理与实践,这些看起来枯燥而无味的基础科学,是我目前感到知识最为匮乏,但却最为急需的部分,要了解它们是必须付出非常多的时间才有可能理解通透些。而这些基础的扎实程度,就直接决定了你的高度。

而在中小型公司,有可能更需要的是你来了就能干活,这样的话,学习一些ssh html css android的技能会有助于你快速找到工作。


2、我知道学好学精任何东西都需要刻苦努力的,我不甘心一直做底层的「码农」!那么对于将来的 Java/Android 长期发展来看我还应该在工作后学习储备哪些知识、技能呢?数据结构算法和OS、编译原理这些基础还需要看懂还是熟悉、精通?

人的精力是有限的,然而知识是无限多的。 需要不断地投入时间来持续学习。

至于要学什么? 这取决于你未来想从事的方向。而如果你希望获得未来什么方向更靠谱? 这个问题我其实无法回答你,每个行业都能出状元。
从我对人的理解来说,人最重要的能力,就是把一件社会有需要别人做不到的事做成的能力,这里面体现了两个关键的概念: 1) 客户需要 2) 稀缺性 。 所以相信你也就能立刻明白我为什么无法对未来作出预测咯,极端情况下,如果所有的学生都听了我的建议,选择了一个方向,那么这个方向必然的就不会很稀缺。

从我自己的Java之路来看,最感谢还是阿里巴巴能够给我们这些技术人员创造出这样有挑战的业务场景和业务需要,无论是淘宝,天猫,阿里云还是菜鸟,都有无数的技术难题等着我们去解决,而解决这类问题,可以影响到很多人。也感谢有这样一群人能够为了这个目标一起努力到现在。

能够跟这些大牛们一起工作,耳濡目染,不断提高,是我的工作生涯中最为宝贵的一笔财富。

为什么?