java高级面试总结

面试总结
### **Java基础** 1.Java序列化,怎么让一个字段不参与序列化,序列化serialVersionUID有什么用

Redis

1.速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
2.序列化两种:RDB,AOF
3.怎么防止redis击穿
4.redis的优势是什么
5.redis有什么需要注意的地方,master不要备份,主从最好在局域网中,slave做备份
6.Redis Sentinel着眼于高可用,在master宕机时会自动将slave提升为master,继续提供服务。
7.redis支持spring,list,set,sort,hash
8.支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
9.丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
10.主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3…
11.相关知识:redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。redis 提供 6种数据淘汰策略:

Springboot

1.springboot实现及原理
2.spring 入口在哪里 怎么启动
3.Spring 注册bean之后打印信息 — BeanPostProcessor 有方法获取bean执行完后调用 ,beanName

mybaits

mysql

1.使用过索引吗,索引有那些,有什么不同
InnoDB MyISAM,
1.1)innodb支持事务,外键等高级数据库功能
1.2)在执行更新索要锁机制的时候,innodb主观上是行级锁,myisam是表级锁(但也不是绝对,innodb在使用like时候也可能出现表级锁)
1.3)myisam插入数据的效率远高于innodb,但是在innodb不断优化之后,删改查的差距越来越小
1.4)InnoDB必须导出SQL来备份,LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。备注:而且MyISAM应对错误编码导致的数据恢复速度快。MyISAM的数据是以文件的形式存储,所以在跨平台的数据转移中会很方便。在备份和恢复时可单独针对某个表进行操作。InnoDB是拷贝数据文件、备份 binlog,或者用 mysqldump,支持灾难恢复(仅需几分钟),MyISAM不支持,遇到数据崩溃,基本上很难恢复,所以要经常进行数据备份。

2.索引的原理是什么,数据结构是什么,为什么使用这种数据结构,使用索引与不适用索引磁盘IO的次数有区别的吗
2.1)索引是采用数据结构B+树作为底层支撑,如果不适用索引,查询将会扫描所有表数据,每次IO查询出一条记录。
2.2)使用索引之后,每次IO查询出的是一个索引页大小的数据,这是因为IO读取相邻磁盘单元,不需要磁臂移动,就能将相邻单元的数据读出。一个1000万级的数据,如果不使用索引每次查询最糟糕请款下会发生1000万次IO,而使用索引只需要在b+树扫描大概3次就OK,这个该索引树深度有关系,
2.3)b+树深度计算可见
3.一般从什么角度去优化sql
3.1)使用三范式
3.2)建立适当的索引,并合理使用索引
3.3)优化慢查询sql
3.4)实现主从分离
3.5)大数据量实行分库分区分表
3.6)添加缓存层
4.什么是mysql的mvcc
5.谈谈对数据库锁的认识
5.1)乐观锁,悲观锁
5.2)间隙锁

分布式、微服务

1.使用的什么分布式框架
2.springcloud源码
3.分布式事务需要强一致性怎么处理,tcc事务概念

MQ

1.确保消息发送成功 Confirm模式(不同于事务,效率高于事务)
2.消息推积怎么办? 修改消费者数量 和 去消息队列取消息个数

多线程

1、线程的核心参数,队列的策略
核心线程数,最大线程数,线程空闲等待时间,workQueue工作队列,handler 拒绝策略
1)ArrayBlockingQueue:基于数组的有界阻塞队列,新任务进来后,按FIFO排序(先进先出的存储结构),
当队列满了之后,会创建新的线程,如果继续添加任务直到maxPoolSize,则会执行拒绝策略。
2)LinkedBlockingQuene:最大容量Integer.MAX,当线程达到核心线程数后,任务一直在队列中,同样也是FIFO顺序排序。该配置下maxPoolSize配置无效
3)SynchronousQuene,无缓存队列,如果新来任务,如果核心线程不够就新建线程,如果达到最大线程数量则执行拒绝策略。
4)PriorityBlockingQueue
具有优先级的无界阻塞队列,优先级通过参数Comparator实现。
handler 拒绝策略:直接拒绝,拒绝抛出异常,丢弃什么都不做,抛弃最早任务将现任务放入队列
2、有一个新的线程池,不停进来线程,线程池内部线程数量怎么变化
1). 当线程数小于核心线程数时,创建线程。
2). 当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列。
3). 当线程数大于等于核心线程数,且任务队列已满
- 若线程数小于最大线程数,创建线程
- 若线程数等于最大线程数,抛出异常,拒绝任务

3、为什么核心线程不会回收

4、核心线程和CPU的数量关系
https://blog.csdn.net/qq_39010254/article/details/107248501

ng 权重怎么实现

访问量异常处理方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值