Java 程序员的堕落

我曾在多个场合撰文说过,现在培训出来的企业Java开发兵团只知道使用某种框架,但完全不知道这些框架的底层原理。今天早上,在依次对三个职位的应聘者面试中,我又再次见到了这种情形。

Java语言基础

澳门新葡亰8455下载app,我们的顾问公司收到了一个客户的招聘需求,要一个经验丰富并通晓SQL的Java开发人员。我们公司在这个客户那里享有非常好的声誉,于是我们从招聘代理公司要来了一批简历,开始搜寻合适的目标。

算法基础、常用数据结构、企业编程规范。

首先,关于他们的简历——每份简历都有数页,详细的描述了在各个公司干过的各种工作。每份简历上都有一个技术列表,表面上看这些都是应聘者懂得的技术。下面这个清单是一个真实的简历上记载的各种技术:

掌握常见的数据结构和实用算法;培养良好的企业级编程习惯。

Core Java, J2EE, JSP, JDBC, Servlets, AJAX, XML, HTML, XSLT, Web
Services, CSS, JavaScript, SQL, Oracle 10g, MySQL 5.0., JMS,Eclipse,
Adobe Flex Builder 3.x,UML, JDBC, SVN, JUnit, VSS, Jira, HTML,
DHTML,
CSS, AJAX, JavaScript, XML, MXML, Action Script, Servlet, JSP, JSTL,
Hibernate 3.x, Spring 2.x, IBatis, SOAP, UDDI, WSDL, Apache Axis,
Web
logic Server 8.x, Apache Tomcat 5.0, Struts Framework, MVC, ANT,
Maven.

Java面向对象

相当的让人印象深刻…——对于那些从来没有面试过Java程序员的人来说。我并不想说这些应聘者在撒谎,只是这些人跟你的谈话坚持不到三分钟就会在
80%的这些技术上露馅。他们可能听说过或者是试过这些技术或工具,这对于他们来说已经足够可以把它们列入简历了。那剩余的他们能说清楚的20%是什么?
框架。基本上他们都会向你解释如何配置Struts或Spring,甚至如何让Spring和Hibernate通信。顺便说一句,他们全都喜欢
Hibernate,因为它能让你省去了写SQL,而他们对SQL查询语言的知识知之甚少。

面向对象特性:封装、继承、多态等,面向对象程序设计,基础设计模式等。

每当我看到简历上写满了这些Struts,Springs,Hibernates等东西,我就会这样问,“假设,你不允许使用任何框架。你要从数据
库中的客户表和订单表中取出数据,把它们放到Web页面上,请详细完整的解释一下这整个过程。”对大部分人来说,让他们写出一些纯SQL将是一种致命请
求…

掌握面向对象的基本原则以及在编程实践中的意义;掌握Java面向对象编程基本实现原理。

有个人在简历上写了JQuery。我问她,“你为什么要用JQuery”…20秒钟的停顿…“我喜欢它,它很好呀!”这就是所有我能从她那挖掘出的关于JQuery的信息。

JDK核心API

两周前,我参加了一个旧金山JavaOne大会里的一个技术主题会。Brian
Goetz向我展示了一些 Lambda
表达式(也就是闭包)的样例代码,这个东西将在明年的Java8中出现。这是一个相当高级的语言特征,它所用的Java语法是给有勇气的人准备的。我在
想,
“在企业Java世界,谁会去用闭包?10%的程序员?5%?”。Java中引入这些表达式只是好玩?只因为它很酷?是因为其它函数式语言中有它?

语言核心包、异常处理、常用工具包、集合框架。

澳门新葡亰8455下载app 1

熟练掌握JDK核心API编程技术;理解API设计原则;具备熟练的阅读API文档的能力;为后续的课程学习打下坚实的语言基础。

软件开发产业正在发生变化。它将不再需要更多的程序员。它需要的是高级匠师,能够在软件出问题时配置并替换相关代码。理想情况下,你的团队中应该有
一个Java高手,他能真正理解你们应用中的代码,不仅能够从模块级调整它们,并且能理解每行Java代码。这样的人多少也该知道如何写SQL外连接,知
道如何纠正编译问题,等等。

JavaSE核心

典型的企业经理都希望手下拥有更多的软件开发人员。多管一些人是向上晋升的一种捷径。是这么回事。但如果你足够聪明,你应该确保你那一堆框架程序员中至少有一个是货真价实的。

异常处理、多线程基础、IO系统、网络编程、Java反射机制、JVM性能调优(JVM内存结构剖析、GC分析及调优、JVM内存参数优化)、Java泛型、JDK新特性。

我又收到了一份简历,将在明天早上10点面试。这简历看起来很眼熟。我只看了它工作过得公司和干的项目。上面其它的信息都是没用的——明天早上10点钟他自然会现出原形。

熟练掌握JavaSE核心内容,特别是IO和多线程;初步具备面向对象设计和编程的能力;掌握基本的JVM优化策略。

明天的更新。现在是早上10点15。又一个面试结束了。第四个错误的回答是,要想把数据传送到浏览器,一个servlet需要把数据放到HTTPSession对象属性里。在听了10分钟这样的回答后,你会认为我终止这次面试的行为很粗鲁吗?

SQL语言

明天的明天的更新。我给这个职位每小时的报酬上增加了5美元。偏偏这第一个面试者就扛着胜利的大旗通过了我的面试。别以为这区区5美元就能叩开栖息着有才能的程序员的奇异世界的大门!

SQL语句基础和提高、SQL语句调优。

[本文英文原文链接:The Degradation of Java
Developers
]

熟练的掌握SQL语句;掌握一定的数据库查询技巧及SQL语句优化技巧。

本文转载自: 外刊IT评论

Oracle数据库

Oracle体系结构及系统管理、Oracle数据库高级编程、数据库设计基础。

掌握Oracle体系结构及核心编程技术

JDBC

JDBC核心API(Connection、Statement、ResultSet)、JDBC优化技术(缓存技术、批处理技术、连接池技术)。

理解JDBC作为规范的设计原则;熟练掌握JDBC
API;具备使用JDBC对数据库进行高效访问的能力。

XML

XML语法、XML解析(SAX、DOM)、Dom4j组件、Digester组件。

熟练掌握XML语法规则;理解DOM模型;熟悉Java对XML的各种解析方式。

 

HTML/CSS

HTML基本文档结构、掌握CSS基础语法、关于HTML文档块、链接、列表、表格、表单等

掌握HTML基本原理;掌握CSS各种选择器及常见样式设置;熟练使用HTML常用元素。

JavaScript核心

JavaScript语言基础(数据类型、函数、对象、闭包)、Java
DOM编程、事件模型、JavaScript面向对象编程。

网站地图xml地图