小厂Java面经

1、mysql的B+树数据结构说了一下B+树的特点就是只有叶子结点存储数据,非叶子结点只存储指针和key,叶子结点之间用指针连接,B+树可以减少树高,减少IO次数7、JVM分代回收答了堆分为新生代和老年代,新生代又分为eden 区和两个s区(可以补充大小比例是8:1:1),新生成的对象放进eden区,当eden区满了,就会开始分代回收,(可以补充采用的是复制算法),在经过十五次 minor gc还是没有被清除的对象会被放进老年代。

2、OOM出现的场景我回答了常见于运行时间很长的程序,老年代的对象一直没有被清理,就会导致OOM。(可以回答内存泄漏,程序中的对象没有被正确释放,导致内存不断被占用,未释放的资源,未清理的缓存。或者说频繁的full gc,全局垃圾回收,会导致大量的暂停时间,影响程序性能,或者说内存溢出,分配了大量的内存没有释放,递归导致栈溢出等都可以说)

3、redis 缓存穿透、雪崩缓存穿透就是用户发送请求去查询不存在的数据,缓存也没有,所以直接去数据库查,但是数据库也没有,有可能导致宕机,解决办法是用布隆过滤器或者说直接返回空值。雪崩就是同一时间大量的缓存过期,直接跑去数据库查,解决方案是设置随机的过期时间10、用到的springcloud组件说了feign, ribbon,gateway还用了springcloudalibaba的 nacos11、openfeign用的什么协议?回答 http14、openfeign里面集成了什么组件?内部集成了 ribbon和eureka,ribbon用来负载均衡,eureka用来做注册中心12、openfeign的http请求通过什么实现?没答出来(http请求的实现是通过底层的http客户端来完成,openfeign默认使用springcloud的restTemplate作为http客户端来发送请求)

5、spring事务失效场景答了1)非事务方法调用事务方法(还提了一嘴我的项目也有遇到这个问题)2)没有交给spring容器管理3) 抛出异常被捕获4)用了错误的事物传播行为(忘了说不是public的情况,还有异常类型错误)

6、rabbitmq如何解决消息重复消费问题全局唯一id,幂等的问题

#软件开发笔面经#
全部评论

相关推荐

点赞 评论 收藏
分享
恒润 系统工程师 15✖️12➕70k年终
点赞 评论 收藏
分享
6 16 评论
分享
牛客网
牛客企业服务