一年工作经验的Java程序员应该具备的技能
一.前言
一名拥有一年工作经验的Java程序员应该具备的技能,这些可能是Java程序员比较关注的。众所周知,工作一年和工作三年对于一个程序员来说,都是一个十分关键的时期。刚工作一年的程序员,是进入社会的一个关键期,这段时间我们会将自己在学校学到的知识运用到实际工作中,并真正开始接触到企业级的开发流程。那么在这一年中,我们需要掌握哪些技能,才能在未来的工作中保持核心竞争力,或者是跳槽到一个更好的公司。这就是本文所要介绍的内容,因为本人是打算换工作,所以侧重点可能会偏向这方面,不过以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。话不多说,正文开始。
二.技能点
2.1 Java部分
2.1.1 Java基础
这是最基础的技能,也是每次面试必问的技能,当然了,作为一个Java程序员来说,这也是我们最开始就需要掌握的内容。推荐书籍《Java核心技术 卷1 基础知识》,Java入门必看书籍。
2.1.2 Java集合
非常重要,也是面试的高频考点,基本上就是List、Map、Set,问的是各种实现类的底层实现原理,实现类的优缺点。
关于这部分我会单开章节仔细讲解。
2.1.3 Java 虚拟机
这一块对于一个一年程序员来说,如果能够有所掌握,那绝对是一个很大的加分项。推荐书籍《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) 周志明》,非常幸运的是,关于这方面的著名书籍深入理解Java虚拟机,正好出了第三版,本书内容涵盖到了JDK11,相比起第二版(JDK7)来说,篇幅扩大了将近一倍,也增加了很多新的技术和特性,绝对值得一读。
2.1.4 Java 并发
Java多线程开发这块应该是大部分Java程序员最难啃的骨头之一,因为这部分理论知识体系庞大,实践起来难度也相对较大。
推荐书籍:《Java多线程编程核心技术》本书是国内首本整本系统、完整地介绍Java多线程技术的书籍,对于我们掌握Java多线程的完整知识体系很有帮助。
《实战 Java 高并发程序设计》这本书内容同样是理论结合实战,对于每个知识点的讲解也比较通俗易懂,整体结构也比较清。
2.1.5 设计模式
设计模式也是一个加分项,不过对于一个一年经验的Java程序员来说,并不需要掌握的特别深刻,只需要知道有哪些常用的设计模式,以及这些设计模式的原理UML图和使用场景就够了。 这方面的经典书籍非常多。最经典的莫过于GOF的《设计模式:可复用面向对象软件的基础》,国内的《设计模式之禅》和《研磨设计模式》也都不错。
2.1.6 netty编程
相比于 WEB 前台开发/精通 Spring 框架等,精通和熟悉 Netty 的人毕竟是非常少的。而因为近年来分布式,微服务等系统的兴起,Netty也是越来越火了。所以如果能够掌握这一块,那么对于这方面有需求的公司,你将具有极大的优势。而很多开源框架底层都使用到了Netty,比如Hadoop的RPC框架就是使用Netty作为通信框架,以及阿里巴巴的Dubbo的RPC框架也是用的Netty,如果掌握了Netty,对于连接这些框架也有很大的帮助。 学习Netty的前置知识是:Java IO ,Java NIO,计算机网络知识等。
推荐书籍:《Netty 权威指南》国内第一本系统化讲解 Netty 原理和架构的书籍,这本书偏向于原理性知识。
《Netty 进阶之路:跟着案例学 Netty》,这本书则是从一个个典型的问题出发,让读者能够带着问题来展开学习,并通过代码解读、原理分析和问题总结。
2.2 数据结构与算法
这部分知识可谓是重中之重,也是想进大厂的入门砖。如果不掌握的话,可能连笔试都过不了。学习数据结构与算法,还是很有必要看几本相关的书籍。
推荐书籍:入门级别:《大话数据结构》《算法图解》
进阶:《算法》
本部分会开单章节详细讲解...
2.3 计算机网络
计算机网络知识也是作为一名Java程序员,或者说作为一名程序员所必备的知识,也是面试常问的知识点。了解计算机网络,能让我们更好的理解通信机制,不过计算机网络的知识点过于庞大了,学习起来需要一定的耐心。
推荐书籍:《计算机网络,自顶向下方法》这本书深入浅出,幽默生动,还有课后习题,适合新手入门。
《TCP/IP详解卷一:协议》这本书讲明白了网络之术,即TCP/IP协议簇的工作过程;
《图解HTTP》这本书,这本书页数不多,但是内容很是充实,如果时间不多,想在面试前进行突击,可以优先看这本书。
2.4 数据库
数据库也是程序员的必备知识库,主要包括两个方面:传统的关系型数据库 和 非关系型数据库。
2.4.1 MySQL
关系型数据库中的代表是Oracle 和 MySQL,这里以MySQL为例。
推荐书籍:入门:《MySQL必知必会》
进阶:《MySQL技术内幕 InnoDB存储引擎》
2.4.2 NoSQL
NoSQL近年来逐渐兴起,其中常用的有 mongodb,redis,hbase。
2.5 常用框架
熟练掌握常用的框架,也是一个程序员应该掌握的技能,目前市面上最常见的应该就是spring + springMVC + Mybatis的组合。
2.5.1 Spring/Spring boot
2.5.2 SpringMVC
2.5.3 Spring Cloud
2.5.4 Mybatis
2.6 Linux
作为一名优秀的程序员,那肯定要熟悉Linux操作系统。对于工作一年的程序员来说,只需要掌握到Linux的常用命令 和 shell 编程 即可。
推荐书籍《鸟哥的Linux私房菜》
2.6.1 Linux常用命令
2.6.2 shell 编程
2.7 分布式
最近分布式系统所占市场比例越来越大了,有关分布式的基本概念也是我们所需要掌握的。
三.总结
以上内容则是我认为一个工作了一年程序员需要掌握的能力和技能,当然了能够全部掌握的人少之又少,所以还需要根据自己的能力和实际的需求,掌握自己最需要的部分。另外,个人认为工作1-3年的过程中,应该是我们增加自己技术栈的广度的关键期,不断扩大自己的技术栈。三年以后就应该不断扩大自己已经掌握的技术栈的深度。以上内容都是个人粗略的见解,如有不正,欢迎予以指正,我看到后会及时修改。