面试是每一名求职者不能够避免的一个环节,java软件开发工程师作为技术型的职位对于面试环节更是要严格很多,算是一个公司对求职者能力的一个简单测试吧,同样也是求职者了解公司的简单快捷的途径!
同样的面试题也是面试过程中一个至关重要的环节,能够让面试官以最直接的方式来来对你的能力进行了解。
因此各个网站上的面试题也是多如牛毛,但是都比较嘈杂什么类型的都有,下面我就专门针对简答题来做一个简要性的总结。
1、 EJB有哪几个BEAN?
答:1)、会话bean(封装业务逻辑)
2)、实体bean(处理数据持久)
3)、消息驱动bean(处理异步消息)
2、 AJAX核心技术是什么?
答:Ajax的核心技术是xmlHttpRequest组件的相关技术.
XMLHttpRequest对象允许Web程序员从web服务器以后台活动的方式获取数据.数据格式通常是XML,但是也可以很好的支持任何基于文本的数据格式.尽管XMLHttpRequest对于完成这件工作来说是最为灵活和通用的工具,但还有其它方法也可以从服务器获取数据.
其中CSS,DOM,JavaScrpit都不是新面孔,以前结合在一起称为动态HTML,或者简单DHTML
3、 谈谈ORACLE与SQL Server的区别是什么?
答:对与oracle和SqlServer明显的不同就是管理不用和安全性不同
如 1.sql server没有表空间的概念,oracle有 2,sql 的触发器没有前后,oracle 触发器有前后(删除前,删除后等等)
再次,如产品公司不一样, 运行平台不一样,扩展功能的语法不同等也可以提一下.
再者就可以再具体的说几个方面,如:Oracle中有复合数据类型而SQL Server中没有。
声明方式:变量名 对象名%type。这里的变量类型可以是所有以存在的数据类型,具有依赖性,存储过程中用这种变量比较灵活,但效率应该会低些。Oracle存储过程中借助cursor类型变量返回并访问记录集。SQL Server中我没用过类似功能。
Oracle里的用法:存储过程中边查询边给变量赋值。
select 某一列名 into 变量名 from table where ..;相当于Oracle中的select 变量名=列....
4、 谈谈你对MVC的理解
答:MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。MVC模式最早是smalltalk语言研究团提出的,应用于用户交互应用程序中。smalltalk语言和java语言有很多相似性,都是面向对象语言,很自然的SUN在petstore(宠物店)事例应用程序中就推荐MVC模式作为开发Web应用的架构模式。MVC模式是一种架构模式,其实需要其他模式协作完成。在J2EE模式目录中,通常采用service to worker模式实现,而service to worker模式可由集中控制器模式,派遣器模式和Page Helper模式组成。而Struts只实现了MVC的View和Controller两个部分,Model部分需要开发者自己来实现,Struts提供了抽象类Action使开发者能将Model应用于Struts框架中。
5、 能比较一下UNIX与LINUX的区别吗?
答: Linux与Unix的区别
[历史]Unix的历史久于linux. Linux的思想源于Unix
[产品]unix和linux都是操作系统的名称.但unix这四个字母除了是操作系统名称外,还作为商标归SCO所有.Unix主要有Sun 的Solaris、IBM 的AIX, HP的HP-UX,以及x86平台的的SCO Unix/Unixware
Linux商业化的有RedHat Linux 、SuSe Linux、slakeware Linux、国内的红旗等,还有Turbo Linux.
[其他区别]
linux的核心是免费的,自由使用的,核心源代码是开放的.
而unix的核心并不公开
在对硬件的要求上,linux比unix要低,没有unix那么苛刻.在安装上linux比unix容易掌握.
在使用上,linux相对没有unix那么复杂.
Unix多数是硬件厂商针对自己的硬件平台的操作系统,主要与CPU等有关,如Sun 的Solaris作为商用,定位在其使用SPARC/SPARCII的CPU的工作站及服务器上,当然Solaris也有x86的版本,而Linux也有其于RISC的版本。但确切的讲,拿RISC上的Unix与x86上的Linux进行比较不太合适。
至于价格,个人使用的Linux基本上算是免费的,不同的Linux发行厂商针对企业级应用在基本的系统上有些优化,如RedHat的Enterprise产品,这些产品包括支持服务是比较贵的。
像IBM/HP/SUN的Unix,因为主要是针对其硬件平台,所以操作系统通常在设备价格中。(没有人单独去买一个Unix操作系统的)
在性能上,linux没有unix那么全面,但基本上对个人
用户和小型应用来说是绰绰有余
6、 请你谈谈JDBC与Hibernate的关系?
答:Hibernate 是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架, Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。
另外Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。
7、EJB框架流程是什么?
答:1、创建ejb组件需要的接口和类型
2、在ejb-jar.xml这个标准的部署描述文件中描述ejb组件
3、提供一个跟容器相关的一个部署描述文件,在这个文件中指定ejb组件的jndi名(注:这个文件也可以不提供,到部署完ejb模块之后再去指定jndi)
4、将所有java文件编译成class,按照ejb应用的目录结构来存放类和配置文件
5、把ejb应用打成一个jar包,部署到j2ee服务器上,然后访问
6、编写一个客户端ejb
这道题目我只是提出需要注意的几点,具体的代码没有给出:
1) 客户端从JNDI查找EJB代理对象,传送数据给JNDI,一次参数序列化传递
2) 客户端从JNDI服务器返回EJB代理对象,一次代理对象的序列化传递
3) 客户端调用EJB方法,传入的参数需一次序列化操作传递给远程EJB对象
4) 远程EJB对象处理方法调用,途中如果要用到数据库连接等资源的话,还会有对象序列化操作
5) 远程EJB对象返回结果,结果数据需要一次序列化操作
8、你认为做为一个项目经理所要具备哪些素质?
答:项目经理是一个软件公司特别重要的一个角色,作为一个项目经理,我觉得以下的素质是不能缺少的:
1)要公正无私 :如果一个项目经理不能做到公正无私,他就难以服众,无法带好项目团队。
2)要有良好的职业道德:用户对于项目有知情权,给用户暴露出问题不一定是坏事,因为只要大家能够互相理解,才能保证项目的顺利进展。如果明知完不成进度,而故意隐瞒了真相,当然是要受到惩罚的。
3)要具有管理的基本技能与知识: 要做一个好的项目经理,他肯定要好好的学习一些关于项目管理的基础知识,进行项目管理的技能训练,既要有管理意识,还要有管理的基本技能,要"心有余且力也有余"。
4)要具有很好的沟通与表达能力:项目经理要和方方面面的人员沟通,包括项目组内的人员、市场人员、用户、上级主管,也要和各个层次的人员打交道,为了项目的成功要通过沟通交流消除来自各方面的阻力。譬如,一个系统集成的项目,在用户现场布线时,你可能要和用户的工程主管、电工、施工队等各种角色沟通,否则,可能因为很小的问题,你的系统就要失败。
5)要有很强的分析问题解决问题的能力: 项目经理要能够通过现象看到本质,通过细节发现大问题,发现问题后要果断采取措施,而不是延误时机。如果一个项目经理对问题比较麻木,不能防微杜渐,那么就谁都可以做项目经理了!
6)要懂技术,不要求精通,但是要全面 : 这可能是争议比较大的一个原则,因为如果按此原则执行,那些拿到PMP证书的专职项目经理如何找工作?用一个不懂开发的人来做项目经理,他主要对项目的进度负责,进行项目组内外的协调,但是为了弥补其不足,必须还要给他配一个助手专门负责技术。对于大的项目这种方式是可以的,对于小的项目而言肯定不能这样做,否则就会出现资源浪费,项目经理的工作量不饱满。所以我的意见还是要使用懂技术的项目经理,这样他能清楚地知道组员在做什么、做的怎么样,能够发出正确的方向性指令,而不是瞎指挥,外行领导内行。
7)要谦虚,不能不懂装懂:有的项目经理搞一言堂,听不进去大家的意见,而且不懂装懂,会使项目团队的效率很低,项目的质量很差,系统开始实施后,就陷入到大量的纠错改错的泥潭中。
8)要平易近人,不要摆架子 :如果项目经理不能做到这一点,你也不会去和他很好地沟通的,当然项目组的效率也不会很高的。
9、简述Spring的二个重要思想?
答:IOC:控制反转,谓之“依赖关系的转移”,如果以前都是依赖于实现,那么现在反转为依赖于抽象吧,其实它的核心思想就是要面向接口编程.
AOP:面向方面编程,我们可以把日志、安全、事务管理等服务(或功能)理解成一个“方面”,那么以前这些服务一直是直接写在业务逻辑的代码当中的,这有两点不好;首先业务逻辑不纯净,其次这些服务被很多业务逻辑反复使用,完全可以剥离出来做到复用。那么AOP就是这些问题的解决方案,我们可以把这些服务剥离出来形成一个“方面”,以期做到复用;然后将“方面”动态的插入到业务逻辑中让业务逻辑能够享受到此“方面”的服务
10、Servlets的生命周期?
答:web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。(这是简单描述,但是比较长考的是画出servlet运行的时序图,这一点也务必要注意到)
11、Spring熟悉吗?请谈一下AOP、IOC是如何应用的?
答:Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
AOP控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器(在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。下表列出了 IOC 的一个实现模式。Spring 框架的 IOC 容器采用类型 2 和类型3 实现。
类型 1 服务需要实现专门的接口,通过接口,由对象提供这些服务,可以从对象查询依赖性(例如,需要的附加服务)
类型 2 通过 JavaBean 的属性(例如 setter 方法)分配依赖性
类型 3 依赖性以构造函数的形式提供,不以 JavaBean 属性的形式公开
12、简答对Struts认识?
答:Struts一词来源于在建筑和旧式飞机中使用的支撑金属架,从词义中我们大概可以看出,Struts是一个事物(Web应用)的框架。用稍微专业一些的词汇来定义,Struts是MVC框架的一个实现。
Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。
Struts有一组相互协作的类(组件)、Serlvet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件想结合。
Struts的核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,Struts-config.xml集中了所有页面的导航定义。对于大型的WEB项目,通过此配置文件即可迅速把握其脉络,这不管是对于前期的开发,还是后期的维护或升级都是大有裨益的。掌握Struts-config.xml是掌握Struts的关键所在。
13、Hibernate如何查询数据库?
答:hibernate一大优势就是使数据库的操作变得十分的简单.在hibernate的实现机制里面,利用pojo类以及.hbm.xml文件实现数据库和java文件的映射,来构造数据库里存储信息的对象,这样就可以利用hibernate的数据库操作语句实现对映射出来的对象进行增,删,改,查的操作.在此,还会利用hibernate的query构建sql或者hql语句进行操作,在构建sql语句的时候,sql语句字符串的写法和普通的sql语岁句的操作,但是构建HQL语句的时候,查找的字段都是所操作的映射对象的属性,查找也是从对象里面查找.主要难点就是在这个构建语句的地方的处理
14,谈谈你mvc的理解
MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。
MVC中的模型、视图、控制器它们分别担负着不同的任务。
视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。
模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性
控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。
然后根据处理的结果调用相应的视图来显示处理的结果。
MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。
Java热点新闻