2021-02-23 21:38:29
阿里Java岗四面面经及面试题总结如下:
一、面试流程概述
一面:
重点:Java基础知识的掌握程度,如数据结构、集合类、字符串处理等。
注意事项:准备充分,对基础概念有清晰理解,能够准确回答面试官提问。
二面:
重点:项目经验与框架应用,考察茄明中技术实践能力与问题解决能力。
注意事项:梳理项目经历,准备项目介绍与难点解决方案,展示技术深度与广度。
三面:
重点:综合素质与应变能力,包括技术、个人及生活情况。
注意事项:保持自信,积极与面试官互动,展示个人优势与潜力。
HR面:
重点:非技术问题的回答,如工作经历、家庭情况、加班及公司文化看法等。
注意事项:诚实回答,展示积极态度与适应能力,符合公司文化价值观。
HashMap结构;什么对象能做为key:
HashMap基于数组+链表+红黑树实现,key需实现hashCode与equals方法,且为不可变对象(如String、Integer)。
HashTable、ConcurrentHashMap比较:
HashTable线程安全但效率低,ConcurrentHashMap采用分段锁或CAS+synchronized提高并发性能。
String、StringBuilder、StringBuffer:
String不可变,StringBuilder非线程安全但高效,StringBuffer线程安全但效率较低。
对象的深浅复制:
浅复制仅复制对象引用,深复制复制对象及其引用对象。
wait、sleep区别:
wait为Object方法,释放锁;sleep为Thread方法,不释放锁。
CountDownLatch的await方法是否安全,怎么改造:
await方法在计数器为0前阻塞,需确保计数器正确递减,可通过try-finally块确保。
线程池参数及流程:
参数包括核心线程数、最大线程数、空闲线程存活时间、工作队列、线程工厂、拒绝策略。流程为提交任务、检查线程数、创建线程或加入队列、执行任务。
AQS、CAS原理:
AQS基于CLH队列实现同步状态管理,CAS通过比较并交换实现无锁同步。
ThreadLocal原理及注意事项:
ThreadLocal为每个线程提供独立变量副本,避免线程间共享变量问题。需注意内存泄漏问题,及时调用remove方法。
Servlet是否线程安全,如何改造:
Servlet非线程安全,可通过同步方法、ThreadLocal或避免使用实例变量实现线程安全。
Session与Cookie区别:
Session存储在服务器端,Cookie存储在客户端。Session用于维护用户状态,Cookie用于存储用户偏好或身份验证信息。
GET与POST区别:
GET用于获取数据,POST用于提交数据。GET数据在URL中传输,POST数据在请求体中传输。
TCP三次握手:
客户端发送SYN包,服务器回复SYN+ACK包,客户端再回复ACK包,建立连接。
如何防止表单重复提交:
可通过Token机制、JavaScript禁用按钮或服务器端校验实现。
JVM内存模型:
包括堆、栈、方法区、程序计数器、本地方法栈等。
JVM问题工具:
如jps、jinfo、jmap、jstack、jstat等,用于查看JVM状态、内存使用情况、线程堆栈等。
索引及底层实现:
索引基于B+树实现,提高查询效率。需注意索引选择性与覆盖索引优化。
索引失效场景:
如使用函数、类型转换、模糊查询前缀不匹配等。
最左原则:
复合索引需遵循最左前缀原则,即查询条件需包含索引最左列。
锁类型及特性:
包括行级锁、表级锁、悲观锁、乐观锁等。需根据业务场景选择合适的锁策略。
事务特性及隔离级别:
事务具有ACID特性,隔离级别包括读未提交、读已提交、可重复读、串行化。
CAP、BASE理论:
CAP理论指出分布式系统无法同时满足一致性、可用性、分区容忍性。BASE理论为CAP的折中方案,强调基本可用、软状态、最终一致性。
Zookeeper特性及Paxos算法:
Zookeeper满足CP特性,提供分布式协调服务。Paxos算法用于解决分布式系统中的一致性问题。
缓存穿透解决方案:
如布隆过滤器、缓存空对象、互斥锁等。
Redis IO模型及高可用方案:
Redis基于单线程Reactor模型实现高效IO。高可用方案包括主从复制、哨兵模式、集群模式。
一致性Hash:
用于解决分布式缓存中的数据分布问题,减少节点增减时的数据迁移量。
分库分表策略:
根据业务需求选择合适的分库分表策略,如水平分表、垂直分库等。
IOC、AOP原理:
IOC通过依赖注入实现对象间的解耦,AOP通过动态代理实现面向切面编程。
IOC初始化流程:
包括资源定位、加载、解析、注册、依赖注入等步骤。
Spring MVC流程:
包括请求分发、控制器处理、模型视图渲染等步骤。
Spring Boot、Spring Cloud组件:
Spring Boot简化Spring应用开发,提供自动配置、起步依赖等特性。Spring Cloud提供分布式系统解决方案,如服务发现、配置中心、熔断器等。
