java面试知识点
2026-11-05 17:02:00 0 举报仅支持查看
java面试知识点
java面试知识点总结
模板推荐
作者其他创作
大纲/内容
Java 基础
面向对象
封装是什么: 把数据和操作数据的方法包装在一个类里,并对外隐藏内部实现细节,只暴露必要的接口。
继承是什么: 一个类(子类)可以继承另一个类(父类)的属性和方法,实现代码复用和层次关系。
多态是什么: 同一个方法调用,在不同对象上有不同的表现。核心是父类引用指向子类对象。
抽象类(abstract class): 用 abstract 修饰的类,不能实例化,可以包含抽象方法和具体方法。表达的是一种 "is-a" 关系。
接口(interface): 一种完全抽象的类型(Java 8 后有默认方法),定义一组行为规范。表达的是一种 "can-do" 能力。
集合框架
List
ArrayList:基于动态数组,查询 O(1)、中间增删 O(n)<br>
底层:Object[] elementData,默认容量 10(第一次 add 时才分配)。<br><br>扩容:newCapacity = oldCapacity + (oldCapacity >> 1),即 1.5 倍;扩容时用 Arrays.copyOf 整体复制。<br><br>查询 O(1):前提是按下标 get(index)。<br><br>中间增删 O(n):因为要 System.arraycopy 移动元素。<br><br>尾部 add 均摊 O(1),但触发扩容那一次是 O(n)。<br><br>线程不安全;多线程可用 CopyOnWriteArrayList 或 Collections.synchronizedList。<br><br>fail-fast:迭代时 modCount 变化会抛 ConcurrentModificationException。
LinkedList:基于双向链表,增删 O(1)、查询 O(n)
底层:双向链表 Node<E>{ prev, item, next },同时实现了 List 和 Deque。<br><br>增删 O(1):前提是已经拿到该节点(比如通过迭代器)。如果按 index 增删,仍要先遍历,是 O(n)。<br><br>查询 O(n):get(index) 会判断 index 在前半段还是后半段,决定从头还是从尾遍历,平均 O(n/4),但量级仍是 O(n)。<br><br>内存开销大:每个元素多两个引用。<br><br>实际建议:绝大多数场景用 ArrayList 更好,LinkedList 仅在频繁头尾操作(当 Deque 用)时有优势。
Map
HashMap:数组+链表+红黑树,JDK8 尾插法,扩容 2 倍
底层:Node[] table + 链表 + 红黑树(JDK8 起)。<br><br>哈希扰动:h = key.hashCode() ^ (h >>> 16),让高位参与运算,减少碰撞。<br><br>索引:(n - 1) & hash,所以容量必须是 2 的幂。<br><br>链表转红黑树:链表长度 ≥ 8 且数组长度 ≥ 64;否则先扩容。退化阈值是 6。<br><br>插入:JDK8 是尾插法(JDK7 头插法,扩容时可能形成环)。<br><br>扩容:容量和阈值都 2 倍;JDK8 扩容时通过 (e.hash & oldCap) == 0 把节点分成 lo/hi 两条链,无需重新计算 hash。<br><br>默认:容量 16,负载因子 0.75。<br><br>线程不安全:多线程可用 ConcurrentHashMap(JDK8 用 CAS + synchronized 锁头节点)。
TreeMap:基于红黑树,按 key 排序,支持范围查询
底层:红黑树,key 必须实现 Comparable 或传入 Comparator。<br><br>有序:按 key 自然序或比较器序,中序遍历即升序。<br><br>查询/增删:O(log n)。<br><br>范围查询:subMap、headMap、tailMap、firstKey、lastKey、floorKey、ceilingKey 等。<br><br>不是线程安全;有序并发场景可用 ConcurrentSkipListMap。<br><br>对比:HashMap 无序 O(1),LinkedHashMap 保持插入/访问顺序,TreeMap 排序 O(log n)。
ConcurrentHashMap:JDK8 CAS+synchronized 锁桶头,并发安全
底层:JDK8 起是 Node[] table + 链表 + 红黑树,结构和 HashMap 基本一致。<br><br>并发控制:<br><br>CAS:数组某个桶为空时,用 casTabAt 直接 CAS 放入首节点,不加锁。<br><br>synchronized:桶非空时,锁该桶的头节点,只影响这一个桶,锁粒度细。<br><br>扩容:多线程协同扩容,通过 ForwardingNode 标记已迁移的桶,其他线程遇到会帮忙迁移。<br><br>size:用 baseCount + CounterCell[] 分段计数,类似 LongAdder,避免单一热点。<br><br>不允许 null:key 和 value 都不能为 null(HashMap 允许)。<br><br>弱一致性迭代:迭代器不会抛 ConcurrentModificationException,但不保证看到最新数据。<br><br>对比 JDK7:JDK7 是 Segment[] 分段锁,默认 16 段;JDK8 改成 CAS + synchronized 锁桶头,粒度更细。
Set
HashSet:基于 HashMap 实现,value 存 PRESENT 占位
底层:内部就是一个 HashMap<E, Object>。<br><br>value:所有 key 共用同一个静态占位对象 PRESENT = new Object()。<br><br>去重:靠 hashCode() + equals(),和 HashMap 的 key 规则一致。<br><br>无序:不保证顺序,顺序可能随扩容变化。<br><br>增删查:平均 O(1),最坏 O(log n)(红黑树退化保护)。<br><br>线程不安全;并发可用 ConcurrentHashMap.newKeySet() 或 Collections.newSetFromMap。<br><br>保序版本:LinkedHashSet(插入序);排序版本:TreeSet。<br><br>
TreeSet:基于 TreeMap,按元素排序,元素需可比较
底层:内部就是一个 TreeMap<E, Object>,value 同样是占位对象。<br><br>排序:按元素自然序(实现 Comparable)或构造时传入 Comparator。<br><br>元素可比较:没传 Comparator 时,add 非 Comparable 元素会抛 ClassCastException。<br><br>去重:靠 compareTo / compare 返回 0,不是 equals。这点和 HashSet 不同,容易踩坑。<br><br>复杂度:增删查 O(log n)。<br><br>范围操作:subSet、headSet、tailSet、first、last、floor、ceiling 等,和 TreeMap 一一对应。<br><br>不允许 null(自然序时);传了能处理 null 的 Comparator 才可以。<br><br>线程不安全;并发有序可用 ConcurrentSkipListSet。<br><br>
List:有序可重复集合,ArrayList 查询快、LinkedList 增删快
Map:键值对存储,HashMap 无序、TreeMap 有序、ConcurrentHashMap 线程安全
Set:无序不重复集合,HashSet 基于 HashMap、TreeSet 基于红黑树
底层数据结构与扩容机制:ArrayList 1.5 倍扩容,HashMap 负载因子 0.75
异常体系
Error:JVM 无法处理的严重错误,如 OOM、StackOverflowError
Exception:程序可处理的异常,分受检异常与运行时异常
RuntimeException:非受检异常,如 NPE、IndexOutOfBounds
try-catch-finally 执行顺序:try 先执行,finally 一定执行,return 前先走 finally
泛型
泛型擦除:编译后泛型被擦除为 Object 或上界,运行时不可见
通配符 extends / super:extends 用于读、super 用于写,遵循 PECS 原则
反射与注解
Class 对象获取方式:类名.class、对象.getClass()、Class.forName()
自定义注解与元注解:@Target、@Retention、@Documented、@Inherited
IO 与 NIO
字节流 / 字符流:字节流处理二进制,字符流处理文本并带编码
BIO / NIO / AIO 区别
BIO:同步阻塞。一个连接一个线程,线程发起读写后必须死等结果。
NIO:同步非阻塞。一个线程管理多个连接,通过轮询(Selector)查看哪个连接有数据就绪。
AIO:异步非阻塞。发起读写后立刻返回,操作系统完成后会主动通知你(回调)。
零拷贝:mmap、sendfile,减少内核态与用户态数据拷贝
新特性
Lambda 与函数式接口:函数式接口只有一个抽象方法,可用 Lambda 简化
Stream 流操作:中间操作惰性、终端操作触发执行,支持并行流
Optional:包装可能为 null 的值,避免空指针与多层判空
字符串
String / StringBuilder / StringBuffer
String:不可变。每次修改都会创建新对象,适合少量字符串操作。<br>
StringBuilder:可变,线程不安全。修改时在原对象上进行,速度最快,适合单线程下大量拼接。
StringBuffer:可变,线程安全。方法加了 synchronized 锁,速度稍慢,适合多线程下大量拼接。
字符串常量池:字符串常量池是一块位于堆内存中的特殊区域,它缓存了所有字面量字符串对象。当代码中出现字面量字符串时,JVM 会先检查池中是否已有相同内容的字符串,有则直接复用,没有才创建。
JUC 并发
线程基础
线程生命周期与状态转换:
NEW(新建)<br>含义:线程对象已创建,但尚未调用 start()。<br>特点:此时它只是一个普通的 Java 对象,操作系统层面还没有真正的线程。<br>转换:调用 start() 后进入 RUNNABLE。<br>
RUNNABLE(可运行)<br>含义:线程已启动,正在 JVM 中执行,或正在等待操作系统分配 CPU 时间片。<br>特点:这是一个复合状态,包含了操作系统的"就绪"和"运行中"两种状态。Java 层面无法区分,统一叫 RUNNABLE。<br>转换:<br>被 synchronized 阻塞 → BLOCKED<br>调用 wait() / join() / park() → WAITING<br>调用 sleep() / wait(timeout) / join(timeout) → TIMED_WAITING<br>执行完毕 → TERMINATED
BLOCKED(阻塞)<br>含义:线程正在等待获取一个监视器锁(monitor lock),即等待进入 synchronized 代码块或方法。<br>关键点:只有 synchronized 引起的等待才叫 BLOCKED。ReentrantLock.lock() 等待锁时,线程状态是 WAITING 而非 BLOCKED。<br>转换:拿到锁后回到 RUNNABLE。
WAITING(无限等待)<br>含义:线程正在无限期等待另一个线程执行特定操作来唤醒它。<br>进入方式:<br>Object.wait()(无参)<br>Thread.join()(无参)<br>LockSupport.park()<br>唤醒方式:<br>Object.notify() / notifyAll()<br>目标线程执行完毕(join 的场景)<br>LockSupport.unpark(thread)<br>特点:没有超时时间,不唤醒就一直等。
TIMED_WAITING(限时等待)<br>含义:线程正在等待,但有明确的超时时间,时间到了会自动唤醒。<br>进入方式:<br>Thread.sleep(millis)<br>Object.wait(timeout)<br>Thread.join(timeout)<br>LockSupport.parkNanos() / parkUntil()<br>特点:与 WAITING 的区别仅在于是否有超时。
TERMINATED(终止)<br>含义:线程的 run() 方法执行完毕,或抛出未捕获异常导致线程结束。<br>特点:线程一旦终止,不能再次启动。调用 start() 会抛 IllegalThreadStateException。
创建线程的方式:继承 Thread、实现 Runnable、实现 Callable、线程池
线程中断机制:interrupt 设置标志位,isInterrupted 判断,不强制终止
线程池
核心线程数:长期保持的线程数,任务来了先看它。推荐值:CPU 密集用核数+1,I/O 密集用核数×2。
<br>
最大线程数:最大线程数,队列满才生效。推荐值:根据业务峰值和资源设定。
空闲存活时间:非核心线程空闲存活时间,默认只作用于非核心线程。推荐值:60s 左右。
时间单位:时间单位,配合空闲存活时间。推荐值:TimeUnit.SECONDS。
任务队列:任务等待队列,决定扩容时机。推荐值:ArrayBlockingQueue 有界队列。
线程工厂:创建线程,自定义线程名。推荐值:必设,便于排查。
拒绝策略:拒绝策略,兜底保护。推荐值:核心业务用 Abort 或 CallerRuns。
AbortPolicy(中止策略,默认):行为是直接抛出 RejectedExecutionException,风险是任务丢失、需捕获,适用场景是关键业务、快速失败。
CallerRunsPolicy(调用者运行策略):行为是由提交任务的线程自己执行,风险是阻塞提交线程、降低吞吐,适用场景是可容忍降级、不丢任务。
DiscardPolicy(丢弃策略):行为是静默丢弃、不抛异常,风险是任务悄悄丢失、难以发现,适用场景是非关键任务。
DiscardOldestPolicy(丢弃最老任务策略):行为是丢弃队列中最老的任务、再尝试提交,风险是老任务丢失,适用场景是只关心最新任务。
锁机制
synchronized 原理与锁升级:偏向锁、轻量级锁、重量级锁,锁对象头 Mark Word
ReentrantLock 与 AQS:基于 AQS 的 state 与 CLH 队列,支持公平与非公平
读写锁 ReentrantReadWriteLock:读读共享、读写互斥、写写互斥
乐观锁与悲观锁:乐观锁靠版本号或 CAS,悲观锁先加锁再操作
CAS 与 ABA 问题:比较并交换,ABA 用版本号或 AtomicStampedReference 解决
并发工具类
CountDownLatch:一次性门闩,主线程等待 N 个任务完成
CyclicBarrier:可循环屏障,一组线程互相等待到齐
Semaphore:信号量控制并发访问数量,支持公平与非公平
线程池
Exchanger:两个线程间交换数据
ThreadPoolExecutor 核心参数:核心数、最大数、空闲时间、队列、线程工厂、拒绝策略
任务提交与执行流程:核心线程→队列→非核心线程→拒绝策略
拒绝策略:AbortPolicy、CallerRunsPolicy、DiscardPolicy、DiscardOldestPolicy
线程池状态与调优:RUNNING、SHUTDOWN、STOP、TIDYING、TERMINATED,按 IO/CPU 密集型设置
并发容器
ConcurrentHashMap:分段 CAS 加锁,高并发下性能好
CopyOnWriteArrayList:写时复制,读多写少场景适用
BlockingQueue 系列:ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue
原子类
AtomicInteger 等基本类型:基于 CAS 实现原子自增自减
原子引用与字段更新器:AtomicReference、AtomicIntegerFieldUpdater
内存模型
JMM 与 happens-before:主内存与工作内存,定义可见性与有序性规则
volatile 可见性与禁止重排序:写后立即刷主存,读前从主存加载,插入内存屏障
辅助工具
CompletableFuture:支持链式异步编排、组合与异常处理
ThreadLocal 与内存泄漏:线程私有副本,key 弱引用,用完需 remove
JVM
内存结构
堆、栈、方法区、程序计数器:线程共享堆与方法区,栈与 PC 线程私有
直接内存:NIO 使用堆外内存,不受堆大小限制但受物理内存限制
对象创建与内存布局:对象头、实例数据、对齐填充,TLAB 分配
垃圾回收
引用计数 / 可达性分析:Java 用可达性分析,从 GC Roots 出发标记
标记清除 / 复制 / 标记整理:碎片、空间浪费、移动整理各有取舍
分代收集与常见收集器:Serial、Parallel、CMS 及适用场景
G1 / ZGC:G1 分区可预测停顿,ZGC 染色指针低延迟
类加载机制
类加载过程:加载、验证、准备、解析、初始化
双亲委派模型:先委托父加载器,避免核心类被篡改
打破双亲委派:重写 loadClass,如 Tomcat、SPI、OSGi
内存分配与回收策略
对象优先在 Eden 分配:大多数对象在新生代 Eden 分配
大对象直接进老年代:超过阈值的大数组直接进老年代
动态年龄判定:Survivor 中同龄对象总和超一半则晋升
调优与排查
常用 JVM 参数:-Xms、-Xmx、-Xmn、-XX:MetaspaceSize、GC 相关参数
内存溢出与内存泄漏:OOM 类型区分,泄漏多为集合或 ThreadLocal 未释放
常用排查工具:jps / jstat / jmap / jstack / Arthas
Spring
IoC 容器
Bean 定义与注册:XML、注解、@Bean、@Import 等方式注册 BeanDefinition
Bean 生命周期:实例化、属性填充、初始化、使用、销毁
依赖注入方式:构造器注入、Setter 注入、字段注入
循环依赖与三级缓存:单例 setter 循环依赖靠三级缓存解决
AOP
动态代理 JDK / CGLIB:JDK 基于接口,CGLIB 基于继承生成子类
切面、切点、通知:@Aspect、@Pointcut、@Before/@After/@Around
AOP 应用场景:日志、事务、权限、缓存、限流
事务
声明式事务原理:@Transactional 通过 AOP 代理在方法前后开启提交回滚
事务传播行为:
<br>
事务失效场景:自调用、非 public、异常被吞、传播行为配置不当
常用扩展点
BeanPostProcessor:Bean 初始化前后增强,如 AOP 代理
BeanFactoryPostProcessor:BeanFactory 初始化后修改 BeanDefinition
ApplicationListener:监听容器事件,实现事件驱动扩展
SpringBoot
自动装配
@SpringBootApplication 组成:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan
自动配置原理:spring.factories / AutoConfiguration.imports 加载自动配置类
条件注解:@ConditionalOnClass、@ConditionalOnMissingBean 等按条件生效
启动流程
SpringApplication 启动过程:准备环境、创建容器、refresh、执行 Runner
<br>
内嵌容器启动:Tomcat/Jetty/Undertow 通过 ServletWebServerFactory 创建
配置管理
配置文件加载顺序:命令行 > 环境变量 > 外部配置 > jar 内配置
多环境配置:application-{profile}.yml 配合 spring.profiles.active
配置绑定:@ConfigurationProperties 与 @Value 绑定配置
常用特性
Starter 机制:依赖聚合加自动配置,开箱即用
自定义 Starter:编写自动配置类并注册到 imports 文件
监控 Actuator:暴露健康检查、指标、端点,配合 Prometheus 采集
SpringMVC
请求处理流程
DispatcherServlet 核心流程:请求分发、处理器查找、执行、视图渲染
HandlerMapping 与 HandlerAdapter:前者定位处理器,后者适配执行
核心组件
参数绑定与类型转换:@RequestParam、@PathVariable、Converter
返回值处理:HandlerMethodReturnValueHandler 处理 @ResponseBody
拦截器与过滤器:Filter 在 Servlet 层,Interceptor 在 SpringMVC 层
注解
@RequestMapping 系列:@GetMapping、@PostMapping 等限定请求方式
@RequestBody / @ResponseBody:基于 HttpMessageConverter 做 JSON 转换
@ControllerAdvice 与全局异常:@ExceptionHandler 统一处理异常
数据校验
参数校验:@Valid、@Validated 配合 JSR303 注解
统一响应封装:Result 包装状态码、消息与数据
MyBatis-Plus
基础能力
通用 CRUD 与 BaseMapper:继承 BaseMapper 即拥有单表增删改查
条件构造器 QueryWrapper:链式构建 where 条件,LambdaQueryWrapper 防字段硬编码
分页与插件
分页插件:PaginationInnerInterceptor 实现物理分页
乐观锁插件:@Version 配合 OptimisticLockerInnerInterceptor
逻辑删除:@TableLogic 标记删除字段,查询自动过滤
高级特性
代码生成器:AutoGenerator 按表生成实体、Mapper、Service
自动填充:MetaObjectHandler 填充创建时间、更新人等字段
多数据源:@DS 注解配合 dynamic-datasource 切换数据源
主键策略:ASSIGN_ID 雪花算法、AUTO 自增、ASSIGN_UUID
Spring Cloud Alibaba 生态
注册与配置
Nacos 服务注册与发现:临时实例心跳、持久实例主动探测
Nacos 配置中心与动态刷新:@RefreshScope 配合长轮询推送配置
服务调用
OpenFeign 声明式调用:接口加注解即可远程调用,集成负载均衡
负载均衡 LoadBalancer:默认轮询,支持自定义策略
流量治理
Sentinel 限流、熔断、降级:流控、熔断、系统保护规则
Sentinel 规则与持久化:规则可持久化到 Nacos 并动态推送
分布式事务
Seata 模式:AT 自动补偿、TCC 手动三段、Saga 长事务
分布式事务一致性:基于 undo_log 与全局锁保证最终一致
网关与链路
Spring Cloud Gateway:基于 WebFlux 的路由、断言与过滤器
链路追踪 Sleuth / SkyWalking:TraceId 贯穿调用链,可视化分析
消息驱动
Spring Cloud Stream
Spring Cloud Stream:Binder 抽象屏蔽 MQ 差异,统一消息编程模型
Redis
数据结构
String / Hash / List / Set / ZSet:五种基础结构及典型使用场景
Bitmap / HyperLogLog / GEO:位图统计、基数估算、地理位置
底层编码与数据结构:SDS、跳表、压缩列表、quicklist、listpack
持久化
RDB 与 AOF:快照恢复快,日志实时性高但体积大
混合持久化:AOF 重写时以 RDB 格式保存,兼顾速度与安全
高可用
主从复制:全量同步加增量同步,读写分离基础
哨兵 Sentinel:监控、选主、故障转移,实现高可用
集群 Cluster:16384 槽分片,支持水平扩展
常见问题
缓存穿透、击穿、雪崩:空值缓存、互斥锁、过期时间加随机值
缓存与数据库一致性:先更新库再删缓存,延迟双删兜底
分布式锁:SETNX 加过期时间,Redisson 看门狗续期
其他
过期策略与内存淘汰:惰性删除加定期删除,八种淘汰策略
<br>
事务与 Lua 脚本:MULTI/EXEC 弱事务,Lua 保证原子性
大 Key 与热 Key:拆分、压缩、本地缓存、读写分离
MySQL
索引
B+ 树索引原理:多路平衡树,叶子节点链表,减少磁盘 IO
聚簇索引与非聚簇索引:聚簇索引叶存数据,二级索引叶存主键
最左前缀原则:联合索引按最左列开始匹配
索引失效场景:函数运算、隐式转换、模糊前缀、范围后失效
事务
ACID 与隔离级别:读未提交、读已提交、可重复读、串行化
MVCC 原理:undo log 版本链加 ReadView 实现一致性读
锁机制:行锁 / 表锁 / 间隙锁:InnoDB 行锁加间隙锁防幻读
SQL 优化
执行计划 Explain:关注 type、key、rows、Extra
慢查询与优化思路:开启慢日志,定位后加索引或改写 SQL
分页优化:延迟关联、覆盖索引、游标分页
架构与扩展
主从复制:binlog 同步,异步或半同步
读写分离:主写从读,注意主从延迟
分库分表:垂直与水平拆分,注意分布式主键与跨库查询
日志
redo log / undo log / binlog:重做日志保证持久、回滚日志保证原子、归档日志用于复制
两阶段提交:prepare 与 commit 保证 redo log 与 binlog 一致
XXL-Job
核心概念
调度中心与执行器:调度中心触发,执行器执行任务
任务与调度策略:cron、固定速率、固定延迟
使用与原理
任务配置与执行流程:调度中心下发,执行器回调结果
路由策略与阻塞策略:轮询、分片等路由,串行、丢弃等阻塞
失败重试与告警:失败重试次数与邮件告警配置
高可用
调度中心集群:基于数据库锁选主,避免重复调度
分片广播:任务分片并行执行,提升处理能力
RocketMQ
核心概念
NameServer / Broker / Producer / Consumer:无状态注册中心与消息角色
Topic / Queue / Tag:主题、队列、标签的层级关系
消息类型
普通消息、顺序消息:顺序消息靠队列有序与单线程消费
事务消息:半消息加回查保证本地事务与消息一致
延时消息:固定延时级别,定时投递
可靠性
消息发送与存储机制:CommitLog 加 ConsumeQueue 索引
消息重试与死信队列:重试 16 次后进死信队列
消息幂等:业务唯一键或去重表保证不重复消费
消费者
推模式与拉模式:Push 基于长轮询,本质仍是拉取
消费位点与消费模式:集群消费与广播消费,位点存 Broker
项目一经验
项目介绍
项目背景与业务价值:说明业务痛点、规模与收益
技术架构与选型:整体架构图与关键技术选型理由
技术亮点
难点问题与解决方案:挑 1-2 个高并发或一致性难点讲清思路
性能优化与成果数据:QPS、响应时间、成本下降等量化指标
个人职责
承担的核心工作:负责的模块与主导的技术方案
团队协作与推进:跨团队沟通、排期与落地推进
面试应对
常见追问与回答思路:容量、故障、扩展性等追问的应对
项目与知识点结合:把项目场景映射到 JVM、并发、MySQL 等考点
项目二经验
项目介绍
项目背景与业务价值:说明业务痛点、规模与收益
技术架构与选型:整体架构图与关键技术选型理由
技术亮点
难点问题与解决方案:挑 1-2 个高并发或一致性难点讲清思路
性能优化与成果数据:QPS、响应时间、成本下降等量化指标
个人职责
承担的核心工作:负责的模块与主导的技术方案
团队协作与推进:跨团队沟通、排期与落地推进
面试应对
常见追问与回答思路:容量、故障、扩展性等追问的应对
项目与知识点结合:把项目场景映射到 JVM、并发、MySQL 等考点
非技术面试题
行为面试题
自我介绍与职业规划:突出与岗位匹配的经历与目标
离职原因与稳定性:客观陈述,避免抱怨前公司
团队冲突与协作:用 STAR 讲清冲突处理与结果
情境面试题
项目延期如何应对:拆分任务、同步风险、调整优先级
线上故障如何处理:先止损再定位,复盘并沉淀预案
与同事意见不合:用数据与方案对比推动共识
动机与匹配度问题
为什么选择我们公司:结合业务、技术栈与个人发展方向
你的优势与不足:优势用案例支撑,不足说明改进措施
期望薪资与到岗时间:给出区间并说明依据
压力面试题
面对质疑如何回应:先认同问题,再给事实与方案
被否定时的心态:保持冷静,聚焦问题本身
高压提问的应对:不急于辩解,结构化表达
综合素质评估
学习能力与自驱力:新技术学习路径与产出
沟通表达与责任心:跨团队协作与主动补位案例
抗压能力与成长性:面对挑战的调整与复盘
评论
0 条评论
下一页