java后端技术问题汇总(面试必看)
Java 后端技术面试涉及到众多知识点,以下是针对提供的部分内容的详细解释: 1. **LRU 缓存机制** LRU(Least Recently Used)是一种常见的缓存淘汰策略,其核心思想是最近最少使用的数据会被优先淘汰。在内存有限的情况下,当缓存满时,LRU算法会选择最近最少使用的数据移出缓存,以腾出空间给新的数据。这种策略有利于保持常用数据在缓存中,提高数据访问效率。 2. **消息队列(MQ)** - **解耦**:消息队列可以将生产者和消费者分离,两者无需直接交互,降低了系统间的耦合度,使得系统扩展和维护变得更加容易。 - **异步处理**:通过消息队列,非核心业务可以异步执行,主线程可以快速响应,提高系统整体性能。例如,用户注册后发送验证码、下单后发送优惠券等场景。 - **削峰/限流**:在高并发情况下,消息队列可以作为流量的缓冲区,避免大量请求直接冲击后端系统,保证服务稳定。 3. **多线程** - **创建线程**:Java提供了多种方式创建线程,包括继承`Thread`类、实现`Runnable`接口以及实现`Callable`接口。`Callable`接口与`Runnable`相似,但可以返回结果并抛出异常。 - **避免死锁**:死锁是因为多个线程互相等待对方释放资源导致的。避免死锁的方法包括避免循环等待、设置资源获取顺序等。 - **线程同步**:`wait()`和`sleep()`方法:`wait()`用于线程间通信,让线程释放对象锁并等待,而`sleep()`使线程暂停执行一段时间,不释放锁。 4. **HashMap 底层原理** 在JDK 1.7中,HashMap基于数组+链表实现。在`put`和`get`操作中,通过`hashCode`定位到数组中的槽位,如果是链表则遍历查找,如果是红黑树则进行树查找。JDK 1.8引入了红黑树,当链表达到一定长度(8)时会转换为红黑树,以提高查找效率。 5. **SpringCloud 五大组件** - **Eureka**:服务发现组件,服务提供者注册到Eureka Server,服务消费者通过服务名找到对应的服务提供者。 - **Ribbon**:客户端负载均衡器,与`RestTemplate`配合,实现对服务提供者的轮询访问。 - **Hystrix**:断路器,防止因某个服务故障导致整个系统雪崩,当服务不可用时,断路器打开,后续请求不再转发,保证系统稳定性。 - **Zuul**:服务网关,提供路由转发、过滤器等功能,相当于微服务架构中的边缘服务。 - **Spring Cloud Config**:分布式配置中心,允许从远程仓库(如Git)集中管理应用的配置,支持动态刷新。 6. **ArrayList 自动扩容机制** 当ArrayList的容量不足时,会进行扩容。默认初始容量为10,每次扩容大约会扩大1.5倍(实际是原容量+原容量/2)。当添加元素时,如果数组已满,会创建一个新的更大的数组,并将原有元素复制到新数组中,然后将新元素添加到新数组的末尾。 这些知识点是Java后端开发面试中常见的问题,掌握它们对于理解Java技术栈以及在面试中表现出色至关重要。
剩余7页未读,继续阅读
- 粉丝: 35
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0