java练习题
2018-05-31 本文已影响0人
东方舵手
1. Error与Exception的区别
- Error与Exception类的父类都是throwable类,它们的区别是:
Exception:- 可以是可被控制(checked)或不可控制(unchecked)
- 表示一个由程序员导致的错误
- 应该在应用程序级被处理
Error: - 总是不可控制的(unchecked)
- 经常用来用于表示系统错误或底层资源的错误
2. 垃圾回收机制的优点
优点:
- 不需要考虑内存管理
- 可以有效的防止内存泄漏,有效的利用可使用的内存
- 由于有垃圾回收机制,java中的对象不再有”作用域“的概念,只有对象的引用才有“作用域”
原理:
- 垃圾回收期是作为一个单独的低级别的线程运行,在不可知的情况下对内存堆中已死亡的或者长期没有使用的对象回收,但是不能实时的对某一对象或者所有对象进行垃圾回收。
垃圾回收机制:
- 分代复制垃圾回收
- 标记垃圾后手
- 增量垃圾回收
3. final,finally,finallize的区别
- final 用于声明属性,方法和类,分别表示属性不可改变,方法不可覆盖,类不可继承
- finally 是异常处理语句结构的一部分,表示总是执行
- finalize 是Object类中的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其它资源回收,例如关闭文件等
4. Anonymous Inner Class 是否可以 extends, 是否可以 implements interface?
- 匿名内部类只能继承或者实现一个类或者接口
- 匿名内部类在创造的时候直接继承某个类,或者实现某个接口
5. Static Nested Class 与 Inner Class的区别
- Static Nested Class 是被声明为静态的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化
6. HashMap and HashTable?
- HashMap 是线程非同步的 ,线程不安全的
- HashTable 是线程同步的,线程安全的
- HashMap 可以接受为null的键(key)和值(value),而Hashtable则不行
7. sleep() and wait()?
- sleep()方法属于Thread类,wait()方法属于Object类
- sleep()方法不会释放锁,wait()方法会释放锁
- sleep()方法会自动唤醒,wait()方法需要调用notify唤醒
8. Overload 与 Override的区别
- Overload是重载:方法名称不变,其余的都是可以变更的。它的关系是同一个类,同一个方法名,不同的方法参数或返回值
- Override是重写:方法名称、参数个数,类型,顺序,返回值类型都是必须和父类方法一致的。它的关系是父子关系
- 它们都是java多态性的不同表现
9. 概述jdk 和 jre 的区别
- JDK:是java开发工具包,它包含了JRE和其它的工具
- JRE:是java运行时环境
10. 同步和异步有何异同,在什么情况下分别使用它们?举例说明
- 同步:发送一个请求,
需要等待
,然后再发送下一个请求,避免出现死锁 - 异步:发送一个请求,
不需要等待
,随时可以再发送下一个请求,可以提高效率
例子 - 同步:打电话,需要对待对方接收,才能开始通话
- 异步:发短信,无需等待对方回复,可以随时发送多条短信
11. foward 和 redirect 的区别
- foward:转发,1次请求1次响应,地址栏的地址不变
- redirect:重定向,2次请求2次响应,地址栏的地址变更
12. JSP 和Servlet 有哪些相同点和不同点。它们之间的联系是什么?
- 相同点:它们本质上都是java类
- JSP编译后就成了Servlet(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP中的代码,web容器将JSP的代码编译成JVM能够识别的java类)
- Servlet的应用逻辑实在java文件中,并且完全从表现层中的HTML里分离开来,而JSP的情况是java和HTML可以组合成一个扩展名为.jsp的文件
联系:JSP是Servlet技术的扩展,本质上是Servlet的简易方式
13. Springmvc我想在拦截的方法里面得到从前台传入的参数,怎么得到
- 在形参里面声明这个参数以及类型,但必须名字和传过来的参数名一样
14. SpringMvc中当一个方法想AJAX返回特殊对象,譬如Object,List等,需要做什么处理
- 要加上@ResponseBody
15. 对 java web 中过滤器、拦截器和监听器的理解
- 监听器
listener
:就是对象木起到监听的作用,它能监听到request,session,application的初始化和属性的变化 - 过滤器
filter
:就是对请求起到过滤的作用,它在监听器之后,作用在servlet之前,对请求进行过滤 - 拦截器
interceptor
:就是对请求和返回进行拦截,它作用在servlet的内部
16. 抽象类 和 接口 有什么异同?
相同点
- 抽象类和接口都不能被实例化,但可以定义抽象类和接口类型的引用
不同点 - 接口支持多继承;抽象类不能实现多继承
- 抽象类中可以定义构造器,可以有抽象方法和具体的方法。而接口中不能定义构造器,接口中的方法全都时抽象方法
- 抽象类中的成员可以是private、默认、protected 、 public de ,而接口中的成员全都是public的。抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。
17. String str="1"; System.outprintln(str+1);
的打印结果时什么?
- 11;
18. 写出事物的四个隔离级别,和事物的四个特性
- 四个隔离级别
- Read Uncommitted : (脏读)读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。
- Read Committed : (不可重复读) 读提交,顾名思义,就是一个事务要等另一个事务提交后才能读取数据。
- Repeatable Read : (重复读)重复读,就是在开始读取数据(事务开启)时,不再允许修改操作。
- Serializable : 序列化 ,是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。
19. detele 与 truncate 的区别
- Delete 语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事物,记录在日志中保存,可以进行回滚操作。
- Truncate 是一次性的从表中删除所有的数据,操作不会作为事物记录在日志中,不能回滚。
- Drop 将所有的控件全部释放掉,删除整个表(结构和数据)