avatar

Java面试题6

1.事务的并发问题

1
2
3
4
1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
2、不可重复读:事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致
3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读
小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除;解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

2.Java在金融行业使用到的数据类型

1
2
BigDecimal类型
原因: 在金融中要求数字的计算必须要准确,要求数据中保留的小数位数必须是可以精确控制的,int类型、double类型、float类型都是无法做到的

3.Spring MVC组件

1
2
3
4
5
6
7
8
9
1.前端控制器组件(DispatcherServlet)
2.处理器组件(Controller)
3.处理器映射器组件(HandlerMapping)
4.处理器适配器组件(HandlerAdapter)
5.拦截器组件(HandlerInterceptor)
6.视图解析器组件(ViewResolver)
7.视图组件(View)
8.数据转换组件(DataBinder)
9.消息转换器组件(HttpMessageConverter)

5.什么是面向对象编程?

1
把具有共性的事务抽象成属性和方法来进行代码编程

6.MongoDB支持的数据类型

1
2
3
4
5
6
7
8
9
String : 字符串
Integer : 整数类型
Boolean : 布尔类型
Double : 双精度浮点值
Object : 用于内嵌文档
Date : 日期时间类型
Code : 代码类型
Array : 用于将数组或列表或多个值存储为一个键
Timestamp : 时间戳等

7.什么是RabbitMQ?

1
实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)

8.cookies和session的区别

1
2
3
4
1.Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端
2.Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关
3.Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击
4.Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力

9.Mybatis的标签有哪些?

功能 标签名称
定义SQL语句 insert
delete
update
select
配置Java对象属性与查询结果集中列名对应的关系 resultMap
控制动态SQL拼接 foreach
if
choose
格式化输出 where
set
trim
配置关联关系 collection
association
定义常量 sql

Java虚拟机内存模型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
程序计数器:
1.它是当前线程所执行的字节码的行号指示器
2.每个线程都有自己私有的程序计数器
3.执行java方法时,记录的是正在执行的虚拟机字节码指令的地址;
4执行native方法时,计数器的值为空
5.此内存区域是jvm中唯一一个没有规定OutOfMemoryError的区域
虚拟机栈:
1.每个方法执行的时候都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息
2.局部变量表存储8种基本数据类型、对象引用和returnAddress类型(指向一条字节码指令的地址)
3.局部变量表所需的内存空间在编译期间完成分配,当进入一个方法时,这个方法在栈中分配多大的局部变量空间是完全确定的,在方法运行期间不会改变局部变量表的大小
4.longdouble类型占2个局部变量空间(slot),其他类型占1
5.如果线程请求的栈深度大于虚拟机所允许的,抛出StackOverFlow异常。
6.如果可以动态扩展,但扩展时申请不到内存,抛出OutOfMemoryError
本地方法栈:
1.与虚拟机栈类似,它记录虚拟机用到的native方法服务
2.sun hotspot将本地方法栈和虚拟机栈合二为一
java堆:
1、它是所有线程共享的一块内存区域,在虚拟机启动时创建
2、它唯一的目的:存放对象实例
3、如果在堆中没有内存再进行分配,且堆不能再进行扩展,则抛出OutOfMemoryError
方法区:
1.它是各个线程共享的内存区域
2.它用于存储已被虚拟机加载的类的信息、常量、静态变量、即时编译器编译后的代码等数据
3.hotspot vm中这部分也被称为永久代(Permanent Generation)
4.这个区域垃圾回收器也会进行回收,主要目标是常量池和对类型的卸载
文章作者: 123
文章链接: https://gao5805123.github.io/123/2020/05/12/Java%E9%9D%A2%E8%AF%95%E9%A2%986/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 123
打赏
  • 微信
    微信
  • 支付宝
    支付宝