Skip to content
0

🔧 技术面试题清单 — 某企业 IT开发工程师准备

按优先级排序,★数越多越可能考。每题附简要答案思路,先过★多的。


一、Java 核心(★★★★★)

1. HashMap 底层原理

  • 数组+链表+红黑树(jdk8+)
  • put流程:计算hash→定位桶→链表尾插→超8转红黑树
  • 扩容机制:默认16,负载因子0.75,2倍扩容,rehash
  • 线程不安全 → ConcurrentHashMap 用分段锁/CAS

2. 线程池核心参数

  • corePoolSize / maxPoolSize / keepAliveTime / workQueue / ThreadFactory / RejectedExecutionHandler
  • 执行流程:核心→队列→最大→拒绝策略
  • 拒绝策略:AbortPolicy抛异常 / CallerRunsPolicy调用者执行 / DiscardPolicy静默丢弃 / DiscardOldestPolicy丢弃最老
  • 生产不要用Executors默认,手动new ThreadPoolExecutor

3. JVM 内存模型 + GC 基础

  • 堆:新生代(Eden/S0/S1)→ 老年代 → 元空间(取代永久代)
  • GC:Minor GC(Eden满触发)→ Full GC(老年代满)
  • 常用回收器:CMS(低延迟)、G1(默认,大堆推荐)
  • 调优:-Xms -Xmx 设一样防抖动

4. 异常体系 + try-with-resources

  • Throwable → Error / Exception → RuntimeException / Checked Exception
  • try-with-resources:自动调用 AutoCloseable.close()(Java7+)
  • 实战建议:最外层catch不要吞异常,至少要log

5. 反射 vs 注解

  • 反射:运行时获取类信息,setAccessible暴力访问私有
  • 注解:@Retention SOURCE/CLASS/RUNTIME,Spring大量用

二、Spring Boot/Cloud(★★★★★)

6. Spring Boot 自动配置原理

  • @SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan
  • 核心:spring.factories 中的自动配置类
  • 条件注解:@ConditionalOnClass / @ConditionalOnMissingBean / @ConditionalOnProperty
  • 问「怎么自定义starter?」→ 写AutoConfiguration + spring.factories

7. Spring 事务失效场景

  • 同类非事务方法调用(this.method())→ 代理不生效
  • 异常类型不匹配(rollbackFor=Exception.class 没设)
  • 方法不是public、异常被try-catch吞了

8. Spring Cloud 核心组件(你有经验就聊)

  • Nacos:注册中心+配置中心(替代Eureka+Config)
  • Gateway:路由/断言/过滤器(替代Zuul,性能更好)
  • Feign/OpenFeign:声明式HTTP调用 + 负载均衡
  • Sentinel:流量控制/熔断降级(你有WPS文件Feign→HTTP的经历可以说这个)

9. AOP 实际场景

  • 日志记录、权限校验、事务管理、性能监控
  • 关键概念:JoinPoint / PointCut / Advice(@Before @After @Around)
  • Spring AOP基于动态代理(JDK接口代理 / CGLIB类代理)

10. Bean的生命周期

  • 实例化 → 属性赋值 → 各项初始化(Aware接口/BPP/init/init-method)→ 使用 → 销毁
  • 关键扩展点:BeanPostProcessor(前后处理)、InitializingBean、@PostConstruct

三、MyBatis + 数据库(★★★★)

11. MyBatis #{} vs ${}

  • #{}:预编译、防SQL注入、自动加引号(必须优先用
  • ${}:直接拼接字符串,有注入风险(仅用于表名/排序字段动态传入)

12. MyBatis 缓存机制

  • 一级缓存(SqlSession级别,默认开启)→ 二级缓存(namespace级别,需配置)
  • 缓存失效:增删改操作会清空缓存(避免脏读)

13. Oracle 常用点

  • 分页:ROWNUMOFFSET FETCH(12c+)
  • 序列:CREATE SEQUENCE,取值 NEXTVAL
  • 索引:B+树索引,复合索引最左前缀原则
  • 常用函数:NVL/NVL2、DECODE、CASE WHEN、TO_DATE/TO_CHAR

