标题关于自学java的所有疑问
废话不多说,直接答疑。(以下作为一般人的情况,如果 君 是天才级别,那么此篇文章将不适合/捂脸)
1 文科生适合学编程吗?
这要看你的目的性了,如果你是为了学习编程获得一份工作,那么完全没有问题,任何人都能够学习编程。这个问题就像:我适合学习写作、或者适合学习画画吗?如果你是为了一份糊口的工作,那么都是没有问题的。(笔者大学是:思想政治教育专业)
如果你学习编程的目的是为了改变世界,就像你学些写作和画画是为了成为作家或者画家,那么你应该细细考虑一下了。(你需要承认一件事:这个世界上有些事情是少数人能够做到的。)
2 学习编程很难吗?
如果你打算学习编程,还请不要经常出现这个疑问,因为它会使得你学习的心态不太稳定,也不要试图从网上寻找一些所谓的“答案”。你只有两种决定:学还是不学。如果你决定学习,那么立即从现在开始,而不是去纠结它难还是不难。
3 我打算学习编程了,但是又怕学习之后找不到工作,我需不需要给自己留一条后路:考个教资或者会资?
人的精力是有限的,从这一点上来说,“留后路”的做法往往使得你胡子眉毛一把抓,最后一事无成。笔者由于是文科生,周围的人大多备战教资和研究生。在大学整个学习期间,内心也曾有过动摇:我要不要也考个教资,万一之后找不到工作……。
但是后来我没有,我开始无视我周围的人,不管他们在干什么,我始终学习自己的编程。(从这一点上来说,不仅仅是学习编程。人重要的是你要有自己的目标,不要盲目随从身边的大流,看到别人考研,自己也考研,别人考公务员,自己也去考,最后声明都没有优势,笔者大学的时候身边不少这样的例子,盲目随从是一件十分可怕的事情,打破这种随从的氛围,你需要坚定的信念)
4 应该从什么时候开始学习编程呢?
越早越好!笔者从大一后边年开始接触,算是比较早的。(如果可以,你从应该从幼儿园开始/奸笑)
5 应该学习什么语言呢?
笔者的经验来看,首选是java。我刚开始是学习的C语言,java面向对象的设计和更自动化的垃圾回收更容易让初学者坚持学习下去,而且当前java也是比较好找工作的一个语言。学习java之火再接触其他的语言比如Python、go都是比较简单的。
6 学习是看书呢还是看视频?
初学者一定是看视频学习的,笔者在刚开始是看着C语言的书来学习的,后来通过看视频的方式学习java,感觉后者更加适合初学者。(当然了,这不是说你一直适合看视频学习,当学习到一定程度之后,你开始关注更底层的东西,这个时候看书往往比看视频效率更好,阶段不一样的。)
7 怎么选择资料呢?
笔者入门一直是看的传**客和*马系列,笔者觉得非常不错,建议小伙伴选择。如果到了后期需要进一步提升自己的的综合实力,建议慕课网上的部分系列,品质还是很高的(绝对不是广告,怎么会有人来找这样的无名小辈做广告呢/嘻嘻)。
8 有必要学习底层细节或者源码吗?
这个还是要看阶段的,初学者不建议。初学者首先需要学会使用,然后数量地使用。当你的学习到了一定阶段,你会自发地去关注一些底层设计,这个时候,你是带着目的性去学习底层的,这样的效果也更好。(编程学习不同一般科学,它不是自底向上的,而是从上往底的。我们首先学会现成的工具的使用,这个时候比较直观,能够引起我们学习的兴趣,而不至于我们从一开始就厌烦于纯粹的理论性泥潭,最后放弃学习。)
9 java的学习路线是什么?
这个网上不少前辈已经给出解答,这里大概介绍一下笔者的学习过程:
- java语法基础
- javaweb
- 前端基础(js/css)
- MySQL
- SSM框架
- Linux
- 前端框架(vue等)
- 微服务框架(dubbo、springboot 、cloud、alibaba)
- 容器化 docker k8s
- 分布式的各种中间件(zookeeper、redis、MQ、ES……)
- 分布式、服务化架构的理念
- 技术底层原理
10 初学者面试必备
基本类型、java的三大特性、java容器相关、熟练手写各种MySQL的查询语句、熟练整合搭建SSM完成基本的CRUD、Spring的两大特性(IOC、AOP)。
11 简历避坑
忌讳“精通”二字,我从2017 后半年开始学习java,算是彻底理解IO模型也是最近半年的事情,因此,简历尽量实事求是,不要过度包装。不要让面试官看到你的简历:“这小子如此猖狂!”
12 学习是一个反复的事情
不要奢求所有的东西一次学会。尤其是对于我们初学者来说,很多东西不是一次能学会和理解的,更多时候我们需要反复推敲(java基础笔者学了三遍以上才大概理解)。尤其是你刚接触框架的时候,初学者很容易被各种数据的传递弄得晕头转向,这个时候不要担心,你只需要重复学习(现在的springboot的出现已经大大改善SSM学习成本,以前的XML配置才是吐血)。
13 学习是一个长久的事情
学习需要一直坚持,即使你找到了工作,也不要停止学习,经常关注新技术的动态,尝试去使用新的技术,而不是故步自封(java8的stream和lambda表达式真的很好用,然而后很多人依然在排斥,他们宁愿写一大坨的代码也不愿意去学习新的语法)。
不要执迷层出不穷的技术本身,逐渐地,我们应该关注各种技术底层的通用原理,达到一种触类旁通的效果。原理比技术更重要。
最后,祝君学习一路一帆风顺!