面试知识点整理(Camunda流程平台\+后端\+Vue前端,瑞声科技JD面试)
面试知识点整理(Camunda流程平台+后端+Vue前端,瑞声科技JD面试)
说明:全部是咱们刚才模拟面试的问答,整理成 Markdown,方便你保存复习,分为【后端 Java】【Camunda 流程平台】【Vue 前端】三大块,每块包含核心关键点 + 面试口述简短答案
一、Java Spring 后端
1. SpringMVC
关键点
-
MVC:Model 模型、View 视图、Controller 控制器
-
DispatcherServlet:前端控制器,统一接收所有 http 请求
-
请求链路:请求→DispatcherServlet→HandlerMapping 匹配处理器→Controller 执行业务→返回结果
-
注解:
@Controller、@RequestMapping,自动参数绑定、参数校验 -
项目场景:表单引擎、Camunda 平台所有接口基于 SpringMVC
口述短句 SpringMVC 是 Spring 的 web 框架,DispatcherServlet 作为前端控制器统一拦截请求,匹配到对应的 Controller 执行业务,自动完成参数绑定,我们自研表单引擎和 Camunda 平台的接口都基于它开发。
2. Spring IOC 控制反转 & DI 依赖注入
关键点
-
IOC:对象创建、生命周期交给 Spring 容器,不再手动 new 对象,实现控制反转
-
DI:容器自动把依赖 Bean 注入目标对象,是 IOC 的实现方式
-
3 种注入:构造器注入、setter 注入、字段注入
-
优势:解耦,方便单元测试,统一管理 Bean 生命周期
-
场景:Camunda 服务、表单引擎相关 Bean 交给 Spring 容器管理
口述短句 IOC 就是把对象创建交给 Spring 容器,不用手动 new。DI 依赖注入,由容器自动注入依赖。推荐优先构造器注入,解耦更好,方便单元测试。
3. 数据库事务隔离级别
关键点
-
读未提交:最低,脏读、不可重复读、幻读全部存在
-
读已提交:杜绝脏读;存在不可重复读、幻读
-
可重复读:MySQL InnoDB 默认;杜绝脏读、不可重复读,MVCC 缓解幻读
-
串行化:最高级别,无并发问题,性能最差
业务选型:单据、导入、流程业务一般选用【读已提交 / 可重复读】
口述短句 一共 4 个隔离级别。读未提交问题最多;读已提交只能防止脏读;可重复读是 MySQL 默认,MVCC 缓解幻读;串行化性能差。我们流程单据业务一般用读已提交或者可重复读。
4. HashMap & Hashtable
关键点
-
HashMap:线程不安全;key/value 允许 null;JDK1.8 数组 + 链表 + 红黑树;初始容量 16,扩容 ×2
-
Hashtable:方法加
synchronized,线程安全;key、value 不能为 null;初始容量 11,扩容*2+1;已过时 -
并发场景:推荐
ConcurrentHashMap,不使用 Hashtable
口述短句 HashMap 线程不安全,可以存 null,JDK1.8 链表过长转为红黑树。Hashtable 方法加 synchronized 锁,性能差,不允许 null 键值,已经过时。并发场景优先 ConcurrentHashMap。
5. 异步交互注意点
关键点
-
幂等:唯一 requestId / 业务单号,防止重复执行
-
单据状态机,记录处理中 / 成功 / 失败
-
重试次数限制,重试耗尽转入人工处理
-
日志持久化,保存交互记录
-
接口鉴权、参数校验,控制并发
口述短句 异步交互核心做好幂等,携带唯一请求标识防止重复执行。维护单据状态,设置最大重试次数,失败数据人工处理;接口做好鉴权,完整记录交互日志。
6. 幂等性(非数据库唯一索引方案)
关键点
-
使用唯一业务单号 /requestId 作为幂等 key
-
异步调用下游接口携带该唯一标识
-
下游系统识别标识,重复请求直接返回上次结果
-
防止 Camunda 服务任务重试带来重复推送、重复业务操作
口述短句 不靠数据库唯一索引,每次异步调用下游,带上唯一 requestId 也就是单据 ID。下游识别这个标识,重复请求不执行业务,直接返回历史结果,避免多次执行。
二、Camunda 流程平台(核心,岗位重点)
1. 流程定义 & 流程实例
关键点
-
流程定义:静态模板(BPMN 画布配置,审批节点、分支、会签),存在版本管理
-
流程实例:用户发起的单次审批单据,基于流程定义模板运行
-
版本机制:部署新版本流程定义,已经在跑的旧实例继续使用旧版本,互不干扰
口述短句 流程定义是审批模板,可以拖拽配置节点,支持多版本;流程实例就是用户发起的每一笔具体审批单。部署新版本不会影响正在运行的旧流程实例。
2. Camunda Job 任务
关键点
-
Job 用于异步服务任务、定时任务、超时事件;引擎内部持久化
-
Job 重试机制:失败自动重试,重试耗尽任务进入死信,人工干预
-
Job 执行会触发服务任务代码,需要做接口幂等
3. 分支条件、会签、驳回跳转
关键点
-
分支(排他网关):满足条件走其中一条分支
-
会签:多实例任务,支持按人数 / 比例判断是否完成
-
驳回跳转:支持驳回到指定历史节点,需要记录审批历史快照
4. 表单引擎、流程绑定表单、审批数据落库
关键点
-
表单引擎:拖拽生成表单配置,动态渲染字段、字段权限
-
表单与流程绑定:发起流程时,表单数据存入流程变量
-
审批数据落库:业务单据单独存业务库;流程变量保存流程侧数据;审批人快照处理,防止人员离职丢失名称
5. 系统对接(Camunda 对接 ERP/MES/ 第三方系统)
关键点
-
异步服务任务对接下游系统
-
幂等、状态机、重试、日志记录
-
下游操作失败,单据状态标记失败,支持人工重试
6. 冷热数据分离优化
关键点
- 历史审批单据量大:冷热分离。热表存放近期流程单据,可读写;冷表归档历史数据,只读。减少主表压力。
三、Vue3 前端(后端联调需要掌握)
1. ref / reactive
关键点
-
ref:基础类型;代码内访问需要
.value;模板省略.value -
reactive:对象、数组;不需要
.value;直接整体替换对象会丢失响应式
口述短句 ref 用来存基础类型,js 代码取值要加.value;reactive 用于对象数组,不用.value。reactive 不能直接整体赋值新对象,否则丢失响应式。
2. watch 和 watchEffect
关键点
-
watch:显式指定监听源,可以拿到 oldValue,默认不立即执行
-
watchEffect:自动收集依赖,创建立即执行,拿不到旧值
口述短句 watch 需要明确指定监听变量,可以拿到新旧值,默认不会立刻执行。watchEffect 自动收集用到的依赖,一创建就执行一次,无法获取旧值。
3. v-if 和 v-for
关键点
-
v-if:条件渲染,DOM 销毁;适合不常显示的区块
-
v-for:列表循环渲染
-
❌禁止写在同一个标签,v-for 优先级更高,先循环再判断,浪费性能
-
✅方案:外层套
<template>写 v-if,或者提前过滤数组
4. Vue 组件通信
关键点
-
父传子:props
-
子传父:emit 事件
-
多层组件:provide/inject
-
全局状态:Pinia(Vue3 推荐)
-
表单场景:父组件下发字段配置,子组件 emit 回填表单数据
口述短句 父传子用 props;子组件向父组件传递数据用 emit。多层嵌套可以用 provide/inject。全局状态管理用 Pinia。我们表单引擎父组件下发字段权限配置,子组件通过 emit 回传表单填写结果。
5. 字段权限前后端校验
关键点 前端控制仅做展示隐藏;后端必须二次校验,前端可被绕过。后端判断字段是否可读、可写,保存接口校验权限。
四、面试开放性问题
分批导入,异步查询第三方库写入本地库注意点 幂等、状态机、分批处理、异常数据单独记录、日志持久化、超时与重试控制
