java综合面试题

<div class="iteye-blog-content-contain" style="font-size: 14px">

1.面向对象的特征;

2.java集合框架的uml图
3.作用域public,protected,默认的private
4.java序列化
5 override与overload
6 继承类执行顺序结果
7 抽象类与接口
8 jvm原理
9 说说一下final与static  finally  finalize
10 java中实现比较需要什么接口
11 讲一下反射
12 java中如何实现多态
13 string与stringbuffter StringBuilder
14 说出ArrayList,Vector, LinkedList 的存储性能和特性HashMap 和Hashtable的区别
15 xml的解析方式
16 、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
17、多线程有几种实现方法,都是什么?如何同步
18  线程池ExecutorService
19  JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally 分别代
     表什么意义?在try块中可以抛出异常吗? 异常类型?
20 局部变量使用前必须初始化
21  可变与不可变 传值与传引用
22 得到Class的三种方式是什么?
23 socket与udp
24 内存泄露 有一个对象你在程序已经不再使用,但是无法被垃圾回收站回收,这种现象就是内存泄露.
25 如何读取一个大文件如4GB文件
26 super与this


27 提交方式get与post
   get是从服务器上获取数据,post是向服务器传送数据。get有长度限制,post没有。get安全性低,post安全性高。
28 九大对象 7大动作  3大指令 4大作用域,Request对象的主要方法
   request,response,session,application,pageContext,page,config,out,exception。
   forward,setProperty,getProperty,plugin,param,useBean ,include
   request,ression,application,page
   page,include,taglib.
   Request的主要方法:setAttribute,getAttribute,getParamter,getMethod,getParameterNames,getServletPath,getReqeustURI
29 服务端跳转的两种方式的区别
forward:客户端浏览器地址不会发生改变,不会丢失request作用域的值。
sendRedirect是客户端重定向可以跳转任意资源,浏览器地址会发生改变,使用它将丢失request作用域的值。
 
30 servlet程序的基本结构
public class ServletName extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
}
31 servlet生命周期
 加载并实例化servlet,容器第一次初始化init方法,根据请求的方式不同会调用它的doGet,doPost方法,如果你重写了,没有调用父类功能,
 销毁调用destroy方法

32 jsp与servlet的联系与区别
      1 jsp编译后就是servlet  在本质上就是servlet  jsp能做到servlet肯定也能做到
      2  JSP是html中嵌套java代码,servlet是java代码中可以输出html代码
      3 jsp擅长做页面  servlet 擅长写业务逻辑
33 session与cookie
   session 它存储在服务器上,关闭浏览器,设置过期时间,调用invalidate方法都可以使session无效。
   cookie: 存储在客户端,不安全,生命周期:可以设置存活期如一年,浏览器可禁用cookie
34 四种会话跟踪技术
  cookie,session,url重写,隐藏表单域
   若浏览器关闭了cookie,我们可以向服务端发送sessionId的方式【url重写或隐藏表单域】得到客户身份。
35 过滤器与监听器
过滤器一般用来过滤字符编码,url拦截。
监听器主要监听request,session,application的创建销毁以及属性的变化。
Spring在启动服务器的时候,使用监听器来监听创建spring容器的变化,并放入servlet上下文中供后续使用。
36 servlet线程安全问题
减少全局变量使用,使用sychronized同步机制使线程同步。
37 动态包含与静态包含的区别
动态包含是jsp动作<jsp:include>,而静态包含是jsp指令inculde
动态包含可以传递参数,随时检查被包含页面的变化。
动态包含是单独编译,而静态包含是统一编译的。

38 struts1优缺点,为什么使用struts1
优点:分层架构,可重用可扩展行好,丰富的标签库。
缺点:太过于依赖servlet api 不利于测试;配置太过于复杂;太过于依赖web容器,改动配置文件,就要重启服务。
常用标签:<logic:persent>,<logic:iterator>,<html:form>,<bean:message key>
39 struts1 核心组件
ActionServlet,ActionForm,ActionMapping,ActionForward,Action,DispatchAction
40 struts1请求处理流程 工作原理
客户端向服务器发送请求,ActionServlet拦截url,解析struts-config.xml文件,匹配url路径找到相应的Action类
进行一系列的数据类型转换,数据校验等工作,调用业务类处理业务逻辑,绑定数据到request作用域,ActionForward转到页面显示数据。

struts1配置文件主要有<strust-config/>:
1.<form-beans>
    <form-bean name="form" type="form的类路径"/>
