亿合尤讯java面试题目2020

亿合尤讯java面试题目
1.String S=new String("xyz”);创建了几个stringobject?是否可以继承String类?
答:String创建对象有两种情况:
第一种:如果String常量池中已经创建了“xyz”,则不会继续创建,此时只创建了一个对象new String(“xyz”)
第二种:如果String常量池中没有创建“xyz”,则会创建两个对象,一个对象的值是“xyz”,一个对象new String(“xyz”)。
String类被final修饰不可被继承。
2.StringBuffer和stringbuilder的区别?
答:Stringbuffer线程安全,对方法加了同步锁或者对调用方法加了同步锁:Stringbuilder线程不安全没有加锁。
Stringbuilder比Stringbuffer性能提高10%-15%。但是牺牲了线程安全。
单线程操作字符串缓冲区下操作大量数据 builder
多线程操作字符串缓冲区下操作大量数据 buffer
3.Error和exception有什么区别?
答:Error和Exception都实现了Throwable接口
Error:指的是JVM层面的错误,表示恢复不是不可能但很困难的情况下的一种严重问题,比如内存不足OutOfMemoryError
Exception:表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
4.什么是JAVA序列化,如何实现JAVA序列化?或者请解释Serializable接口的作用?
答:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
(或者说Serializable是java提供的通用数据保存和读取的接口。)
5.描述一下JVM加载Class文件的原理机制?反射机制是如何拿到对应的Class对象?
答:第一步 装载:根据查找路径找到相应的class文件,然后导入。
第二步 连接:(分为三小步)
① 检查:检查载入的class文件数据的正确性;
② 准备:为类的静态变量分配存储空间;
③ 解析:将符号引用转换成直接引用(这一步是可选的)
第三步 初始化:对静态变量和静态代码块执行初始化工作。
这样的过程在程序调用类的静态成员的时候开始执行,所以静态方法main()才会成为一般程序 的入口方法。类的构造器也会引发该动作。

6.ServletAPI中forward()与redirect()的区别?
答:1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
4.从效率来说
forward:高.
redirect:低.

7.Request.getAttribute()和request.getParamter()有何区别?
答:相同点:1.都是HttpServletRequest类中的方法2.都是用来传递数据用的
不同点:1.方法是否需配对使用
Parameter():只有getParameter(),没有setParameter();
getAttribute() : setAttribute()和getAttribute()成对使用;
2.请求方式
如果是两个Web页面间为链接(重定向)关系时,如用method=get/ method=post表单提交请求,传递请求参数。就是说要从1.jsp链接到2.jsp时,被链接的是2.jsp可以通过getParameter()方法来获得请求参数。此种方法是从web客户端向web服务端传递数据,代表HTTP请求数据
如果两个Web间为转发关系时,转发目的地web可以用getAttribute()方法来和转发源Web共享request域内的数据。此种方法只存在于web容器内部。
3.返回值类型
getParameter():返回String类型的数据
getAttribute():返回String类型的数据,或 ,也可以是对象,但是当返回的是对象时需要进行强制转换

8.什么是cookie?Session和cookie有什么区别?
答:session:是一种将会话状态保存在服务器端的技术。
Cookie :是在 HTTP 协议下, Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息 。
存储位置不同:session 存储在服务器端;cookie 存储在浏览器端。
安全性不同:cookie 安全性一般,在浏览器存储,可以被伪造和修改。
容量和个数限制:cookie 有容量限制,每个站点下的 cookie 也有个数限制。
存储的多样性:session 可以存储在 Redis 中、数据库中、应用程序中;而 cookie 只能存储在浏览器中。
9.Tomcat是如何创建Servlet类实例?用到了什么原理?
答:当容器启动时,会读取在webapps目录下所有的web应用中的web.xml文件,然后对xml文件进行解析,并读取servlet注册信息。然后,将每个应用中注册的servlet类都进行加载,并通过反射的方式实例化。(有时候也是在第一次请求时实例化)
在servlet注册时加上1如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化。

10.数据库连接池的原理,为什么要使用连接池?
答:1,数据库连接是一件费时的操作,连接池可以使多个操作共享一个连接。
2,数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量、使用情况,为系统开发,测试及性能调整提供依据。
3,使用连接池是为了提高对数据库连接资源的管理
11.使用spring框架的好处是什么?
答:1、轻量:Spring 是轻量的,基本的版本大约2MB。
2、控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
3、面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
4、容器:Spring 包含并管理应用中对象的生命周期和配置。
5、MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
6、事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
7、异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate抛出的)转化为一致的unchecked 异常。
12.springmvc是一个软件的开发模式,执行流程
答:spring mvc 先将请求发送给 DispatcherServlet。
DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的 Controller。
DispatcherServlet 再把请求提交到对应的 Controller。
Controller 进行业务逻辑处理后,会返回一个ModelAndView。
Dispathcher 查询一个或多个 ViewResolver 视图解析器,找到 ModelAndView 对象指定的视图对象。
视图对象负责渲染返回给客户端。
13.简单的说一下mybatis的一级缓存和二级缓存?
答:一级缓存:基于 PerpetualCache 的 HashMap 本地缓存,它的声明周期是和 SQLSession 一致的,有多个 SQLSession 或者分布式的环境中数据库操作,可能会出现脏数据。当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认一级缓存是开启的。
二级缓存:也是基于 PerpetualCache 的 HashMap 本地缓存,不同在于其存储作用域为 Mapper 级别的,如果多个SQLSession之间需要共享缓存,则需要使用到二级缓存,并且二级缓存可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态)。
开启二级缓存数据查询流程:二级缓存 -> 一级缓存 -> 数据库。
缓存更新机制:当某一个作用域(一级缓存 Session/二级缓存 Mapper)进行了C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear。

14.Redis和数据库的同步是如何实现的
答:合理设置缓存的过期时间。
新增、更改、删除数据库操作时同步更新 Redis,可以使用事物机制来保证数据的一致性

List item

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值