一篇文章讲懂Java职位核心要点

入行两个月,受到的委屈比过往二十多年总和还要多。HR批评她不专业,候选人责备她不用心。

其实Lily并非不努力,情商和沟通能力也非常好。就是学管理出身的她,实在弄不懂J2SE、MySql、Spring、Oracle……学计算机出身的资深猎头Daniel见状,好为人师的他决定为Lily讲讲基础专业知识,以Lily在做的Java职位为例。

Lily:一个Java工程师的基本技能是什么呀?

Daniel:程序工程师,一般分前端、后端和移动开发,Java属于后端。

一个入门的Java工程师的基本要求是对JDK API的了解和熟悉。这涉及到JDK和API两个经常遇到的概念,值得我们花时间了解一下。

理解JDK,必须从SDK开始讲起。SDK是一套软件开发工具包。它有什么用呢?举个例子:买机票。一种办法是打开购票网站->输入起始地、目的地和时间->选航班->输入姓名、手机和身份证号->下单支付;第二个办法:请个助理,告知时间地点,让助理去完成整个买票过程。

这个助理,你可以理解成一个SDK,她集成了很多技能,会买票/安排会议/整理文档等,变身成为你的“工具包”,很多你需要一步一步去完成的工作,可以把其中环节交由她去完成,简化你的工作。不同的平台提供不同的SDK,完成的任务也是不一样的,而JDK就是针对Java的SDK啦。

Lily:JDK理解了,那API呢?

Daniel:SDK里面有很多API,就像一个助理(SDK)拥有很多技能(API)。一个API可理解是一个小功能,买票是一个API,安排会议也是一个API。在老板眼中,助理是一个有多项小功能的集合体;同理,在开发者眼中,SDK就是由一个个API构成的。老板使用小技能的过程,就是开发者“调用API”的过程,帮助开发者就完成一些任务,减少开发者的工作量。

Lily:那JKD和API的关系我就明白了,那JD里面经常提到的“跨平台”和“JVM”又是什么关系呢?

Daniel:跨平台里面的“平台”可以简单理解成操作系统,PC的主流操作系统是Window、MacOS和Linux。Linux在服务器(区别于我们常用的桌面电脑,服务器性能更高,稳定性更好)的应用非常广泛,不夸张的说,大部分的服务器都运行着Linux。跨平台是指一份代码无需重写就可以在多个平台上工作,这是开发人员梦寐以求的。

Java可以跨平台是因为拥有JVM,它是一个虚拟机。怎么理解呢?虚拟机可以想象成一台翻译机,它把一份代码都翻译成各个平台都能理解的语言,这样就可以正常运作了。

Lily:理清楚这些基本概念后,看JD就没有那么懵逼了。那一个Java工程师必备的技能有哪些?

Daniel:好问题,不过也是一个非常大的问题。Java的技能树可以分为几类:核心基础、框架、数据库、缓存数据库、应用服务器和网络协议。

核心基础主要就是对J2SE的熟悉和理解。你可以把J2SE理解成一个基础平台,开发者使用Java在上面搭建网站,处理数据、搜寻信息……开发者要知道这个基础平台提供了什么,可以做什么以及如何去做。

Lily:明白了。那什么叫框架?

Daniel:我打个比方。做一份PPT的时候,你可以有两种做法:1.从无到有全部自己做;2.找个优秀的模板,修改和添加完成。

类似的,写代码实现功能时,从0开始自己写,或者找个“模板”,在上面改写。这个“模板”就是我们所说的“框架”了。第一种办法几乎没人用了,耗时长,效率低,质量还不高。

Lily:明白了。那Java常用的框架有什么呢?

Daniel:SpringMVC、Spring、MyBatis、Hibernate、Netty、Mina、Struts2……前三者非常流行,简称“SSM”;Hibernate不够灵活,但易于上手,常用于性能要求不高的业务;Netty和Mina是网络通讯框架,常用于开发高性能的网络服务器和客户端。

Lily:框架有概念了,那数据库又是什么呢?

Daniel:顾名思义,数据库就是用来存储数据的。举个例子,你想把全家人的生日都记录下来,可以选择放在txt文档,excel表格或者云笔记等。你可以把它们想象成不同的“数据库”。当然,十条八条的数据,存放和查找起来都比较方便;当数据有百万千万条的时候,如何恰当存放、快速查找,选择不同的数据库就各有利弊了。

Lily:那市面上常用的数据库有什么呢?

Daniel:哈哈,问到关键点了。有Oracle、MySQL、SQL Server、DB2等。Oracle常用于银行这种不差钱的大机构,付费使用;MySQL免费且开源,在互联网公司拥有大量拥趸;SQL Server是微软家产品,如果服务器是Windows,选用这个数据库无疑更恰当。

Lily:那缓存数据库又是鬼?

Daniel:刚才我们的数据库都是针对数据存放在硬盘上的而言的。但我们知道,计算机里面还有个内存,速度可比硬盘快多了,成本也要高很多,所以容量比硬盘小。

一句话总结:缓存数据库就是内存上的数据库,区别于之前硬盘上的数据库。缓存数据库用Redis、Memcached和 MongoDB居多,它们都属于NoSQL数据库,区别于Oracle和MySQL这种关系型数据库(用SQL语言查询)。

Lily:这样解释就清晰多了。继续解释“应用服务器”吧,网上说的那些都看不明白。

Daniel:比如我打开一个电商App,输入“Java进阶”,返回图书列表,这中间就是应用服务器完成指令接收、查询数据库、返回搜索结果等一系列业务逻辑的过程。常见的有Tomcat、Jetty、Jboss、Weblogic、Glassfish、Websphere 和Oracle9i/AS等。

Lily:因为后端需要和前端协作,所以也需要了解HTTP等网络协议,是这样意思吗?

Daniel:对啦!你慢慢走上正轨了,加上耐心和努力,一定可以成单的。


猎必得人才库拥有30000+份Java简历,注册搜索Java免费获得简历


你可能感兴趣的:(一篇文章讲懂Java职位核心要点)