Java面试问题汇总(每天进步一点点)
2018-11-14 本文已影响0人
穿梭在围城
面试问题汇总
1.final、finally、finalize的区别
- final是修饰符:被修饰的类不能被继承,被修饰的方法不能被重写,被修饰的变量只能被赋值一次
- finally是异常处理的重要组成部分:try....catch....finally,不管时候产生或者跑出异常都会执行finally里面的操作,一般我们在其中做释放资源的操作
- finalize:是Object类中的方法,所以说所有都得类都会有这个方法,这个方法主要是在对象被GC机制回收的时候调用,一般也是做释放资源的操作
2.Overload与Override的区别
-
Overload 特点
- 在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int));
- 不能通过访问权限、返回类型、抛出的异常进行重载;
- 方法的异常类型和数目不会对重载造成影响;
- 重载事件通常发生在同一个类中,不同方法之间的现象。
- 存在于同一类中,但是只有虚方法和抽象方法才能被覆写。
-
Override特点
- 覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;
- 覆盖的方法的返回值必须和被覆盖的方法的返回一致;
- 覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
- 方法被定义为final不能被重写。
- 对于继承来说,如果某一方法在父类中是访问权限是private,那么就不能在子类对其进行重写覆盖,如果定义的话,也只是定义了一个新方法,而不会达到重写覆盖的效果。(通常存在于父类和子类之间。)
3.什么是事物及其特性
- 概念:事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。
- 特性:原子性、隔离型、持久性、一致性
4.事物会出现的问题(并发问题)
- 脏读:一个事物读到了另外一个事物未提交的数据(我还没提交你就读到了)
- 不可重复读:一个事物读到了另外一个事物已经提交Update的数据(我还没修改完,你就读了)
- 幻读(虚读):一个事物读到另外一个事物已经提交的增删的数据(我对整个表内容操作时,你就增删数据)
5.事物的隔离级别
- 读未提交:所有问题均有可能发生
- 读已提交:避免脏读(oracle默认)
- 不可重复读:避免脏读和不课重复读(mysql默认)
- 串行化:避免所有问题
6.数据库的控制
- 事物控制来源于关系型数据库
- Mysql的控制:
- 存储引擎:innoDB(支持事物)
- 存储引擎:MyIsam(不支持事物)
- jdbc事物的控制:关闭自动提交(CommitAuto(false))
- Hibernate中的事物控制:使用Session进行事物控制:session.beginTransition();
- Spring使用Aop进行事物管理
7.线程的状态
- 就绪
- 运行
- 阻塞
- 终止
8.创建线程的方式
- 实现Runnable接口
- 继承Thread类
- 实现callable和futureTask创建线程
- 通过线程池获取
9.java面向对象的特点
- 封装
- 继承
- 多态
- 抽象
10.java中的基本数据类型
- 整形:byte、short、int、long
- 浮点型:float、double
- 字符型:char
- 布尔型:boolean
11.==与equlas的区别
-
对于基本数据类型,“==”比较的是两者的值是否相等。
-
对于引用数据类型
-
“==”比较的是引用的地址是否相同
Object中的.equals()方法和"==’功能一样。
-
但是String类中的.equals()方法重写了,比较的是两个引用对象的内容是否想同。
-
-
简而言之:如果勒种没有重写equals()方法的话,其实与“==”是一样的
12.你知道的集合类都有哪些以及常用方法
- Collection的子类
- List:ArrayList,LinkedList,Vector
- Set:HashSet,TreeSet,HashTable
- 其主要方法有:add(),get(),addAll(),renmove(),contains()
- Map的子类:
- HashMap
- HashTable
- 其主要方法有:put,remove,get,cotainsKey
13.java中的异常如何处理
- 捕获异常:try...catch...finally
- 继续向上层抛出异常:throws
14.jsp与servlet的却别以及servlet的执行流程
- 区别:jsp编译后就是servlet,jsp比servlet更擅长页面显示而servlet更注重逻辑控制,servlet没有内至对象
- servlet的执行流程:用户请求-->servlet映射-->servlet的类-->执行doget方法
- servlet的生命周期: init()-->service()-->destory()
15.get请求与post请求的区别
- get请求的参数在请求头中,post在请求体重
- get的安全性相比post较差
- get的内容大小有限制
16.重定向和转发
- 重定向:HttpServletResponse.sendRedirect
- 转发:RequestDispatcher.forward
- 区别:
- 转发地址栏不变(一次请求),重定向地址栏变化(两次)
- 转发不用写项目名称,重定向需要编写项目名称
- 转发可以使用request对象传递值,重定向不可以使用request对象传递值
- 转发只能在服务器的内部进行操作,重定向可以定向到任何的资源!!
17.tomcat的常用配置
-
目录结构
/bin:脚本文件目录。
/common/lib:存放所有web项目都可以访问的公共jar包(使用Common类加载器加载)。
/conf:存放配置文件,最重要的是server.xml。
/logs:存放日志文件。
/server/webapps:来管理Tomcat-web服务用的。仅对TOMCAT可见,对所有的WEB APP都不可见(使用Catalina类加载器加载)。
/shared/lib:仅对所有WEB APP可见,对TOMCAT不可见(使用Shared类加载器加载)。
/temp:Tomcat运行时候存放临时文件用的。
/webapps:web应用发布目录。
/work:Tomcat把各种由jsp生成的servlet文件放在这个目录下。删除后,启动时会自动创建。
-
配置文件
server.xml:主要的配置文件。
web.xml:缺省的web app配置,WEB-INF/web.xml会覆盖该配置。
context.xml:不清楚跟server.xml里面的context是否有关系。port:端口
minProcessors:最小线程
maxProcessors:最大线程
image.png
image.png