乐趣区

在校学习如何系统的学习Java乐字节

欢迎大家来到乐字节 Java 学习基地~

作者:乐字节

在校生如何面向面试地学习 Java

图片来源:上海尚学堂

最近我在博客园里,看到不少在校的同学在学 java,而且,在我最近举办的一次直播活动中,也有不少在校生同学来提问,java 该怎么学。

对于那些已经工作的同学,哪怕才工作不久,毕竟也能从项目实践里总结和探索 java 的学习途径和相关方法。但在校生同学由于没机会接触实际项目,在学习内容、进阶途径和学成标准这些方面都是两眼一抹黑,而大学里的内容可能偏重于理论,讲述的技术往往也和软件公司里常用的技术不匹配。

这就导致了很多上心的在校生,虽然很努力,但到毕业时,才发现自己起早贪黑学成的技能并不能帮他们找到工作。在本文里,就将结合我面试实习生和毕业生的标准,专门给在校生这个群体一些学习 Java 方面的建议。

1、明确目标,先说下公司面试应届生的标准

我最近可能都在大公司,到毕业季,会到一些学校去校招,校招的标准描述起来很简单:Java 方面能干活,或者能经短期帮带后能干活,具体标准如下。

1、Web 框架方面,需要以全栈的形式,了解 SSM,或 Spring Boot 或 Spring Cloud 从前端到后端的基本语法,至少能在项目经理短期帮助下,能照着别人的例子写代码。应届生候选人只要能讲清楚相关框架的语法点和流程即可,最多再附带说明下 mybatis 等组件的用法,至于 redis,dubbo,根本没要求。

2、数据库方面,能会基本的增删改查即可,外带一些基本概念,比如事务怎么处理,JDBC 里批处理怎么处理。

3、Java 语法(也就是核心方面),其实如果能讲清楚 SSM 等 Web 框架技能,这块只要刷题就能过,比如就问些 ArrayList 和 LinkedList 的差别,以及多线程等的概念。

4、人看上去听话,想法少,学习能力强,责任心强,不是刺头,这块其实大多数人都可以达标。

以上不要求有商业项目经验,当然如果有,绝对是加分项,而且这还是大公司的面试应届生的标准。至于一些小公司,或者是一些外包公司,有时候能招到人就阿弥陀佛了(至于有些能力比较强的一本的应届生愿不愿意去还难说)。有些在招收应届生的时候,不少小公司甚至在“项目经验”方面没要求,哪怕没学习项目经验也不要紧,只会问些网上比较大路的面试题,能说上来即可。

2、面试中大多数应届生的实际表现

从面试官角度来看,招收应届生的标准其实是很低的,对应的,在招初级开发时,多少都需要有商业项目经验。从这个角度来看,应届生最好在校期间就找到工作,毕业后两三个月找不到工作问题还不怎么大,但如果半年后再找不到工作,那么到时候被面试的标准就高于“应届生”的标准了。

这里我无意贬低应届生的水平,毕竟我们都是从这个阶段过来的,但从面试情况来看,至少有将近一半的应届生达不到标准, 下面列些具体的表现。
1、没有框架开发的经验,这里最低要求是能自行搭建个 SSM 项目,但不少同学根本没有。
2、数据库方面,就知道理论上的增删改查,甚至不会在 MySQL, Oracle 和 SQL Server 平台上运行过 SQL 语句。
3、Java 核心方面,掌握了一大堆项目里一定不会用的,比如 Swing 之类的界面编程技术,但该掌握的多线程集合等,一些常用的概念也不清楚。

论动手能力,有些同学甚至没有在 Eclipse 等 IDE 上运行通 Java 代码,或者出了基本的语法错误不知道如何自行解决,至于没有 debug 调试经验的,就更加见怪不怪了,而在代码里需要加必要的 try…catch 异常处理语句,这就更加凤毛麟角了。

在一些一本大学里,理论和实际操作能力较差的同学虽然不多,但也有,就更别提其它大学和大专了。我也和一些大学老师打过交道,也看过一些大学里用的 Java 和数据库等编程方面的教材,再结合诸多应届生在面试时的表现,我的感受是,或许大学阶段更会培养学生的理论素养,但大学生朋友在读大学阶段,一定要提升实际的编程能力,包含但不限于(SSM)框架的编程能力,数据库实际操作能力和 Java 核心部分代码的开发和调试能力。

3、哪些大学里学到的知识点面试大概率不问(根本不用太费精力看的技术有哪些)

前几天我看到篇大学生朋友写的文章,匹马行天下之思维决定高度篇——大学再努力,培训机构做兄弟,或许很多大学生朋友也知道上进,平时也在不断看各种资料,但可能苦于方法不当,可能有些大学老师也没真在公司里干过,也没法给出合适的学习建议,所以导致最终毕业找工作时,能力没达到基本的期望要求。

也就是说,大学教育和公司面试需求之间存在差距,这就给一些培训机构带来了商机。但培训机构收的钱也不便宜,而培训班也不是一定能保证学生能找到工作,关键要靠自己。从这里开始,就将给出有实际操作性的学习建议。

