面试问答--------java

24 篇文章 0 订阅

1.super()与this()的区别?
This():当前类的对象,super父类对象
Super():在子类访问父类的成员和行为,必须受类继承规则的约束

2.什么是java序列化?
序列化是为了解决在对对象流进行读写操作时所引发的问题。

3.排序都有哪几种方法?
排序的方法有:插入排序(直接插入排序、希尔排序),
交换排序(冒泡排序、快速排序),
选择排序(直接选择排序、堆排序),
归并排序,
分配排序(箱排序、基数排序)

4.Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
重写Override,子类覆盖父类的方法,将子类传与父类的引用调用的还是子类的方法。
重载Overloading 一个类多个方法,名称相同,参数个数类型不同
两者都是Java多态性的不同表现。
Overloaded的方法是可以改变返回值的类型

5.抽象类和接口的区别?
(1)接口可以被多重implements,抽象类只能被单一extends
(2)接口只有定义,抽象类可以有定义和实现
(3)接口的字段定义默认为:public static final,抽象类字段默认是"friendly"
当功能需要累积时用抽象类,不需要累积时用接口。

6.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。
String a=new String(“中”.getBytes(“gb2312”),“iso-8859-1”);

7.说出一些常用的类,包,接口,请各举5个
常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer
常用的包:java.lang java.awt java.io java.util java.sql javax.xml
常用的接口: List Map Document NodeList EjbObject EjbHome SessionBean EntityBean

8.java中实现多态的机制是什么?
静态的多态:方法名相同,参数个数或类型不相同。(overloading)
动态的多态: 子类覆盖父类的方法,将子类的实例传与父类的引用调用的是子类的方法
实现接口的实例传与接口的引用调用的实现类的方法。

9.静态变量和实例变量的区别?
static i = 10; //常量
class A a; a.i =10;//可变
静态方法可以调用静态变量。
实现方法可以调用静态变量、实例变量
static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问.

10.JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
Try:执行部分,产生异常
Catch:捕捉异常
Finally:不管有没有异常都执行
Throws:在方法声明处声明要抛出的异常,调用者必须对其进行处理。
Throw:抛出一个异常
在try中可以抛出异常,一般与声明的异常相同。
自定义异常要继承于Exception或Exception的子类

11.String and StringBuffer的区别?
String:长度给定不可变,当多个字符串联合时要先转为StringBuffer,再联合,速度慢。
StringBuffer:长度可变,可以将多个字符串值直接联合,效率高

12.说出ArrayList,Vector, LinkedList的存储性能和特性HashMap和Hashtable的区别
ArrayList Vector:以数组的方式存储,增、删慢,查、改快
ArrayList:线程不安全,速度快,基于索引的数据接口
Vector:线程安全,速度慢(synchoronized)
LikedList: 以单链表的方式存储,增、删快,查、改慢,以元素列表的形式存储它的数据
HashMap与Hashtable都实现的Map接口,HashTable线程安全,HashMap线程不安全。

13.List, Set, Map是否继承自Collection接口?
List,set继承于Collection
Map没有继承于Collection,其相对是独立的。
属于Collection类型的对象,可以通过构造函数将一个集合构造成另外一个集合

14.面向对象的特征有哪些方面?
1.抽象:
找共性,将共有的属性、方法放到父类中
2.继承:
子类继承于父类,具有父类的所有属性与方法,可以重用,也可以覆盖。
3.封装:
一个类包括多个属性及方法。
4. 多态性:
动态:
静态:

16.描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。
Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。
存储的数据量大,安全性高。占用服务端的内存资源。

23.介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)?
Map
├Hashtable
├HashMap
└WeakHashMap

			Collection 
			├List 
			│├LinkedList 
			│├ArrayList 
			│└Vector 
			│ └Stack 
			└Set 
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements) 
Map提供key到value的映射

24.final, finally, finalize的区别?
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.
finally—再异常处理时提供 finally 块来执行任何清除操作
finalize—方法名,Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。

15.spring中的核心类有那些,各有什么作用?
BeanFactory:产生一个新的实例,可以实现单例模式
BeanWrapper:提供统一的get及set方法

ApplicationContext:提供框架的实现,包括BeanFactory的所有功能

