ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

后端面试知识点梳理

后端面试知识点梳理 后端面试知识点梳理一、计算机网络基础必问1.1 TCP 三次握手 / 四次挥手1.2 HTTP1.3 HTTP/2 与 HTTP/1.1二、MySQL核心2.1 索引2.2 事务与隔离级别2.3 锁2.4 SQL 优化三、Redis缓存核心3.1 数据结构3.2 持久化3.3 三大缓存问题必考3.4 高可用四、Spring 体系4.1 IOC / DI4.2 AOP4.3 Bean 作用域与生命周期4.4 Spring Boot 自动配置4.5 Spring MVC 流程五、消息队列MQ5.1 作用5.2 可靠性5.3 重复与顺序六、分布式6.1 CAP6.2 分布式锁6.3 分库分表6.4 分布式事务6.5 Session 共享七、微服务Spring Cloud八、系统设计加分九、安全十、易踩坑清单十一、高频面试题 30 连击定位后端开发岗Java 技术栈为主面试速通。用法每个模块先看核心结论再看面试题最后对照易踩坑。一、计算机网络基础必问1.1 TCP 三次握手 / 四次挥手三次握手SYN → SYNACK → ACK确认双方收发能力防止历史连接。四次挥手FIN → ACK → FIN → ACK全双工被动方 ACK 与 FIN 分开发。TIME_WAIT主动关闭方等待 2MSL确保最后 ACK 到达、旧报文消散高并发短连接服务器需time_wait复用优化。1.2 HTTP方法GET幂等、参数在 URL/ POSTbody/ PUT / DELETE。状态码2xx 成功 / 3xx 重定向 / 4xx 客户端错401 未授权、403 禁止、404 不存在、429 限流/ 5xx 服务端错500、502 网关、503、504 超时。HTTPSHTTP TLS非对称加密协商密钥 对称加密传输CA 证书防中间人。1.3 HTTP/2 与 HTTP/1.1多路复用单连接并发、头部压缩、服务端推送、二进制分帧。二、MySQL核心2.1 索引B 树矮胖、叶子有序链表、非叶只存键范围查询优、IO 少。聚簇索引InnoDB数据即索引主键即聚簇键二级索引叶子存主键值回表。最左前缀联合索引(a,b,c)命中需从左到右连续跳过 a 则失效。覆盖索引查询字段全在索引中无需回表。失效场景函数/运算、!、or 非索引列、隐式类型转换、like 前导%。2.2 事务与隔离级别ACID原子性undo log/ 一致性 / 隔离性 / 持久性redo log。隔离级别读未提交 → 读已提交 →可重复读MySQL 默认→ 串行化。问题脏读 / 不可重复读 / 幻读。InnoDB 在可重复读下靠MVCC Next-Key Lock解决幻读。2.3 锁行锁 / 表锁InnoDB 默认行锁基于索引无索引则升级表锁。间隙锁Gap/ Next-Key Lock锁住记录及间隙防插入解决幻读。死锁交叉加锁解决固定加锁顺序、降低事务粒度、innodb_lock_wait_timeout。2.4 SQL 优化EXPLAIN看执行计划typeconst/ref/range/index/ALL、key、rows、ExtraUsing index / Using filesort。避免SELECT *、大事务、深分页LIMIT 100000,10改游标/子查询。三、Redis缓存核心3.1 数据结构结构场景String计数、缓存、分布式锁SETNXHash对象属性List队列、最新列表Set去重、交集共同好友ZSet排行榜、延迟队列3.2 持久化RDB快照体积小、恢复快可能丢最后一次快照后数据。AOF追加命令日志可秒级持久化文件大、恢复慢appendfsync everysec折中。生产通常RDB AOF 混合Redis 4.0。3.3 三大缓存问题必考问题原因方案穿透查不存在的 key压到 DB空值缓存 /布隆过滤器击穿热点 key 失效瞬间高并发打 DB互斥锁只放一个重建/ 逻辑过期雪崩大量 key 同时失效过期时间加随机 / 多级缓存 / 限流降级3.4 高可用主从复制读写分离、哨兵故障自动切换、Cluster数据分片 16384 slot需多 key 路由同槽用 hash tag。四、Spring 体系4.1 IOC / DIIOC控制反转对象创建交给容器。DI依赖注入构造器 / setter / 字段Autowired。4.2 AOP面向切面核心概念切点Pointcut、通知Before/After/AfterReturning/AfterThrowing/Around、切面。实现JDK 动态代理接口/ CGLIB类子类代理。事务Transactional即 AOP。4.3 Bean 作用域与生命周期作用域singleton默认单例/prototype每次新/request/session。生命周期实例化 → 属性填充 → Aware 接口 →BeanPostProcessor前置 → 初始化init→ 后置 → 就绪 → 销毁destroy。4.4 Spring Boot 自动配置SpringBootApplicationConfigurationComponentScanEnableAutoConfiguration。starter依赖聚合spring.factories/AutoConfiguration.imports加载自动配置类Conditional条件装配。4.5 Spring MVC 流程请求 →DispatcherServlet→HandlerMapping找 Controller→HandlerAdapter→ 执行 →ModelAndView→ViewResolver→ 响应。五、消息队列MQ5.1 作用解耦、异步、削峰。典型下单后发消息库存/积分/通知异步消费避免同步阻塞。5.2 可靠性生产者确认机制confirm、本地消息表。Broker持久化、镜像/副本。消费者手动 ACK消费失败重试 / 死信队列。5.3 重复与顺序幂等消费端去重唯一键 / 状态机 / Redis 去重防止重复消费。顺序同业务 key 路由同一队列如 Kafka 分区、RocketMQ 顺序消息。六、分布式6.1 CAP一致性C/ 可用性A/ 分区容错P。网络分区必然存在故通常在 CP 与 AP 间取舍。ZooKeeper 偏 CPEureka/Redis 主从偏 AP。6.2 分布式锁RedisSET key value NX EX原子推荐Redisson看门狗自动续期。ZooKeeper临时顺序节点保证唯一、可阻塞。注意锁需设超时防死锁释放必须是自己加的锁value 校验 / Lua 脚本。6.3 分库分表垂直按业务拆库拆表降低单表字段/库压力。水平按分片键如 user_id 取模、范围、哈希拆分难点跨片查询、分布式 ID雪花算法、分页。6.4 分布式事务2PC强一致但阻塞、单点。TCCTry/Confirm/Cancel业务侵入强。最终一致本地消息表 / 事务消息RocketMQ主流实践。6.5 Session 共享无状态化TokenJWT 网关校验或 Redis 集中存储 Session。七、微服务Spring Cloud注册中心EurekaAP/NacosCPAP注册配置一体。网关Spring Cloud Gateway路由、鉴权、限流。远程调用OpenFeign声明式。熔断限流Sentinel / Hystrix已停更。配置中心Nacos / Config。链路追踪Sleuth Zipkin / SkyWalking。八、系统设计加分短链系统长链 hash / 自增 ID 转 62 进制查表或布隆过滤器防冲突。秒杀动静分离、Redis 预扣库存、消息队列异步下单、限流令牌桶、防超卖Lua 原子扣减。设计原则先定 QPS/容量再拆模块缓存前置、异步解耦、降级兜底。九、安全认证 vs 授权认证你是谁授权你能做什么。JWT无状态 TokenHeader.Payload.Signature过期前难吊销适合分布式。OAuth2授权码模式第三方登录。防护XSS转义/CSP、CSRFToken/同源校验、SQL 注入预编译、密码加盐哈希BCrypt。十、易踩坑清单坑现象解决索引失效慢查询避免函数/前导% / 类型转换深分页越翻越慢子查询游标 / 游标分页缓存与 DB 不一致读到旧值延时双删 / 订阅 binlogCanalTransactional不生效私有方法/自调用用代理调用 / AspectJ分布式锁无超时死锁设超时 看门狗大事务锁表、连接占用拆分、异步化接口无幂等重复提交唯一键 / Token限流缺失雪崩网关 熔断十一、高频面试题 30 连击TCP 三次握手为什么是三次TIME_WAIT 作用HTTP 常见状态码HTTPS 握手过程HTTP/2 相比 1.1 提升为什么 MySQL 用 B 树聚簇与非聚簇索引区别最左前缀原则什么情况索引失效事务隔离级别与幻读MVCC 原理行锁升级表锁条件间隙锁解决什么问题如何定位慢 SQLRedis 五种结构及场景RDB 与 AOF 区别缓存穿透/击穿/雪崩及方案Redis 集群 slot 数IOC 与 DI 区别AOP 实现原理JDK/CGLIBBean 生命周期Spring Boot 自动配置原理Transactional 失效场景MQ 如何保证不丢消息如何保证消费幂等CAP 理论及取舍分布式锁实现与注意事项分库分表怎么分分布式 ID分布式事务方案秒杀系统如何设计
返回列表