Java面试题集

1.Mybatis与Ibatis的区别

Mybatis实现了接口绑定,使用更加方便。 
在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件, 
而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便

对象关系映射的改进,效率更高

2.Http1与Http2的区别

  • HTTP2使用的是二进制传送,HTTP1.X是文本(字符串)传送
  • HTTP2支持多路复用
  • HTTP2头部压缩
  • HTTP2头部压缩

3.SpringMVC的执行流程

  1. 用户发送请求到DispatchServlet
  2. DispatchServlet根据请求路径查询具体的Handler
  3. HandlerMapping返回一个HandlerExcutionChain给DispatchServlet HandlerExcutionChain:Handler和Interceptor集合
  4. DispatchServlet调用HandlerAdapter适配器
  5. HandlerAdapter调用具体的Handler处理业务
  6. Handler处理结束返回一个具体的ModelAndView给适配器 ModelAndView:model-->数据模型,view-->视图名称
  7. 适配器将ModelAndView给DispatchServlet
  8. DispatchServlet把视图名称给ViewResolver视图解析器
  9. ViewResolver返回一个具体的视图给DispatchServlet
  10. 渲染视图
  11. 展示给用户

4.JVM内存溢出具体指哪些内存区域?都会抛出什么异常?

除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(OOM)异常的可能

具体解析参考:https://www.cnblogs.com/binyue/p/3927105.html

5.谈谈对AJAX的理解

jax是Asynchronous JavaScript and XML的缩写,这一技术能够向服务器请求额外的数据而无需卸载整个页面,会带来良好的用户体验。传统的HTTP请求流程大概是这样的,浏览器向服务器发送请求-〉服务器根据浏览器传来数据生成response-〉服务器把response返回给浏览器-〉浏览器刷新整个页面显示最新数据,这个过程是同步的,顺序执行。

AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求)从服务器获取数据,这里的异步是指脱离当前浏览器页面的请求、加载等单独执行,这意味着可以在不重新加载整个网页的情况下,通过JavaScript接受服务器传来的数据,然后操作DOM将新数据对网页的某部分进行更新,使用Ajax最直观的感受是向服务器获取新数据不需要刷新页面等待了。

6.谈谈对事务的理解

http://blog.csdn.net/fengchao2016/article/details/70207222

7.String能被继承吗?为什么?

因为Sting是这样定义的:public final class String extends Object,里边有final关键字,所以不能被继承

8.谈谈继承和聚合

https://www.cnblogs.com/xdp-gacl/p/4058008.html

9.什么是深拷贝和浅拷贝?

在之前的博客中有写

10.说说常见的几个运行时异常

  • ClassCastException(类转换异常)
  • IndexOutOfBoundsException(数组越界)
  • NullPointerException(空指针)
  • ArrayStoreException(数据存储异常,操作数组时类型不一致)
  • IO操作的BufferOverflowException异常

11.JDK引入泛型是解决什么问题的?

如果在一个类内部,成员变量一开始不知道用的时候会赋值为什么类型的时候,会非常头痛,类型转换也是个大问题.

12.谈谈hashCode与equals之间的关系

如果两个对象相同,那么它们的hashCode值一定要相同

如果两个对象的hashCode相同,它们并不一定相同

equals()相等的两个对象,hashcode()一定相等

equals()不相等的两个对象,却并不能证明他们的hashcode()不相等

13.谈谈反射机制

在之前的文章有整理过

14.常用的JVM设置参数都有哪些?

-Xms3550m, 初始化堆大小。通常情况和-Xmx大小设置一样,避免虚拟机频繁自动计算后调整堆大小。 
-Xmx3550m,最大堆大小。

-XX:Permsize=512m,设置永久代初始值。 
-XX:MaxPermsize=512m,设置永久代的最大值。 
注:Java8没有永久代说法,它们被称为元空间,-XX:MetaspaceSize=N

15.Spring Boot是什么?

从本质上来说,springboot是一个专注于框架的框架。Spring Boot就是对各种框架的整合,让他们集成在一起更加简单,简化了我们在集成过程中的模板化配置,它做了那些没有它你自己也会去做的Spring Bean配置

16.谈谈Spring事物传播特性

在之前的文章有整理过

17.Spring有哪几种事物管理机制?

http://blog.csdn.net/jeamking/article/details/43982435

18.ACID是指什么?

Atomic(原子性)
Consistency(一致性)
Isolation(隔离性)
Durability(持久性)

19.谈谈Mysql中的Btree和B+Tree算法

https://www.cnblogs.com/vianzhang/p/7922426.html

20.谈谈Mysql中in和exists的应用场景

select * from A where exists (select * from B where A.id=B.id);
select * from A where A.id in (select id from B);

1、exists是对外表做loop循环,每次loop循环再对内表(子查询)进行查询,那么是对内表的查询使用的索引,而外表有多大都需要遍历,不可避免,故内表大的使用exists,可加快效率;

2、in是把外表和内表做hash连接,先查询内表,再把内表结果与外表匹配,对外表使用索引,而内表多大都需要查询,不可避免,故外表大的使用in,可加快效率。

posted @ 2018-03-05 16:09  取什么昵称呢  阅读(135)  评论(0编辑  收藏  举报