一面 02

作者:拿一个offer就行
链接:https://ac.nowcoder.com/discuss/755725?type=2&order=0&pos=3&page=1&ncTraceId=&channel=-1&source_id=discuss_tag_nctrack
来源:牛客网

自我介绍
项目相关
Java内存区域,枚举在哪一块
OOM如何定位
GC过程
线程锁的类型
synchronized底层如何实现
ConcurrentHashMap
Spring、SpringMVC和SpringBoot区别
Mybatis组件做了什么事情
数据库Mysql InnoDB 索引结构,与B-树区别,优势
慢SQL如何定位
索引失效情况
最近在学习啥,读什么书

Java内存区域,枚举在哪一块

枚举被编译成静态变量,存储在方法区,jdk1.8元空间实现了方法区,元空间在主机内存种。

堆/栈/元空间

栈 : 8中常用数据类型,引用,实例方法

方法区(元空间):,静态变量、常量、类信息(构造方法、接口定义)、运行时的常量池存在方法区中

堆 : 实际对象

●堆里面的分区有哪些? Eden, form, to, 老年区,说说他们的特点!

新生代 ,幸存区0/1 , 老年区 ,元空间 。

新对象在新生代 , 没被删除的在o/1 交替 ,多次没有被删除在老年区,删除了永久代叫元空间存储常量池。

image-20210926135425572

OOM如何定位

1.可以查看新生代,老年代堆内存的分配大小以及使用情况,看是否本身分配过小。

2.找到最耗内存的对象

3.确认是否是资源耗尽

GC过程

新生区活过进入幸存者区,经过16次进入老年代,gc是使用新生代一般使用复制算法,老年代使用复制标记清楚压缩算法。

线程锁的类型

公平锁:是指多个线程按照申请锁的顺序来获取锁

非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获锁。

可重入锁:指的是同一线程外层方法获得锁之后,内层递归方法仍然能够获得该锁的代码

自旋锁:是指尝试获取锁的线程不会立即被阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线上下文切换的消耗,缺点是循环会消耗CPU

独占锁:是指该锁一次只能被一个线程所持有。

共享锁:是指该锁可以被多个线程所持有

synchronized底层如何实现

底层是基于每个对象的监视器(monitor)来实现的

在虚拟机执行到monitorenter指令的时候,会请求获取对象的monitor锁,基于monitor锁又衍生出一个锁计数器的概念。
当执行monitorenter时,若对象未被锁定时,或者当前线程已经拥有了此对象的monitor锁,则锁计数器+1,该线程获取该对象锁。
当执行monitorexit时,锁计数器-1,当计数器为0时,此对象锁就被释放了。那么其他阻塞的线程则可以请求获取该monitor锁。

ConcurrentHashMap

JDK1.8 中的ConcurrentHashMap 选择了与 HashMap 相同的Node数组+链表+红黑树结构;在锁的实现上,抛弃了原有的 Segment 分段锁,采用CAS + synchronized实现更加细粒度的锁。

Spring、SpringMVC和SpringBoot区别

  1. spring是一个一站式的轻量级的java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(springMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案;
  2. springMvc是spring基础之上的一个MVC框架,主要处理web开发的路径映射和视图渲染,属于spring框架中WEB层开发的一部分;
  3. . springBoot框架相对于springMvc框架来说,更专注于开发微服务后台接口,不开发前端视图,同时遵循默认优于配置,简化了插件配置流程,不需要配置xml,相对springmvc,大大简化了配置流程;

Mybatis组件做了什么事情

Mapper 配置、Mapper 接口、Executor、SqlSession、SqlSessionFactory

数据库Mysql InnoDB 索引结构,与B-树区别,优势

InnoDB使用的是B+tree数据结构,所有的记录都在叶子节点上,并且是按照顺序存放的,根节点和分支节点中不保存数据,只用于索引。

慢SQL如何定位

1.查看慢查询日志,确定已经执行完的慢查询

2.使用的方式是在查询语句前加上explain 即可

索引失效情况

1.没有查询条件,或者查询条件没有建立索引

最近在学习啥,读什么书

如果糊弄面试官

天之下,古典武侠

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值