• 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,可加快效率。

  • 相关阅读:
    java不定参数列表---乔老师没讲,但是传智有讲
    java数据库连接模板代码通用收集
    java数据库连接模板代码通用收集
    BZOJ2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛
    BZOJ1598: [Usaco2008 Mar]牛跑步
    BZOJ1710: [Usaco2007 Open]Cheappal 廉价回文
    manacher模板
    BZOJ1584: [Usaco2009 Mar]Cleaning Up 打扫卫生
    BZOJ1753: [Usaco2005 qua]Who's in the Middle
    BZOJ1828: [Usaco2010 Mar]balloc 农场分配
  • 原文地址:https://www.cnblogs.com/zyxiaohuihui/p/8509545.html
Copyright © 2020-2023  润新知