java程序员需要掌握20%的技术是什么

学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》没有,如果英文不好的同学可以看下面的教程https://www.bilibili.com/video/BV1cR4y1c79h/可以帮你完成最快的学习进程。

你可能感兴趣的:(java-ee,java)