公司java框架让程序员变笨_框架会使程序员变笨吗?

上周,我做了几次面试,要招几名有5年工作经验的高级Java开发人员。但当面试结束后,我感觉到,各种框架(frameworks)使开发变得容易,但同时,也使程序员变笨。

每个人都会在他们的简历中罗列出几乎所有的新框架,他们能“熟练的使用Spring,Hibernate,Web Services等”。

下面是面试的过程。

我: 你在你最近的项目中使用了Spring。使用Spring有什么好处?

应试者: 我们使用XML配置出bean信息,Spring能够帮我们实例化这些bean,供我们使用。

我:如果Spring只是用来创建对象,那我们干嘛要用它?我们可以直接使用“new”来实例化各种依赖关系。为什么我们还要在XML里配置类的名字、要从Spring里取对象?

应试者:如果改天我们又需要对接口做另外一种实现,我们开发出实现后,更改一下XML配置,就能使用我们的新实现了。我们不需要去修改Java类和重新编译它们。

我:可是既然你写出了新的Java类,你必然要重新编译你的项目。

至于XML里的变化,99%的时间里你的XML都是打包在 war 或 ear 文件里的。

所以,你只需要运行一下ant脚本,把你所有的变更都包在war文件里就行了。你的“如果使用XML就不需要编译”的观点是站不住脚的。

应试者:唔,但依赖注入的设计模式建议采用这种做法。

我:好吧。我们就先聊到这。人力资源部会给你打电话的。 🙂

面试另外一个家伙:

我:你能描述一下你最近开发的项目、以及使用到的技术吗?

应试者: 那是个XYZ系统,我们使用了Spring,Hibernate,REST WebServices。

我:那好。你能解释一下RESTful吗?

应试者:我们使用@RequestMapping(value=”/url”, method=”POST”)来开发RESTful应用。我们还使用了PUT,DELETE方法。

我:哦,那RESTful个什么概念?

应试者:我不是说了吗,如果你使用 @RequestMapping(value=”/url”, method=”POST”),你就是在开发RESTful应用。

我:哦,你对Hibernate如何?

应试者:我这两年一直在使用Hibernate。我对Hibernate很熟悉。

我:跟JDBC比起来,Hibernate有什么优势?

应试者:使用Hibernate,我们不需要写任何跟数据库交互的东西,Hibernate会帮我们处理这些。

我:那Hibernate怎么能知道你的项目需要如何的存取?

应试者:如果我们使用了Hibernate,它会帮我们完成存储,更新,取数据等数据库操作。

我:哦,哦。你在业余时间会读一些技术相关的博客吗?

应试者:当然,我对Hibernate的深入掌握就是这样学会的。

我:非常好,很高兴见到你。我们的人力资源部会给你打电话的。 🙂

面试过程就这样 …

我绝对相信各种框架会提高程序员的工作效率。但程序员也应该努力去了解这些框架是如何工作的。你并不需要理解各种框架的所有内部工作原理。如果你非常的擅长Servlets和JSP,那你就很容易理解诸如Struts,Spring MVC等Java Web框架。如果你不了解这些基础知识,很显然,所有你的回答只能是“框架/标记/XML帮我们做了这些”。

我强烈建议所有刚开始职业生涯的Java程序员都要认真学习Java核心,Servlets,JSP知识。只有这样你才能正确的理解各种框架的工作原理。

分享这篇文章:

分享

看样子你已经点过这个了!

抱歉,你最多只能点三个!

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
JAVA开发人员必备是HTML格式的 JavaTM 2 Platform Standard Edition 6 API 规范 本文档是 Java 2 Platform Standard Edition 6.0 的 API 规范。 请参见: 描述 Java 2 Platform 软件包 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有类。 java.awt.color 提供用于颜色空间的类。 java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类。 java.awt.font 提供与字体相关的类和接口。 java.awt.geom 提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。 java.awt.im 提供输入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt.print 为通用的打印 API 提供类和接口。 java.beans 包含与开发 beans 有关的类,即基于 JavaBeansTM 架构的组件。 java.beans.beancontext 提供与 bean 上下文有关的类和接口。 java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio 定义作为数据容器的缓冲区,并提供其他 NIO 包的概述。 java.nio.channels 定义了各种通道,这些通道表示到能够执行 I/O 操作的实体(如文件和套接字)的连接;定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务提供者类。 java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 java.nio.charset.spi java.nio.charset 包的服务提供者类。 java.rmi 提供 RMI 包。 java.rmi.activation 为 RMI 对象激活提供支持。 java.rmi.dgc 为 RMI 分布式垃圾回收提供了类和接口。 java.rmi.registry 提供 RMI 注册表的一个类和两个接口。 java.rmi.server 提供支持服务器端 RMI 的类和接口。 java.security 为安全框架提供类和接口。 java.security.acl 此包中的类和接口已经被 java.security 包中的类取代。 java.security.cert 提供用于解析和管理证书、证书撤消列表 (CRL) 和证书路径的类和接口。 java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 Adleman AsymmetricCipher 算法)密钥,以及 NIST 的 FIPS-
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页