16.依赖注入的方式有几种,各是什么?
Setter
Interface
constructor 构造器

17.什么是aop,aop的作用是什么?
Oop:纵向的业务
Aop:oop的一个横向的服务,是对oop进一步的补充,提供安全、事务、日志等的集中式处理,
相关的装备before、around、after exception

18.Spring和Struts的区别?
strusts:是一种基于MVC模式的一个web层的处理。
Spring:提供了通用的服务,ioc/di aop,关心的不仅仅web层,应当j2ee整体的一个服务,
可以很容易融合不同的技术struts hibernate ibatis ejb remote springJDBC springMVC

19.spring 工作流程 核心原理
答:Spring的核心就在于他的IOC(控制反转)和AOP(面向切面编程),
IOC就是用来管理所有的业务对象,AOP也就是可以在调用的方法前后可以附加另外的行为

20.什么是AJAX?
Ajax是异步JavaScript和XML,有机地利用了一系列相关的技术。
Ajax的核心是以JavaScript,css,DOM,xml运用XMLHttpRequest对象进行客户端与服务器间的数据传输。
实现局部刷新功能和将状态保存在客户端,从而常用资源可以有效被缓存和利用,可以由客户端处理一些服务器端处理的功能

21.简述三层开发
MVC是Model-View-Controller的简写。
“Model” 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现)
“View” 是应用的表示面(由JSP页面产生)
“Controller” 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,
处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用

22.谈谈你对Spring的理解
1.Spring实现了工厂模式的工厂类(在这里有必要解释清楚什么是工厂模式),这个类名为BeanFactory(实际上是一个接口),
在程序中通常BeanFactory的子类ApplicationContext。实例化对象模式,用工厂方法代替new操作的一种模式
2.Spring提供了对IOC良好支持,IOC是一种编程思想,是一种架构艺术,利用这种思想可以很好地实现模块之间的解耦。

24.Uml的概念是什么?主要的工具是什么
Uml:统一建模语言
工具:Rational Rose

25.#{}和${}的区别是什么?
#{}是sql的参数占位符
一般显示占位符,一般用来防止注入
${},是Properties文件中的变量占位符
则不是

26.这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?
Dao接口里的方法,是不能重载的,因为是全限名+方法名的保存和寻找策略。
Dao接口的工作原理是JDK动态代理,Mybatis运行时会使用JDK动态代理为Dao接口生成代理proxy对象,
代理对象proxy会拦截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回。

27.Spring有哪些优点?
控制反转(IOC):Spring使用控制反转技术实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象。
面向切面编程(AOP): Spring支持面向切面编程,同时把应用的业务逻辑与系统的服务分离开来。
容器:Spring包含并管理应用程序对象的配置及生命周期
MVC框架:Spring的web框架是一个设计优良的web MVC框架,很好的取代了一些web框架。
事务管理:Spring对下至本地业务上至全局业务(JAT)提供了统一的事务管理接口。
异常处理:Spring提供一个方便的API将特定技术的异常(由JDBC, Hibernate, 或JDO抛出)转化为一致的、Unchecked异常。

28.解释Spring MVC模块
Spring提供MVC框架构建web应用程序。
Spring可以很轻松的同其他MVC框架结合,但Spring的MVC是个更好的选择,因为它通过控制反转将控制逻辑和业务对象完全分离开来。

29.Spring IoC容器是什么?
Spring IOC负责创建对象、管理对象(通过依赖注入)、整合对象、配置对象以及管理这些对象的生命周期

30.SpringMVC与Struts2的主要区别?
①springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。
②springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例),
struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
③Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request对象内容进行解析成方法形参,
将响应数据和页面封装成ModelAndView对象,最后又将模型数据通过request对象传输到页面。 Jsp视图解析器默认使用jstl。

31.@RequestMapping注解用在类上面有什么作用
用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径

32.讲下SpringMvc的执行流程
系统启动的时候根据配置文件创建spring的容器, 首先是发送http请求到核心控制器disPatherServlet,
spring容器通过映射器去寻找业务控制器,
使用适配器找到相应的业务类,在进业务类时进行数据封装,在封装前可能会涉及到类型转换,
执行完业务类后使用ModelAndView进行视图转发,数据放在model中,用map传递数据进行页面显示。

