JAVA应届毕业生应该具备哪些技术?

目录

1. 工作需要的技术栈

工作需要的技术栈往往和特定语言以及配套的周边工具相关。

对 Java 技术栈来说,又可以分为以下几个方面:

1.1 基本语法

基本语法在面试里不是说会用 for 循环、if else 语句之类去写代码就行,而是利用基本语法去编写更合理、更规范、更可读的代码。

比如,是不是能让变量处于很合适的作用域?String、StringBuffer、StringBuilder 适合的应用场景是不是非常熟悉了?

如果对于 Java 的基础还很薄弱,推荐去看《Effective Java》,以便真的能够写出来好代码。

另外,为了能更加规范的写出高质量工程代码,推荐研究下阿里的《Java开发手册》。

1.2 常用数据结构

Java 中一些常用数据结构一定要好好掌握。最常用的就是以下几种:

  • LinkedList
  • ArrayList
  • Stack
  • ArrayBlockingQueue
  • LinkedBlockingQueue
  • HashMap
  • LinkedHashMap
  • TreeMap
  • ConcurrentHashMap
  • HashSet
  • TreeSet

以上列举出来的这些数据结构,不仅要熟练使用它们,更需要理解它们的原理。

知道了原理,才能证明你能灵活且正确的使用这些数据结构。所以,面试中经常会问这些数据结构的原理。

如果对这些结构的原理还不熟悉,这里推荐一本很老但是依然很有用的书《Java Generics and Collections》,它详细介绍了 Java 中各个集合的实现。

但是这本书没有中文版,如果英文书读的很痛苦,大家可以去网上搜索一些好的文章,也能达到相同的效果。

1.3 异步与多线程

现在只要编写高性能的代码,就离不开异步;只要在多核 CPU 下工作,就离不开多线程去平行执行任务。所以,异步和多线程是一位后端工程师必须掌握的核心技能。

而要达到找工作的水平,我认为至少满足如下几个条件:

  • 能准确的理解进程和线程的概念
  • 至少弄懂什么叫 race condition 和死锁之类的概念
  • 需要理解 JVM 的内存模型
  • 了解常见的多线程编程模式

对于异步和多线程,我也不用多说了,肯定是首先推荐去读懂《Java并发编程实战》,然后还有一本《图解Java多线程设计模式》。这两本书读透了,面试异步和多线程,基本你也没什么问题了。

1.4 IO 操作

这里说的 IO 操作,主要是利用 Java 去读写文件。

Java 的 IO 都在http://java.io包中,大概有 40 个流类。其实不用每一个都掌握,最基本的要求就是:

  • 理解 IO 流的概念
  • O 里哪些是字节流哪些是字符流
  • IO 里哪些是节点流,哪些是处理流
  • 哪些 IO 流带缓冲可以提高性能的

了解了这些东西,才能在实际开发中做到有的放矢,从而把 IO 用对用好。

推荐看下 《Java IO》和《Java NIO》这两本书。其中《Java NIO》有中文版,《Java IO》没有,如果英文不好的同学,可以看个千锋教育的视频:

Java入门基础教程视频—(IO框架)

1.5 常用框架

除了 Java 语言本身的语法和库啊什么的,要找到工作还请务必熟悉至少一套开发框架。

Java 最常用的框架就是:

  • Spring
  • Spring MVC
  • Spring Boot
  • Mybatis
  • Netty

其实,Spring、Spring MVC、Spring Boot 都是 Spring 体系的。所以,要找后端工作,Spring 是必须要掌握的。有了 Spring 的基础,别的 Spring 体系可以即插即用的。

SSM 中的的 M——Mybatis 也最好掌握了,有数据库基础的话,Mybatis 学起来也不算难。

Netty 是一套网络框架,我估计初期用到的机会不多,但奈何有些面试官会问、会考,所以,若有闲暇功夫,推荐对它看个大概。

相关推荐的书有《Spring 5 开发大全》、《MyBatis技术内幕》、《Netty进阶之路:跟着案例学Netty》。

1.6 常用数据库

一般来说,找工作,熟悉一个数据库就好。推荐 MySQL,这是最常见的数据库(其次是 Oracle)。

