找过工作的朋友应该知道,现在招聘Java开发工程师的公司特别多。那么Java开发这个岗位具体是做什么的?又有什么招聘要求呢?
我毕业的时候也面试过很多公司,当时对Java开发这个岗位的要求不甚了解,因为懂Java语法知识就能找到Java开发的工作了,后来发现不是这样的。工作以后,自己参与过金融核心系统、O2O电商系统、公司级网关项目、证券交易投资系统的设计开发。随着工作经验的积累,对Java开发这个岗位有了比较清楚的认识。自己也从面试者转变为面试官,每年都会参与很多员工招聘,通过角度的变化,对Java岗位的要求也有了新的理解。
根据我的理解,Java开发岗位对于面试者有以下5个方面的要求:
1. 技术能力
作为开发人员,技术能力是必须的。针对Java开发而言,需要掌握下面的技术:
Java基础知识:除了Java基本语法,还需要对泛型、多线程、垃圾回收这些有了解。
常见框架知识:要了解Spring、Mybatis、Dubbo(或其他RPC)等常用框架的使用方法和基本原理。
数据库知识:包括MySQL、Oracle(金融行业用的多)这些关系型数据库和Redis这种缓存数据库。
分布式知识:现在大部分系统都是微服务框架,采用分布式部署。因此,对分布式相关知识要有所了解,比如分布式一致性如何解决、分布式系统如何做好容错、分布式环境下全链路监控应该怎么实现。
计算机基础知识:比如算法、数据结构、网络、操作系统、计算机组成原理,尤其是校招,因为面试者工程经验比较少,对基础知识的要求会更高,需要好好准备。这部分内容范围比较广、也比较杂,但是准备这部分知识也是有技巧的,后面我会进行专题介绍,感兴趣的同学可以先加个关注。
2. 业务能力
对于业务能力,对于校招面试,或者业务难度不大(比如电商)的公司要求会低一些。对于金融公司,尤其是券商这种专业性比较强的公司,要求还是比较高的。比如我现在的项目组招聘,一般会要求有金融相关背景。这是因为专业性强的项目,新人培养周期长,如果没有相关经验的化,可能半年一年都很难搞清楚业务,很难有好的产出,这对公司来讲是不划算的。
3. 问题分析能力
编程说白了就分为2步:把业务问题转换为数学问题;把数学问题通过计算机来实现。这2步其实对问题分析能力都有比较高的要求,因此,在面试的时候,会着重考察问题分析能力,尤其是高级开发岗位,对于这点会更加重视。
4. 沟通表达能力
现在的软件系统基本上都是团队合作完成的,所有对于沟通表达能力有所要求,如果一个面试者技术能力不错,但沟通表达能力不行也是很难拿到offer的。
5. 学习能力
开发知识是变化很快的,所以不断学习是优秀的开发工程师必备的品质,面试的时候也会对这方面进行考察。
通过上面的介绍,同学们对Java开发岗位的要求有比较清楚的认识了吧,有什么疑问也在评论区讨论。
Java开发每日一课是系列专栏,后面每天都会Java开发相关的干货分享,感兴趣的朋友可以先加个关注。
作者介绍:14年某国家重点实验室软件理论硕士毕业、在美团负责过公司级网关项目,目前在某金融公司负责机构投资交易系统的设计开发。有10年Java开发经验,4年项目管理经验,擅长高并发、高可用分布式系统的设计,Dubbo Contributor。