我最近接触到不少大学生朋友,发现他们努力正在学的知识,面试时未必会问,也就是说,这些点白学了。之前已经提到了面试的标准,这里就将结合具体的知识点,列出面试时需要掌握的最低技能标准,除此之外, 大概率不会问的。

1、Java 核心方面,集合,多线程,异常处理,IO,JDBC,面向对象技能,大概率会问到,其它的没提到的,比如图形化界面,NIO,Socket 网络编程,甚至 Applet 之类的,不会问到。

2、数据库方面,会写增删改查的 SQL 语句,知道存储过程之类的概念,会通过索引优化查询条件,会建表,会些诸如子查询,group by,having,表关联查询等基本 SQL 技能,这里请注意,至少得用过一种商业化数据库。

3、框架方面,需要有 Spring+Spring MVC+mybatis 框架的实际操作能力(不是商业项目开发能力),至于有 Spring Boot 或 Spring Cloud,那更好了。

4、综合技能方面,能知道基本的数据结构知识(线性表外带排序外带一些树的技能),基本的操作系统知识(一般仅限于线程进程概念),基本网络通讯知识(一般仅限于网络通讯模型和 tcp udp 协议),但这仅仅是“需要知道”而已。

大家其实也可以通过看各种职位描述和招聘需求,看下哪些技能实际上是不会问的,对于这些知识,就不用学,从而把精力用到学实际 Java 相关技能上。

这里需要说明,在大学阶段学的很多知识,不能说没用。比如网络通讯里的 tcp 底层通讯细节,这些技能或者要等到工作 5 年后升级到高级开发或架构师的时候才会用到,而且以高级开发视角观察需要掌握的通讯协议细节知识,绝对要比大学阶段要复杂。

换句话说,很多技能,在大学阶段也就“需要了解有这事”,以在大学阶段的经历,再多用时间学,估计也无法达到“实际项目的需求”,而且等到有实际项目经验时,再学这类技能也就是一两周的事情。两厢一对比,结论就很明确了:在校阶段应该更多积累实际开发能力,因为更得靠这个找工作。

4、用一个月的时间了解 Java 核心部分的内容

通过上文,大家大致可以了解到毕业时找工作的目标,如果再不了解,可以实际看下招聘要求,甚至直接多去参加招聘会和面试,总之优先考察实际的开发能力,具体在 Java 核心部分,该如何高效学习呢?

1、在电脑上装 jdk,eclipse,别用 editplus 之类的工具,最好再用 eclipse 的自动编译功能。这方面,其实是锻炼自己的动手搭建环境的能力,工作后,开发是一方面,搭建环境的能力同样重要。

2、刚开始,一定得去找两三本 Java 入门书,先通过运行现有代码,理解代码的含义。别光看书不运行,开始阶段,也多运行别人的代码,别自己敲代码。这里建议直接找书,因为相比一些视频教材,毕竟书上的知识很系统,而且能正式出版的书一般没代码问题,能直接运行。不建议自己敲代码,是因为自己敲代码时,多少会遇到问题,遇到问题后延误学习进度是小,因为一直得不到解决从而影响学习信心,甚至终止学习了,事情就大了。

3、如果找到两三本 Java 入门书,一般其中涵盖的知识系统大多很相似,大家可以先运行一遍所有代码,这样就能大致掌握代码结构和基本知识点,而且由于书上代码一般问题不大,而且质量也不会低,至少不会有太大的阻碍性问题。

4、当运行好以后,着重观察集合,面向对象,多线程,IO 处理,JDBC,异常处理相关章节,这个阶段,是以掌握 API 用法为主,在这基本上再看下诸如接口,抽象类,异常处理流程,垃圾回收之类的高级知识点。

在上述基础上,如果可以通过资料的帮助,用 Java 实现堆栈,链表,队列,散列表,树等的数据结构,同时操练各种排序算法,这对找工作也有些帮助。

上海尚学堂官网这个没什么好说的,有从事多年的 Java 开发的高级教师及架构师为大家带来的最新版 2020 年针对企业,新研发出来的 python,Java,大数据,人工智能等教学视频及项目源码及文档!!

5、用半个月的时间,以 MySQL 为例,了解数据库的大致操作

在数据库方面,最好也去找本书,同时在 MYSQL 上实践。为什么选 MYSQL?因为这比较轻,相比 Oracle 而言,好安装,当然如果有条件装 SQL Server 之类的,那就更好了。
1、在 MySQL 数据库上,实践各种增删改查的 SQL 语句,实践建表,建索引能技巧,同时实践一下诸如子查询,with as 等等复杂的 SQL 语句。
2、用 JDBC 连同 MYSQL,在 Java 代码里做各种增删改查的操作。
3、在此基础上,了解诸如索引,范式和锁等概念,这时候虽然认识也会很肤浅,但至少不会一头雾水了。

这样,在数据库方面,好歹有实际操作经验了,这为之后的项目实践,能打下很好的基础。

6、用一个月的时间,了解基于 Spring 的 web 框架