要熟悉到什么程度呢?我认为最低水平要知道怎么用 MySQL 执行 CRUD 操作。但是这还不够保险,因为很多面试官为了防止新人删库跑路,会对面试者要求更高。

像在 CRUD 里,R 代表查询,是后端工程师最常打交道的操作。而查询用的又对又好是对工程师使用 MySQL 水平的重要标准。所以,面试官就希望面试者能对MySQL 的索引原理有一定的了解,面试的时候也会经常问这类问题。

同样的道理,除了查询以外,CUD 即增、改、删是非常危险的,既可能影响性能,还可能出现各种误操作。所以,为了保证把人招进来,不会对数据库乱操作,面试的时候大概率会考察程序员对MySQL 中的锁和 MVCC的理解情况,明白怎么用才安全可靠。

如果对这些都不太熟悉,推荐看下《MySQL是怎样运行的》,对 MySQL 讲的非常透彻。

1.7 Linux 基本操作

现在只要想做后端工程师,就肯定避不开和 Linux 系统打交道。

基本的命令操作是肯定要熟悉的,比如:目录切换、设置环境变量、文件的增删查改等等。

除了这些基本命令,还要理解 Linux 中一切皆文件的概念。并且对于一些重要概念,比如:管道、重定向、标准输入输出、标准错误输出等,也要明白他们是什么东西。

有时候,还需要开发人员直接在线上机器去编辑文件,所以还要会用 Vi/Vim 去在线编辑一些文件。

另外,如果服务器有了问题,起码基本的查询性能的命令,也要会用。比如用 netstat、vmstat等命令去查看下机器状态。

这些知识可以看下《鸟哥的Linux私房菜 基础学习篇 第四版》。

2. 计算机基础知识

除了技术栈以外,还需要面试者有扎实的计算机基础。这个计算机基础是考察面试者在学校的学习状况的,如果你计算机基础不好,那大概率说明你本身学习态度、学习能力至少有一项不太合格。

对 Java 后端工程师,咱们挑两个很重要的基础知识说说:

2.1计算机网络

后端大部分的时候就是各种接口和协议,数据传来传去,总是需要关注到网络问题的。如果一个后端工程师,对 TCP 不熟悉,对 Http 一问三不知,那么谁能相信你是一个合格的后端工程师了呢?

对于计算机网络,我推荐好好看看《计算机网络(原书第7版)》这本书,在自己的头脑中,构建出一套完整的网络体系来。

2.2 算法

现在面试尤其是大厂,必考算法,想知道大厂怎么面试算法以及答案的,一定要看看这几份刷题笔记,答案都是大厂大佬写的,质量很高,学好之后应付面试基本没啥问题了。

2.3 操作系统

学完了计算机网络,接下来就是去好好学习下操作系统。学习操作系统就是去学习如何在复杂的情况下,去协调分配各种像 CPU、内存、IO 等这些竞争性使用的计算机资源。

学懂了操作系统,你心里就有了一套在复杂情况下,去管理协调资源的成熟套路和方法论。

而这些成熟的套路和方法论,最终都是你后面能成长为优秀的工程师,以及能应对各种复杂业务需求的核心竞争力。所以,操作系统学懂是很重要的。

如果对操作系统不熟悉,我推荐看下《操作系统导论》这本书,人民邮电出版社出版,王海鹏翻译的。

3、看书学习路线

有时间多看看书。但是Java技术书有很多,要找到技术好书并不是件容易的事情,我觉得所谓好书,应该是:

  • 写的深入浅出;
  • 对自己的能力提升能有很大的帮助;
  • 对自己的技术观念有巨大的革新;
  • 对自己的职业生涯有一定的促进。

我从Java小白到现在的技术总监,一路走来我看了很多Java书籍,从看过的书当中我精心挑选了一份读书路线,能帮大家少走弯路。

好了,说了这么多,其实一言以蔽之,就是知识储备一定要足。

以上知识点,可能有人会感觉多,是的,我觉得也很多,但有啥办法,现在Java程序员越来越卷。

我讨厌卷,我也希望应届生会CRUD、会SSM就能找到工作……

JAVA应届毕业生应该具备哪些技术?插图5

原创文章 JAVA应届毕业生应该具备哪些技术?,版权所有
如若转载,请注明出处:https://www.itxiaozhan.cn/20227716.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注