Java程序员找工作需要掌握哪些技能
学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 下工作,就离不开多线程去平行执行任务。所以,异步和多线程是一位后端工程师必须掌握的核心技能。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
而要达到找工作的水平,我认为至少满足如下几个条件:
能准确的理解进程和线程的概念
至少弄懂什么叫 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》没有,如果英文不好的同学可以看下面的教程可以帮你完成最快的学习进程。