面试时更看重的是框架经验,这块学习的建议如下。
1、先通过运行代码,了解 Spring 里 IOC, AOP,这时应该注意各种配置。
2、熟悉 Spring 的基本概念后,可以尝试跑一个 SSM 的小例子,这个例子可以非常简答,就一个页面也行,但要包含 Spring MVC 和 Mybatis 诸多要素,这样大家好歹能知道框架的构成,在这个基础上,可以继续扩展,加些必要的业务,从而进一步了解这个框架。
在这个阶段,还是最好看书上的例子,因为书上的例子一定能通,而且还会带部署和运行的步骤,还是不建议自己敲代码,因为 SSM 框架相对复杂,在这个阶段如果自己敲,很有可能会因为问题太多而放弃。
3、在自己机器上跑通 SSM 框架的案例后,可以网上找个带业务的系统,比如图书管理系统等,从中看些前端和后端交互数据的流程,同时,结合业务看 Mybatis 里的 ORM 过程,以及 Spring 里的常用注解。

7、在学习过程中,可以避免的误区

Java 方面,本人按照上述步骤辅导过不少在校的同学,只要肯上心练习,效果不会太差,不过很多同学在实践过程中会走弯路,这里列些普遍存在的问题,请大家在操练的过程中尽量避免。
1、别钻牛角尖,先面再点。比如有同学对一个知识点不理解,或者一段代码运行有问题,就会在这个点上耗费很多时间,不解决就不继续。其实在这个过程中,首先需要全方位掌握 SSM 框架、Java 技术和数据库,个别点如果有问题,可以跳过,或者一个案例运行不通可以运行其它类似的,总之别在一个点上花费太多的时间。
2、再啰嗦一下,最好先照着书上代码运行,开始阶段的学习方法是“复制粘贴运行理解”,在自己已经有一定的基础后,再尝试自己写代码。
3、在操练 SSM 项目时,有些同学会照着视频上提到步骤做,如果有些视频步骤不对,这样就会有问题,所以还是建议照着书做。
4、工具要选对,刚开始就 eclipse,或者 Idea,别用 editplus 或命令行。

上述是方法上的误区,其实最大的问题出在态度上,上述学习过程持续时间不会短,快则两三个月,慢则半年,如果中途因为效果不明显而放弃,那就很可惜了。

8、有学习项目经验后,争取找些商业项目的实践机会

按照上述步骤,让自己拥有最基本的 SSM 以及其它 Java 和数据库相关技能后,要做的绝不是继续积累学习项目经验,而是尽可能去找实习的机会,以积累商业项目的经验。在找实习经验方面,大家可以参照如下的建议。
1、在我之前的博文里也提到,大三时,打听计算机学院里哪些老师和外面公司有合作,一般硕导都有这样的项目,然后直接去找老师,刚开始不要钱,只求经验,或许对各位在校生同学而言,这种方式是比较可行的,本人第一个商业项目经验也是由此得到的。
2、一般学校里都会安排实习,实习的过程中,一定要重视,这个是实打实的商业项目经验。
3、寒暑假,找软件公司,这可能会比较艰辛,因为在校阶段自己非常难找相关实习机会,但要去找。
4、这个大家根据自己的实际情况自己斟酌:如果报培训班,多少能积累些项目经验,但这仅仅是学习项目经验,不过在培训班里,可以找相关老师推荐实习的机会。
5、如果实在找不到实习的机会,那么尽可能通过各种渠道,去找商业项目经验的案例,我知道有些网站有,但不做广告。虽然靠这种方式积累的商业项目经验质量就打折扣了,但好歹聊胜于无,而且毕竟很多毕业生,连学习项目经验都没。

不少在校的同学发现,哪怕实际只干了三个月的商业项目经验,自己的技能也会很大程度提升,而且实际的商业项目经验,会让大家掌握书本上根本不会多提但项目里一定会用的技能,比如 JVM 内存调优或多线程并发。从这意义上来讲,只要有条件,大学生朋友应该挤破头去找商业项目的经验,而不是悠哉游哉地坐在机房里敲代码。只要你有商业项目的经验,哪怕就三个月,找工作时你就有代差优势。

9、毕业生准备简历的要点

按照上述步骤,大家在毕业时,多少会有些商业项目经验,再不济也能有学习项目经验,请记住,在招聘毕业生时,第一看项目经验,第二看项目里包含的技能,第三再问算法和理论问题,至于逻辑题和情商题,只供参考。

对此,毕业生在简历中,一定得突出做过的项目经验,优先挖掘商业项目经验,实在没有学习项目也行。如果没任何项目经验,那么找工作时会吃力很多。本文的重点是讲学习方法,准备简历的技能只是稍微提到。这块可以参考的之前写的博文,《 你的简历能帮你争取到面试机会吗 》。如果有时间的话,或许我会再专门针对毕业生朋友,写篇文章讲在 java 方面,如何准备简历和面试,以及如何找工作。

若想了解更多 Java 相关知识,那就关注乐字节吧,每天更新哦~

退出移动版