后端面试题
文章平均质量分 79
刘十三1103
这个作者很懒,什么都没留下…
展开
-
面试题JVM篇
线程私有的,每个线程一份,内部保存的字节码的行号。用于记录正在执行的字节码指令的地址。每个线程运行时所需要的内存,称为虚拟机栈,先进后出每个栈由多个栈帧(frame)组成,对应着每次方法调用时所占用的内存每个线程只能有一个活动栈帧,对应着正在执行的那个方法1.垃圾回收是否涉及栈内存?垃圾回收主要指就是堆内存,当栈弹栈以后,内存就会释放2.栈内存分配越大越好么?未必,默认的栈内存通常为1024K,栈帧过大会导致线程数变少。3.方法内的局部变量是否线程安全?原创 2023-08-10 15:57:51 · 219 阅读 · 0 评论 -
面试题常见集合篇
散列表又名哈希表/Hash表,是根据键(Key)直接访问在内存存储位置值(Value)的数据结构,它是由数组演化而来的,利用了数组支持按照下标进行随机访问数据的特性。JDK1.8之后采用数组+链表+红黑树,链表长度大于8且数组长度大于64则会从链表转化为红黑树。2.如果数组的索引从1开始,寻址公式中,就需要增加一次减法操作,对于CPU来说就多了一次指令,性能不高。由数组演化而来的,利用了数组支持按照下标进行随机访问数据。添加数据时,计算key的值确定元素在数组中的下标。数组的每个下标位置称之为桶或者槽。原创 2023-08-08 14:56:56 · 71 阅读 · 0 评论 -
面试题消息中间件篇
消息未到达交换机,消息未到达队列,在队列中消息丢失,消费者未接受到消息这些都有可能导致消息丢失RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失,消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功消息失败之后如何处理呢?回调方法即使重发记录日志保存到数据库然后定时重发,成功发送后即刻删除表中的数据MQ默认是内存存储消息,开启持久化功能可以确保缓存在MQ中的消息不丢失。1.交换机持久化2.队列持久化。原创 2023-08-07 16:49:33 · 40 阅读 · 0 评论 -
面试题微服务业务问题篇
面试题:你们项目中有没有做过限流?怎么做的?1.先来介绍业务,什么情况下去做限流,需要说明QPS具体多少我们当时有一个活动,到了假期就会抢购优惠券,QPS最高可以达到2000,平时10-50之间,为了应对突发流量,需要做限流。常规限流,为了防止恶意攻击,保护系统正常运行,我们当时系统能够承受最大的QPS是多少(压测结果)2.nginx限流控制速率(突发流量):使用漏桶算法来实现过滤,让请求以固定的速率处理请求,可以应对突发流量控制并发数,限制单个ip的链接数和并发链接的总数3.网关限流。原创 2023-08-07 14:49:08 · 40 阅读 · 0 评论 -
面试题spring框架篇
bean不是线程安全的。原创 2023-07-31 15:58:33 · 66 阅读 · 1 评论 -
面试题微服务SpringCloud篇
如果检测到10秒内请求的失败率超过50%,就出发熔断机制,之后每隔5秒重新尝试请求微服务,如果微服务不能响应继续走熔断机制。如果微服务可达,则关闭熔断机制,恢复正常请求。:服务提供者每30秒会向eureka发送心跳,报告健康状态,如果eureka服务90秒魅接收到心跳,从eureka中剔除。:服务提供者需要把自己的信息注册到eureka,由eureka来保存这些信息,比如服务器名称,ip,端口等等。服务降级是服务自我保护的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃。原创 2023-08-03 11:17:47 · 94 阅读 · 0 评论 -
面试题Mybatis篇
Mybatis执行流程:1.读取Myabtis配置文件:mybatis-config.xml加载运行环境和映射文件2.构造会话工厂SqlSessionFactory3.会话工厂创建SqlSession对象(包含了执行Sql语句的所有方法)4.操作数据区的接口,Executor执行器,同时负责查询缓存的维护5.Executor接口的执行方法有一个MappedStatement对象封装映射信息6输入参数映射(java->数据库类型)7输出结果映射(数据库类型->java类型)原创 2023-08-02 14:45:31 · 48 阅读 · 0 评论