</form-beans>
2.<action-mappings>
                                              对应form-bean的name  可指定的方法
    <action path="/student" type="Action类路径" name="form" parameter="method">
        <forward name="add" path="/add.jsp"></forward>
    </action>
</action-mappings>
3.国际化:在struts-config.xml里<message-resources parameter="china">指定国际化资源文件的名字
4.框架校验:<plug-in className=“org.apache.struts.validator.ValidatorPlugIn”>
        <set-property value="/WEB-INF/validation.xml,/WEB-INF/validator-rules.xml"/>
    </plug-in>
41 struts1如何实现mvc
42 DispatchAction与动态form
DispatchAction是Action的一个子类,它可以通过在struts-config.xml里配置parmeter来指定调用某个具体的方法。
DynaActionForm是在struts-config.xml里配置来实现的。
<form-property name="属性" type="数据类型">,后台通过get可以取出相应的值。
43 项目中碰到了什么问题
表单重复提交,可以通过struts1的令牌机制来解决。241316
乱码问题
44 struts2与struts1的联系与区别 为什么要用struts2
核心控制器改成了过滤器filterDispather
struts1严重依赖于servlet api
struts1的业务控制器必须要求继承Action或者DispatchAction。Struts2只要求业务控制器提供一个可以返回string类型的execute方法的pojo类
struts1的类型转换是单向的,而struts2的类型转换的双向的。
struts2有针对某个方法的框架校验。
struts1是单例,存在线程不安全问题,struts2是原型(每个请求产生一个实例)
struts1只支持jstl表达式,struts2即支持jstl也支持ognl表达式。
struts1只支持jsp视图,struts2支持多种视图。jsp,freemaker,velocity.
45 struts2的请求处理流程
客户端向服务器发送请求,经过一系列过滤器,到达核心过滤器filterDispather.
FilterDispather会根据ActionMapper来决定这个请求是否要调用Action。
如果要调用Action,FilterDispatcher会把请求处理权交给ActionProxy。
ActionProxy通过解析struts.xml文件找到要调用的Action类。
ActionProxy创建一个ActionInvocation的实例,调用真正的Action.处理一系列拦截器
处理业务,绑定数据,ActionInvocation创建result并返回
46 struts2是如何实现mvc的
47 为何继承ActionSupport
实现了国际化,校验。
48 struts2 如何定位action中的方法
感叹号定位法
配置action method指定方法
通配符定位法
49 模型驱动与属性驱动是什么 模型驱动使用时注意什么问题
模型驱动action类实现ModelDriven接口,采用泛型,实现getModel方法。new 实体类、
属性驱动直接在Action类里定义属性,提供get,set方法
50 谈谈struts2 的国际化
在struts.xml里指定<constant name="struts.custom.i18n.resources" value="aaa">国际化资源文件名
Struts2有全局,包,Action范围的国际化。
使用i18n拦截器拦截参数为request_locale,把参数转换为语言环境Locale,放入session作用域中.[访问Action才有效]
51 ognl是什么。你在项目中如何使用它
ognl是一种表达式。它有两个地方放值:根对象和ognl上下文(map)
Struts2的底层是使用ognl来封装数据的。
项目中使用
#获取ognl上下文,构造集合和过滤集合。
$获取国际化信息,在struts.xml里传递参数
%计算表达式的值
52 strust2如何访问servlet  api
通过ActionContext可以访问servlet api 它的子类ServletActionContext可以拿到HttpServletRequest...
通过实现相关接口:ServletRequestAware...,通过set注入拿到HttpServletRequest....
53 什么是拦截器 说说struts2用拦截器来干什么 说出6个拦截器来  如何编写自定义拦截器
拦截器就是在不改变源代码的基础上,在它的前后加上非业务行功能。
struts2的拦截器的作用就是做验证、国际化、和获取参数等作用
数据类型转换,数据封装,校验,国际化,模型驱动,异常
自定义拦截器:
继承AbstractInterceptor,实现Intercept方法。有一个参数ActionInvocation,可以调用它的invoke执行下一个拦截器。
【登陆:获取ActionContext---session 进行判断是否要调用invoke方法】
在struts.xml里配置,重新引入struts2默认的拦截器堆栈defaultStack


