java常见的面试题整理


一、JAVASE第一阶段面试题整理(30~50题)
    1、java的基本数据类型
            int 普通整型
           float 浮点型
          char 字符型
          short 短整型
          byte 字节型
          long 长整型
          double 双精度
          boolean 布尔型
    2、java的util(工具)包(list/set/map)
          set   无须    不重复
          list    有序    可重复
          map   map接口是以键值对的方式存储对象
    3. IO文件操作(读写)Reader...  Writer......  (一行)

    4. 进程和线程有什么区别?
    一个进程可以有多个线程,当一个进程有多个不同的线程运行时,叫做并发。
    5. OOP编程(OOA分析,OOD设计) => AOP 切面编程
   OOP编程即面向对象程序编程方法,包括封装(即将数据和操作数据的方法绑定在起来,只通过定义的接口访问),继承(即从原来已有类的基础上构建新类的过     
    程),抽象(即将一类事物对象的共同特征总结出来构造一个类的过程),多态(即允许不同的子类对同一消息做出不同的相应)
      OOA面对对象分析方法
      OOD面对对象设计方法
    6.   堆和栈的区别
        堆内存用来存放由new创建的对象和数组。 
        在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配 。   
    7. java的回收 System.gc()
       GC 是什么 ? 为什么要有 GC? GC 是垃圾收集的意思( Gabage Collection , 内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃, Java 提供的 GC 功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的, Java 语言没有提供释放已分配内存的显示操作方法。
    8. 方法的重写和重载方法
          1.重写必须继承,重载不用。
       2.重写的方法名,参数数目相同,参数类型兼容,重载的方法名相同,参数列表不同。
       3.重写的方法修饰符大于等于父类的方法,重载和修饰符无关。
       4.重写不可以抛出父类没有抛出的一般异常,可以抛出运行时异常
    9、接口和抽象类的区别  (接口化编程)
1.抽象类 和 接口 都是用来抽象具体对象的. 但是接口的抽象级别最高
2.抽象类可以有具体的方法 和属性,  接口只能有抽象方法和不可变常量
3.抽象类主要用来抽象类别,接口主要用来抽象功能.
4抽象类中且不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的。
   10、异常处理(说出5个常见的异常,项目中的异常)
    空指针     数学运算异常   包冲突     方法的参数错误    没有 访问权限
   11、jdk1.5和jdk1.6和jdk1.7
   12、排序方法有哪些,请举例说明。
         选择排序、插入排序、希尔排序
        冒泡排序   归并排序、堆排序

三、JAVAWEB第二阶段面试题整理(30~50题)
1、JSP的九大对象
request           请求对象             类型 javax.servlet.ServletRequest        作用域 Request

response          响应对象              类型 javax.servlet.SrvletResponse        作用域 Page

pageContext       页面上下文对象        类型 javax.servlet.jsp.PageContext       作用域 Page

session           会话对象              类型 javax.servlet.http.HttpSession      作用域 Session

application       应用程序对象          类型 javax.servlet.ServletContext        作用域 Application

out               输出对象              类型 javax.servlet.jsp.JspWriter         作用域 Page

config            配置对象              类型 javax.servlet.ServletConfig         作用域 Page

page              页面对象              类型 javax.lang.Object                   作用域 Page

exception         例外对象              类型 javax.lang.Throwable                作用域 page

“exception” 对象则代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage="true "%>”的JSP文件中使用。

何为作用域

  先让我们看看效果:

  大概流程是这样的,我们访问index.jsp的时候,分别对pageContext, request, session,application四个作用域中的变量进行累加。(当然先判断这个变量是不是存在,如果变量不存在,则要把变量初始化成1)。计算完成后就从index.jsp执行forward跳转到test.jsp。在test.jsp里再进行一次累加,然后显示出这四个整数来。

  从显示的结果来看,我们可以直观的得出结论:

  page里的变量没法从index.jsp传递到test.jsp。只要页面跳转了,它们就不见了。

  request里的变量可以跨越forward前后的两页。但是只要刷新页面,它们就重新计算了。

  session和application里的变量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。

    application里的变量一直在累加,除非你重启tomcat,否则它会一直变大。

作用域规定的是变量的有效期限

  如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。

  从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。

  如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。

  所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。

  如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。

  所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,就可以在当前会话的所有请求里使用。

  如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。

  整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”,是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。

  application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。

  与上述三个不同的是,application里的变量可以被所有用户共用。如果用户甲的操作修改了application中的变量,用户乙访问时得到的是修改后的值。这在其他scope中都是不会发生的,page, request,session都是完全隔离的,无论如何修改都不会影响其他人的数据。

2、SERVELT的生命周期(web.xml的配置)
     加载--->实例化--->服务--->销毁
3、怎么创建一个SERVELT
4  JSTL+EL是什么怎么使用
5 过滤器怎么配置,有什么用,项目中哪里使用到,启到什么作用
Web服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,
6   分页技术怎么使用
7   web服务
8  JDBC 和jdbc的封装 
9 单例模式的使用 (代码)  jdbc.properties
10 HttpReqeust的常见方法
11 转发和重定向的使用。代码
   转发:一次请求,一次响应。地址栏的url不会改变。在 服务器端 执行,所以必须在同一台服务器上。转发速度快。
    重定向:两次请求。地址栏的url会随之改变为定向后的那个url。在客户端执行,所以可以在不同的服务器上。重定向速度慢。
  一去一回,地址栏不发生改变,可代参。
  两去两回,地址栏改变,不带参。
12 web服务器的配置  tomcat  jboss 
13  session application域对象的区别和使用
14 session 和Cookie的区别
    1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
   2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
       考虑到安全应当使用session。
   3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
       考虑到减轻服务器性能方面,应当使用COOKIE。
   4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
15  MVC设计模式
M:model 应用的 业务逻辑 (通过JavaBean,EJB组件实现)
V:View 应用的表示面(由JSP页面产生)
C:Controller 提供应用的处理过程控制(一般是一个Servlet),
通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。
这些组件可以进行交互和重用。
16  JNDI
17 get和post怎么传值的
    请求头   请求体
18  事务的特性
19 为什么实现序列化,用什么 ————Serializable———— 接口实现
20  PerparedStatement  和 Statement 的区别


四、JAVAEE第三阶段面试题整理SSH(30~50题)
1 struts2的核心
1、客户端发出请求;
2、 服务器端 执行 Struts2 拦截;
3、调用合适的Action处理请求;
4、服务器返回结果;
5、展示到相应页面
2 struts2  action的生命周期     
3  servlet + action + controller 的区别
4  action的三种提交方式
5 struts2和springmvc的区别
  由于Struts2需要针对每个Request进行封装,把Request,Session等Servlet生命周期的变量封装成一个一个Map,供给每个Action使  
  用,并保证 线程安全 。所以在原则上,是比较耗费内存的。
struts2 是类级别的拦截, 一个类对应一个request上下文,
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,
springMVC效率高于 struts2
5 hibernate关联关系
  one-to-one  one-to-many 
  many-to-one  many-to-many
60.0 hibernate get和load,二级的缓存 , 数据的三种状态(例子)
7 hibernate  lazy cascode inverse 的作用
8 ORM的框架有哪些,hibernate和mybatis的区别
  Entity EJB、Hibernate、IBATIS、TopLink、OJB

  mybatis是把 sql语句 与java代码分离了... sql语句 xml文件 配置的...
hibernate是 ORM框架 ,它对jdbc进行了封装,在分层结构中处于持久化层,
它能建立 面向对象 的域模型和关系数据模型之间的映射.
它大大简化了dao层的编码工作
9  hibernate和JDBC
10 spring  DI  AOP、
  依赖注入和面向切面
11  spring 怎么装配bean文件
12  spring   怎么配置  singleton  prototype
13 spring   事务装配  日志装配
14  springMVC  配置方式
   
15  springMVC  注解有哪些
  @Controller    @RequestMapping    @PathVariable     @RequestParam
   @RequestBody   @ResponseBody
16 springMVC 前缀和后缀和什么作用
17  springMVC  怎么访问域对象
18   dataSoure    C3PO  DBCP   JNDI  池化连接
19 什么是spring,它有什么优点?
能有效的组织中间层对象,实现针对性的接口编程。 简化访问数据库时的例外处理
消除过多的Singleton的使用,



五、JAVAEE第三阶段面试题整理SSM(30~50题)

Struts控制页面跳转、spring管理映射、hibernate简化数据库操作



六、企业面试(实施,测试、需求分析师)((30~50题)

怎么样生成验证码(代码题)





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值