java面试题04
1.就你所熟悉的银行业务面说一下,越详细越好
银行经验:手机银行 网上银行经验 怎么支付 转账 了解基本业务
2.了解工作流的控制,审批流程以及帐务处理么?
java中怎么实现工作流、审批流程,java怎么实现报表功能?
web 项目整合 jbpm或者其他工作流组件
3.java开发web有几种开发模式?你最熟悉哪种?
共有23中开发模式:
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
其实还有两类:并发型模式和线程池模式。
最熟悉的:单例模式
单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。
4.描述某些特殊功能你认为要从什么包实现?
java.util是JAVA的utility工具包,包含一些使用工具类,如定义系统特性、使用与日期日历相关的函数等。
java.lang是JAVA的language核心语言包;如String、Math、Integer、System、Thread,提供常用的功能。特殊之处是不需要导入,是作为默认导入的包。
java.awt是JAVA的abstractwindow toolkit,抽象窗口工具包;包含了构成抽象窗口共具体的多个类,这些类用于构建和管理应用程序的图形用户(GUI)。
java.applet是创建APPLET的必须包;包含applet运行时所需要的一些类。
java.net是JAVA有关网络操作的包。
java.io是JAVA的输入输出流的包。
java.sql是JAVA的数据库操作包。
javax.swing是新的界面包。
java.applet 支持小应用程序的结构
java.awt 提供图形用户接口的能力
java.awt.color 支持颜色空间和外形
java.awt.datatransfer 与系统的剪贴板交换数据
java.awt.dnd 支持拖拉操作
java.awt.event 处理事件
java.awt.font 描述多种字体类型
java.awt.geom 允许你使用几何形状
java.awt.im 允许编辑组件中日文,中文,韩文的的输入
java.awt.im.spi 支持二选一的输入设备 (在java 2, v1.3中加入) java.awt.image 处理图像
java.awt.image.renderable 支持独立显示图像
java.awt.print 支持一般的打印功能
java.beans 允许你建立软件组件
java.beans.beancontext 为bean 提供可执行环境
java.io 输入输出数据
java.lang 提供核心功能
java.lang.ref 使能与垃圾回收交互
java.lang.reflect 运行时分析代码
java.math 处理大整数和十进制数
java.net 支持网络功能
java.rmi 支持远程方法调用
java.rmi.activation 激活永久对象
java.rmi.dgc 管理分布垃圾回收
java.rmi.registry 映射名称到远程对象引用
java.rmi.server 支持远程方法调用
java.security 处理证书,密钥,摘要,签名和其他安全功能
java.security.acl 管理访问控制列表
java.security.cert 分析和管理证书
java.security.interfaces 为DSA(数字签名算法)定义接口
java.security.spec 设定密钥和算法参数
java.sql 与SQL(结构化查询语言)数据库交互
java.text 格式化,查询和处理文本
java.util 包含一般工具
java.util.jar 生成和打开JAR文件
java.util.zip 读写压缩或解压缩文件
5.一般怎么调试java程序?
(1)system.out.print()输出语句调试
(2)使用MyEclipse/Eclipse程序的Debug调试,设置断点,运行程序,观察不变量变化;
6.熟悉几种分布工具?各自是怎么发布的?
tomcat
部署方法:
(1)直接将web项目文件件拷贝到webapps 目录中
Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。所以可以将JSP程序打包成一个 war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。一个war包就是有特性格式的jar包,它是将一个web程序的所有内容进行压缩得到。
webapps这个默认的应用目录也是可以改变。打开Tomcat的conf目录下的server.xml文件,找到下面内容:
unpackWARs="true"
xmlValidation="false" xmlNamespaceAware="false">
将appBase修改即可。
(2)在server.xml中指定
在Tomcat的配置文件中,一个Web应用就是一个特定的Context,可以通过在server.xml中新建Context里部署一个JSP应用程序。打开server.xml文件,在Host标签内建一个Context,内容如下:
path是虚拟路径;
docBase 是应用程序的物理路径;
workDir 是这个应用的工作目录,存放运行时生成的与这个应用相关的文件;
debug 则是设定debug level, 0表示提供最少的信息,9表示提供最多的信息
privileged设置为true的时候,才允许Tomcat的Web应用使用容器内的Servlet
reloadable 如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重起tomcat的情况下改变应用程序,实现热部署
antiResourceLocking 和antiJARLocking 热部署是需要配置的参数,默认false避免更新了某个webapp,有时候Tomcat并不能把旧的webapp完全删除,通常会留下WEB-INF/lib下的某个jar包,必须关闭Tomcat才能删除,这就导致自动部署失败。设置为true,Tomcat在运行对应的webapp时,会把相应的源文件和jar文件复制到一个临时目录里。
(3)创建一个Context文件
在conf目录中,新建 Catalina\localhost目录,在该目录中新建一个xml文件,名字不可以随意取,要和path后的那个名字一致,按照下边这个path的配置,xml的名字应该就应该是hello(hello.xml),该xml文件的内容为:
tomcat自带例子如下:
privileged="true" antiResourceLocking="false" antiJARLocking="false">
7.Easyui中的控制datagrid在加载数据的时候会出现两次请求后台数据的情况,什么原因?
html代码中利用class声明了datagrid,导致easyUI解析class代码的时候先解析class声明中的datagrid,这样组件就请求了一次url;然后又调用js初始化代码请求一次url。这样导致了重复加载,解决的方法就是只用一种初始化方法来声明easyUI组件以避免重复的提交请求,即删除html中的class声明(class="easyui-datagrid")或者采用延迟加载初始化:
init();
function init() {
$('#dic').datagrid({});
//延迟加载,否则页面请求两次
setTimeout(refreshDic, 100);
}
function refreshDic() {
$('#dic').datagrid({
queryParams: {
dictName
}
通过setTimeout实现延时请求,果断不请求两次了
为了那100毫秒页面没渲染的太难看,先初始化个简单的datagrid。
延迟的毫秒数试过很多,最小95毫秒左右,不能再小了,否则还是请求两次。
8.Oracle中字符串用什么符号链接?Oracle是怎样实现分页的?
连接符号是:||
分页:
select * from
(select a.*,rownum row_num from
(select * from mytable t order by t.id desc) a
) b
where b.row_num between startIndex and endIndex
9.Oracle中where条件查询和排序的性能比较?
10.解释什么是死锁,如何解决Oracle中的死锁?
死锁:程序运行过程中,只有一个进程在运行,其他进程都在等待状态,并且点击进程的确定和保存按钮,程序无反应,但是也不报错,之中现象称作死锁。
解决方法:
1)用dba用户执行以下语句
以下是代码片段:
select username,lockwait,status,machine,program from v$session where sid in
(select session_id from v$locked_object)
如果有输出的结果,则说明有死锁,且能看到死锁的机器是哪一台。字段说明:
Username:死锁语句所用的数据库用户;
Lockwait:死锁的状态,如果有内容表示被死锁。
Status: 状态,active表示被死锁
Machine: 死锁语句所在的机器。
Program: 产生死锁的语句主要来自哪个应用程序。
2)用dba用户执行以下语句,可以查看到被死锁的语句。
select sql_text from v$sql where hash_value in
(select sql_hash_value from v$session where sid in
(select session_id from v$locked_object))
A. kill掉这个死锁的进程:
alter system kill session 'sid,serial#'; (其中sid=l.session_id)
B. 如果还不能解决:(linux)
select pro.spid from v$session ses, v$process pro where ses.sid=XX and ses.paddr=pro.addr;
其中sid用死锁的sid替换:
exit
ps -ef|grep spid
其中spid是这个进程的进程号,kill掉这个Oracle进程。
11.怎么创建一个视图,视图的好处,视图可以控制权限吗?
创建视图语句:create or replace view teacher_view
as
select tname,sal from teacher
创建视图要有视图权限,否则不能创建。
12.ServletAPI中Forward()和Redirect()的区别?
forward:转发---是服务器端行为,携带请求数据,客户端的Url显示不改变,且客户端只发送请求了一次
redirect:重定向----是客户端行为,不携带请求数据,客户端的Url显示改变,且客户端至少发送请求了两次
13.如何查看在weblogic中已经发布的EJB?
可以使用管理控制台,在它的Deployment中可以查看所有已发布的EJB.
在weblogic中开发消息Bean时的persistent与non-persisten的差别:persistent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS服务器依然会将消息在此MDB可用的时候发送过来,而non-persistent方式的消息将被丢弃
14.spring+Hibernate中委托方案怎么配置?
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 配置会话工厂sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!-- 配置hibernate映射文件以及hiberbnate配置文件的参数 -->
<!-- <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> -->
<property name="mappingDirectoryLocations" value="classpath:com/news/pojo"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.connection.autocommit">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<!-- 配置当前事务的Session -->
<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate3.SpringSessionContext</prop>
<prop key="hibernate.javax.persistence.validation.mode">none</prop>
</props>
</property>
</bean>
15.求小王在2017年卖给北京海淀区客户财务软件的总套数?设计出表之间的关系,并写出sql语句。
表一:user(员工表)
字段:uid(员工id,主键) uname(员工姓名) utel(员工联系方式)
表二 district 地区表:
字段:did(地区did、主键) 地区姓名(dname)
表三:sal表
字段:sid(销售标号、主键) syear(时间) scount(数量) sdid(销往地区,外键关联district的主键did) suid(销售人员,关联外键user的主键uid)
select count(0) ‘销售数量’,uname ‘销售人员’
from (sal s left join district d on sdid =did)
left join user u on suid=uid
where d.dname=’海淀区’ and u.uname=’小王’ and s.syear=”2017”;
16.写个程序,实现对新闻的增删改查,新闻包括:新闻标题、种类、内容、附件,不同种类按照Tab展现,点击Tab时必须显示相应类型的新闻列表,点击列表后,弹出页面,显示新闻的项目内容,附件可以下载。
17.你对加班怎么看?能否出差?