Struts2的主要配置:
<struts>
        ---指定国际化资源文件
    <constant name="struts.custom.i18n.resources" value="aaa"></constant>

    <package name="lxit" extends="struts-default">
       
          <interceptors>
            ---自定义拦截器
            <interceptor  name="lxit1"  class="自定义拦截器类路径"></interceptor>
            <interceptor-stack name="lxit">
                <interceptor-ref name="lxit1"></interceptor-ref>
            </interceptor-stack>
          </interceptors>


          -----Action类  使用通配符
          <action name="student-*" class=“Action类路径” method="{1}">
            -----引入默认的拦截器栈
            <interceptor-ref name="defaultStack"></interceptor-ref>
            ---要返回的jsp页面
            <result name="input">/{1}.jsp</result>
          </action>
    </package>
</struts>

54 项目中遇到什么问题、
表单重复提交,使用表单重复提交拦截器解决,内部转发机制造成的。
实现ModelDriven接口时要使用泛型,new实体类
55 actioncontext是用来干什么的
访问servlet api的
56 struts2 源码与设计模式
原型模式,责任链模式,代理模式,命令模式。
57 两个标签
strust2的文件上传:
第一步:在WEB-INF/lib下加入commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar。这两个文件可以从http://commons.apache.org/下载。
第二步:把form表单的enctype属性设置为:“multipart/form-data“
第三步:将我们的上传Action配置到struts.xml中
58 spring ioc di ,ioc怎么用,有什么好处
ioc:调用者不再创建被调用者的实例,把创建实例的工作交给spring容器来完成。
di:容器创建好实例后再注入调用者。

在项目中使用:
我们使用spring的ioc创建web层,service层,dao层实例,在application.xml文件里配置或使用注解的方式,注入各层实例。
web层注入dao层实例,dao层注入数据源等,使各层实现松耦合。无需硬编码。
59 依赖注入的方式
构造注入和set注入(先创自己的实例再调用set创建依赖对象的实例)。
它们两者的区别就是创建实例的先后顺序关系。
当创建实例的工作比较复杂,我们最好使用set注入,可以提高性能。
60 讲讲pring的容器
spring容器是一个大大的工厂,可以创建实例和管理bean之间的依赖关系。
spring提供了一个顶级接口BeanFactory,用的有3种创建容器的类 XmlBeanFactory FileSystemXmlApplicationContext ClassPathXmlApplicationContext。
ApplicationContext是BeanFactory的增强版容器,增加了国际化,资源定位和事件。
61 ssh  strut1,Struts2+spring;ibatis,mybatis,Hibernate+Spring如何整合 有什么配置文件

62 什么是aop 说说AOP的一些概念概念和术语 aop好处 项目中怎么用的
aop就是面向切面编程。在不改变目标类的源代码的基础上,加上非业务性功能,事务,日志,权限。
aop是使用cglib和jdk动态代理技术来实现的。给目标类加入功能,要通过给目标类生成代理类,加入功能的代码写在通知类里(前置通知,后置通知,环绕通知,最终通知,异常通知)
给代理类注入通知类和目标类即可。想更细的切入功能:使用aspectj切入点语法。
在配置文件里主要配置:目标类,通知类,代理类(BeanNameAutoProxyCreator)。
<bean id="a" class="目标类"/>
<bean id="advice" class="自定义的通知类"/>
                            ---自动生成事务代理的方式
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
    <property>
     <list>
         ---注入目标类
       <value>a</value>
     </list>
    </property>

    <property>
      <list>
         ---注入通知类
       <value>advice</value>
     </list>
    </property>
</bean>
63 讲讲spring中的事务,如何支持事务的,springmvc作为控制器层需要注意什么
spring中的事务: 1 编程型事务 2 声明型事务
事务主要配置:
注解版:
      1 定义事务管理器
      2 使用tx标签注解驱动引入事务管理,<tx:annotation-driven transaction-magaer="">
      3 在你需要事务的类或者方法上加上@transactional注解
 spring 支持事务的原理:代理类,通知类,目标类
        代理类 事务代理类 TransactionProxyFactroyBean ,注入事务管理器,目标类。
    该类内部持有有事务拦截器TransactionInterceptor作为一个环绕通知类。
        事务管理器:不同平台下有不同的事务管理器 dataSource事务管理器   Hibernate事务管理器
64 dao是什么及其优点,DAO模式的结构 四个组件,dao的实现类常采用的技术有
DAO:data access object 数据访问对象
DAO它是一种模式,主要负责数据的操作。
优点:
业务层与持久层分离,使数据与操作更为清晰。
数据访问独立到了一层,修改具体实现类,不会影响系统架构运行。
四个组件:dao接口,dao实现类,pojo值对象,实例对象定位(spring注入,工厂)
采用的技术:jdbc,spring dao,orm框架
65 jdbc 步骤手写,3个statement
链接oracle:
    Class.forName("oracle.jdbc.driver.OracleDriver");//加载驱动
    Connection connection=null;//获取链接(url,usename,password)
    connection=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/数据库","用户名","密码");
    String sql="update person set name=?,age=? where id=?";
    Statement statement=connection.createStatement();//创建statement
    statement.execute(sql);//执行sql语句
    statement.close();//关闭statement
    connection.close();//关闭链接