35.工厂模式
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,
通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。
首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。
当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。

36.拦截器是基于JAVA反射机制的,而过滤器是基于函数回调的

37.springMVC的工作原理:所有请求都会发送给一个叫DispatcherServlet前端控制器,它的作用就是负责接受request并将request转发给HandlerMapping
组件并从中找到处理请求的Controller~Controller处理request,并返回ModerAndView对象,视图对象并返回对应的视图给客户端.

38.JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么。
1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)
2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.
3.Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,
由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。
联系:JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,
Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于视图,Servlet主要用于控制逻辑。

39.Hibernate 有哪 5 个核心接口?
1.Configuration 接口:配置 hibernate,根据其启动 hibernate,创建SessionFactory 对象
2.SessionFactory 接口:初始化 Hibernate,充当数据存储源的代理,创建
session 对象,sessionFactory 是线程安全的,意味着它的同一个实例可以被应
用的多个线程共享,是重量级、二级缓存;
3.Session 接口:负责保存、更新、删除、加载和查询对象,是线程不安全的 ,
避免多个线程共享同一个 session,是轻量级、一级缓存;
4.Transaction 接口:管理事务;
5.Query 和 Criteria 接口:执行数据库的查询。

40.struts2的type类型:
1、dispatcher默认的类型,相当于servlet的foward,服务器端跳转
2.2、redirect、redirect-action页面重定向,客户端跳转;前者用于跳转到jsp页面,后者用于跳转到action
3、chain将请求转发到一个action
4.json

41.java中sleep和wait的区别
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。
sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。
在调用sleep()方法的过程中,线程不会释放对象锁。
而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备

42、forward 和redirect的区别
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,
浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,
所以session,request参数都可以获取。

431.Struts2的流程
首先struts2的核心是 一个拦截器,我们输入一个url首先struts2根据url进行匹配,如果符合则交给 struts2进行处理,
负责按照 web容器默认进行处理。然后开根据 url找到struts2.config文件所对应的 namespace ,如果符合则继续截取url找到相对应的action,
最后执行action返回result,然后根据result专跳相应的页面。

44.事务,什么是事务,为何用事务
保证数据的一致性和完整性.

45.spring的AOP面向切面编程,spring采用它是想把原有的方法再给他功能增强,aop采用的是代理机制,如果的它的目标对象是
实现接口或者是父类的,它是用jdk代理,如果没有实现接口或者父类的话,它采用cglib代理,默认cglib代理.
隔离级别:有只读操作和读写操作
做项目用到c3p0,dbcp连接池,用c3po和数据库之间的连接管理,减低数据库的连接频率

46.反射的原理:Java的反射机制是在编译并不确定是哪个类被加载了,而是在程序运行的时候才加载、探知、自审。使用在编译期并不知道的类。
这样的特点就是反射。

47。线程可以使用synchronized关键。

48…数组(Array)和列表(ArrayList)有什么区别?
Array可以包含基本类型和对象类型,大小是固定的
ArrayList只能包含对象类型,ArrayList的大小是动态变化的。

49.我这个是某个action类以注解方式进行shiro权限认证的时候需要一个代理类去做认证这个事情,如果在配置
文件中没有设置使用cglib代理的话就会出现异常(原因是:实现了接口的类默认使用的是jdk代理+上面说的调用方法的区别),设置之后就无异常了

50.REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。

51.JDBC中statement和prepareStatement它们之间的一个区别
PreparedStatement是预编译的,对于批量处理可以大大提高效率.也叫JDBC存储过程,只编译一次
在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理,执行一条sql就得编译一次

52.单例是什么,为什么要用它
单例的使用主要是在需要保证全局只有一个实例可以被访问的情况,比如系统日志的输出、操作系统的任务管理器等。

53.Struts 的拦截器有什么用,如何配置。
拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,
也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。

54.JSP中动态INCLUDE与静态INCLUDE的区别:
答:动态INCLUDE用jsp:include动作实现
<jsp:include page=“included.jsp” flush=“true” />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面
<%@ include file=“included.htm” %

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小坏蛋至尊宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值