Java面试题

1、jvm内存模型,逻辑分区、jvm启动参数设置(初始堆、最大堆大小设置、新生代老年代设置、survivor Eden区作用),cas(compare and switch)机制,minor gc时间多长时间合适

2、synchorized lock锁区别,synchorized锁,偏向锁 -> 自旋锁 -> 轻量级锁 -> 重量级锁

3、kafka 队列数据存储方式  index log,如何保证消息发送成功,如何保证队列数据顺序写入,如何保证消费响应速度,kafka分区的作用,消费者数对于分区数?kakfa处理策略

4、mysql存储引擎有哪些,除了innorDB mysaim,事务的隔离级别,默认可重复读, 事务的实现机制mvcc,redo log,主从复制如何保证数据已经复制集群中从库,主从同步相关问题;索引的原理,B+树,主键索引(簇集索引) 唯一索引 覆盖索引(会读取到内存),二级索引(非主键索引都是二级索引),簇集索引 -> 索引和数据存放在一起,每张表都有!!!行级锁 表级锁 范围锁(锁附近部分记录),

*更新会加锁,写入不加锁,多线程环境下多表更新可以先执行写入操作,后执行更新操作

5、单例模式,care 防止反射、防止序列化、双检锁

6、redis 支持的数据结构、lru算法,zset 底层实现(紧凑列表 or 跳跃表),跳跃表 dict & zskiplist (Range操作),分布式锁,如何防止锁没有释放,锁入侵,redis持久化方式,rdb aof(写入间隔时间 、 条数),redis集群相关问题

7、dubbo spi机制,集群策略(快速失败、失败重试)、应用场景,异步调用

8、线程池底层实现(源码),工作队列,核心线程数、最大线程数(线程池队列满了之后创建新线程,最大并发数),线程池队列,拒绝策略

9、jdk1.8新特性  流(多线程)、接口默认方法、引入新的时间类型 、lamda表达式 、fork join框架。。。,

10、hashmap 数组 + 链表 > 8 ---> 红黑树, jdk1.8,***链表插入采用头插法***,1.8之前扩容会有链表闭环问题,1.8解决了扩容产生链表闭环问题,但仍然有丢数据问题,*concurrenthashmap 锁机制,节点加锁

11、bio、nio、aio、io复用、信号驱动io

12、netty nio模型,eventloop eventloopgroup实现原理,解决jdk nio什么问题?自定义解码器解决 粘包问题、拆包问题,怎么解决包数据超过应用缓存问题, 使用直接字节缓冲区DirectByteBuffer

13、

spring 统计创建了多少bean,实现BeanFactoryPostProcessor,统计bean定义列表;

spring 中两中种bean,**普通的bean 和 特殊的bean,特殊的bean一般为实现特定接口用于管理bean工厂(factory -> bean)**,特殊的bean会先创建;

spring boot 和 spring mvc区别,约定大于配置,bean的生命周期, 

spring-boot-starter 怎么写 -> spring.factoris文件

spring boot 启动流程。。。

14、spring cloud相关

断路器、网关、负载均衡策略、eurka注册中心、控制应用对redis的访问量(从网关方向考虑)

15、排序算法 

选择排序、快速排序(效率高 O(NlogN))、堆排序,其他排序算法

16、树结构 二叉树 平衡二叉树 红黑树 ,红黑树底层实现原理

17、设计一个过滤黑名单用户的程序,当用黑名单用户访问服务时,提示不可访问;黑名单用户有到期时间,到期后自动解除,系统中黑名单人数有10万左右,并发数十万左右,设计黑名单用户增删改实现;思路:不要用redis ;kafka、网关、内存HashMap

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值