3个statement:
Statement:
执行一次查询并返回结果的情形,效率高于PreparedStatement。
PreparedStatement是预编译的,可进行参数替换,
在执行可变参数的一条SQL时,PreparedStatement比statement的效率高,安全性好
CallableStatement执行存储过程的。它提供了对输出和输入/输出参数的支持。
66 spring dao
spring使用模板对jdbc进行了封装。封装了statement的创建 关闭资源 异常的捕获 结果集转化成java对象等
spring还提供了jdbcTemplate模板类及命名参数模板类。给模板类注入数据源,即可使用模板类的api操作数据库关系。

67 orm框架  什么是orm orm比较:
ORM即对象关系映射,是为了解决对象与关系数据库的互不匹配的现象。
主要的orm框架包括:ibatis,mybatis,hibernate
ORM比较:它们都对jdbc进行了封装,同时为了提高效率加入了缓存与懒加载。
68 hibernate与ibatis(mybatis)比较
hibernate全自动,ibatis是半自动
hibernate自动生成sql,ibatis需要我们手动编写sql,利于sql优化。
hibernate跨数据库,方便数据库移植
69 ibatis与mybatis比较
mybaits是ibatis3.0
70 hibernate load与get  list() 和 iterate() 区别
71 什么是懒加载 懒加载用什么技术实现  如何解决session关闭导致的懒加载问题 解决的方案有缺点吗
72 缓存优点与缺点,说说Hibernate缓存,Mybatis缓存,Ibatis缓存
73 使用缓存考虑的事项,缓存中配置一些什么东西,hibernate的缓存与mybatis缓存的区别
74 如何开发一对多的案例(Mybatis和Hibernate) 过程以及如何配置
75 hibernate 实体的3种状态
76 hibernate 的原理步骤 核心类
77 hibernate 如何 大数据处理 性能优化 有什么经验,最佳实践
78 hibenrate 查询方式  离线查询
79 hibernate抓取策略  指的是如何查询关联数据
80 ajax请求处理步骤,优缺点,缓存
81 dwr是ajax框架,说说项目中如何使用的,dwr3.0增加推技术
82 js 定时函数
83 js的三种弹出框
84 js  常用函数
85 jquery常用函数api
86 jquery在项目中一般怎么应用,优点
87 jquery 的选择器
88 jQuery对ajax的封装常用的AJAX方法
89 dom对象与jquery对象的转换

90 应用服务器有那些?
BEA WebLogic Server,Oracle9i Application Server,jBoss,Tomcat
91 EJB的几种类型
会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean
会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种
实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种
92 bean 实例的生命周期
对于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在缓冲池管理,而对于Entity Bean和Statefull Session Bean存在Cache管理,通常包含创建实例,设置上下文、创建EJB Object(create)、业务方法调用、remove等过程,对于存在缓冲池管理的Bean,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache管理的Bean则通过激活和去激活机制保持Bean的状态并限制内存中实例数量。

93 数据库的内连接 外连接 能写出执行结果
94 存储过程及其优点,项目中哪里使用了存储过程 hibenrate,mybatis 如何调用存储过程
95 存储过程与触发器区别,行级触发器与语句级触发器(表级触发)区别是什么
96 游标的使用过程
97 oracle常用函数,如nvl,nvl2,decode,递归函数
98 oracle 中的伪列 rowid与rownum 通用三层分页法
99 查询记录如何排序 如按姓名 性别如何排序
100 如何删除重复记录  name与sex相同
101 如何查询两表中相同的数据 name与sex相同
102 查询a表中有b表中没有的数据
103 大数据量操作,删除和更新
104 数据库三范式
105 oracle 索引类型,分区是干什么的,它们的优缺点。
106 oracle体系结构
107 oracle中如何解决并发问题
108 plsql是什么 ,写过吗,它的语句块结构是什么样的
109 怎么进行数据备份 热备份与冷备份
110 oracle 的数据库对象序列 同义词 数据库链接
111 oralce优化
112 truncate delete区别

</div>

猜你喜欢

转载自hejiaoping.iteye.com/blog/2066446