面试知识点整理(Camunda流程平台\+后端\+Vue前端,瑞声科技JD面试)

第 13 / 13 章

面试知识点整理(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. 数据库事务隔离级别

关键点

  1. 读未提交:最低,脏读、不可重复读、幻读全部存在

  2. 读已提交:杜绝脏读;存在不可重复读、幻读

  3. 可重复读:MySQL InnoDB 默认;杜绝脏读、不可重复读,MVCC 缓解幻读

  4. 串行化:最高级别,无并发问题,性能最差

业务选型:单据、导入、流程业务一般选用【读已提交 / 可重复读】

口述短句 一共 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. 字段权限前后端校验

关键点 前端控制仅做展示隐藏;后端必须二次校验,前端可被绕过。后端判断字段是否可读、可写,保存接口校验权限。

四、面试开放性问题

分批导入,异步查询第三方库写入本地库注意点 幂等、状态机、分批处理、异常数据单独记录、日志持久化、超时与重试控制