14. SQL 优化经验(结合你的项目说!)

「重构核心接口使响应提升400%,主要做了:慢SQL排查(EXPLAIN看全表扫描)→ 加索引减少联表分页优化结果集缓存到Redis


四、接口开发/RESTful(★★★★)

15. RESTful 规范

  • GET查询 / POST创建 / PUT全量更新 / PATCH部分更新 / DELETE删除
  • 状态码:200成功 / 201创建 / 400参数错误 / 401未认证 / 403无权限 / 404不存在 / 500服务器错误
  • 对接口版本管理:URL路径 /api/v1/ 或 Header

16. 接口鉴权方式

  • JWT Token(无状态、自包含)
  • OAuth2.0(第三方授权)
  • Session+Cookie(有状态、适合服务端渲染)

17. 接口幂等性处理

  • 前端防重复提交 + 后端:唯一流水号(token)去重 / 数据库唯一索引 / Redis分布式锁

五、K8s/Docker(★★★)

18. Docker 核心概念

  • 镜像(Image)→ 容器(Container)→ Dockerfile / docker-compose
  • 常用命令:build / run / exec / logs / compose up

19. K8s 核心组件(你有实战就说)

  • Pod(最小单位)→ Service(暴露服务)→ Deployment(管理副本)→ ConfigMap/Secret(配置)
  • 你的经历:「独立完成华为云K8s生产部署,解决多环境联调难题,输出标准化运维手册」
  • 关键词:ingress、helm、namespace、探针(liveness/readiness)

六、Redis(★★★)

20. Redis 常见数据结构

  • String / Hash / List / Set / ZSet
  • 实战你用过的场景:缓存查询结果、分布式锁(SETNX)、计数器

21. 缓存穿透/击穿/雪崩

  • 穿透:查不存在的数据 → 布隆过滤器或缓存空值
  • 击穿:热点key过期 → 互斥锁重建缓存
  • 雪崩:大量同时过期 → 过期时间加随机值/多级缓存

七、前端(★★)

22. Vue 响应式原理

  • Vue2:Object.defineProperty(递归、无法监听数组下标变更)
  • Vue3:Proxy(性能更好、支持数组/动态属性)← 建议提这个显得新

23. Vue 生命周期

  • beforeCreate → created → beforeMount → mounted → beforeUpdate → updated → beforeDestroy → destroyed
  • 重点:created 初始化数据、mounted 做DOM操作、destroyed 清理定时器

八、项目经验回答套路(必考)

「你说一下你最有挑战的项目?」

选「接口性能优化」,因为数字最亮眼。

框架:「海外开发平台核心查询页特别慢,用户要等几十秒。我排查发现SQL全表扫描 + 联表过多。做了三件事:①优化SQL加索引 ②拆大查询为多步缓存 ③REST接口改批量返回。结果接口响应提升400%,用户从几十秒降到秒级。」

附加:「这个过程我沉淀了SQL优化文档,团队共享。」

「你遇到过什么技术难题?」

选「K8s部署」

「华为云K8s部署没先例,文档不完整,环境联调踩了很多坑。我自己一边试错一边记录,最后成功上线并输出《K8s快速部署手册》,团队后续直接复用。演示期还通宵攻坚,保障零故障交付。」


复习优先级

⭐⭐⭐⭐⭐ 必过:HashMap / 线程池 / Spring Boot自动配置 / 事务失效 / 项目STAR
⭐⭐⭐⭐  重点:MyBatis #/$ / SQL优化 / RESTful规范 / Redis缓存三大问题
⭐⭐⭐   扫一遍:K8s概念 / AOP / Bean生命周期 / Oracle分页
⭐⭐     看一眼:Vue响应式 / 前端生命周期

最后提醒:面试多聊你的实战项目,少背概念。你的项目里全是真实案例,这是最大优势。

最近更新