中软国际✅
- 业务领域: IT 咨询、软件外包服务、行业数字化解决方案(深度服务华为、金融大行、政企客户)
- 技术栈: Vue 2/3、React、TypeScript、HTML5/CSS3、Webpack/Vite、Node.js
- 团队规模: 全球员工超8万人,技术研发团队数万人
- 办公地点: 北京、深圳、西安、南京、武汉、成都、上海
- 公司性质: 大型软件与信息技术服务上市公司
- 薪资水平: 校招10-18万,社招14-30万
岗位类型
- 前端外包开发工程师 - 驻场或离岸承接甲方(如华为终端/华为云、各大银行软件中心)Web 业务开发
- 中后台前端开发工程师 - 负责政企数字化管理平台、企业中台与可视化大屏研发
- 前端测试/质量工程师 - 负责前端自动化测试用例编写、兼容性回归与交付质量审计
技术特色
- 对标顶级大厂的严格代码规范: 深度遵循甲方(如华为研发红线)的代码规范,严格执行静态代码检查(SonarQube)与安全扫描。
- 高复用业务组件库与模板工程: 沉淀多行业通用后台脚手架,实现业务系统开箱即用与敏捷交付。
- 快速技术栈迁移与业务适配能力: 面对不同客户诉求,技术团队具备极强的跨 Vue、React 及原生 JS 的快速切换能力。
面试流程概览
校园招聘
- 简历筛选 → 线上笔试(计算机基础 + 行测) → 专业技术一面 → HR综合面试
- 总流程约2-3周
- 难度: 3/5星
- 通过率: 约25%
社会招聘
- 简历筛选 → 中软内部技术初试 → 甲方技术面试(如华为/银行专家视频面) → 项目组定级沟通 → HR面试/入职背调
- 总流程约1-2周
- 难度: 3.5/5星
- 通过率: 约20%
题库
P0 必考知识点
原生 JavaScript 数组操作:在指定位置插入/删除/替换元素的底层机制(splice)?
答案
核心结论
在 JavaScript 数组操作中,Array.prototype.splice() 是最核心的原地修改(In-place Mutation)方法,支持在任意索引位置执行删除、插入和替换。它会改变原数组并返回包含被删除元素的数组。
原理解析与核心语法
array.splice(startIndex, deleteCount, ...itemsToAdd)
- 删除元素:
const arr = [1, 2, 3, 4]// 从索引 1 开始删除 2 个元素const removed = arr.splice(1, 2)console.log(arr) // [1, 4]console.log(removed) // [2, 3]
- 在中间插入元素(
deleteCount = 0):const arr = [1, 2, 3, 4]// 在索引 2 处插入 'a', 'b'arr.splice(2, 0, 'a', 'b')console.log(arr) // [1, 2, 'a', 'b', 3, 4] - 替换元素:
const arr = [1, 2, 3, 4]// 将索引 1 处的元素替换为 99arr.splice(1, 1, 99)console.log(arr) // [1, 99, 3, 4]
splice vs slice 对比
splice:修改原数组(Mutating),参数是(start, deleteCount, ...items),复杂度 $O(N)$(需内存移动后续元素)。slice:不修改原数组(Pure),返回浅拷贝新数组,参数是(start, end)。
面试官视角
外包技术面试非常重视语言基本功,常考察边界索引传参(如负数索引 splice(-1, 1))、原地变异与纯函数的区别,以及现代 ES2023 新增的非变异方法 toSpliced()。
CSS BEM 命名规范及其在大型企业级项目中的价值?
答案
核心结论
BEM(Block__Element--Modifier)是一种主流的 CSS 类名命名架构思想,旨在解决大型团队开发中全局命名冲突、样式层叠权重失控、代码复用性差及维护成本高的痛点。
结构规范与示例
/* 块 Block:独立有意义的实体容器 */
.btn {}
/* 元素 Element:属于 Block 的子构件,不可脱离 Block 单独存在,用双下划线 __ 拼接 */
.btn__icon {}
.btn__text {}
/* 修饰符 Modifier:Block 或 Element 的状态/样式外观变化,用双中划线 -- 拼接 */
.btn--primary {}
.btn--disabled {}
.btn__icon--large {}
核心优势
- 扁平化选择器权重:全部使用类选择器(Class),避免多层嵌套(如
.header .nav ul li a),选择器权重恒定,易于覆盖。 - 自描述性文档化:仅看 HTML 类名即可清晰知晓组件层级与状态关联。
- 无缝契合组件化:极易与 Vue/React 的单文件组件样式封装相结合。
延伸阅读
考察重点速览
- 必考知识点: HTML5/CSS3 基础特性、JavaScript 数组常用 API(splice/slice/map/reduce)、Vue 基础(组件通信/生命周期)。
- 高频面试题: 数组原地操作、BEM 命名、闭包场景与内存泄漏排查、与甲方客户协作敏捷沟通。
- 编程挑战: 数组去重与扁平化、简单手写 Promise、DOM 事件操作。
备考建议
针对性准备策略
- 突出基础扎实与即战力: 外包驻场要求员工入项即能上手开发,重点展现对常用组件库(Element UI/Ant Design)熟练度与常见 CRUD 业务开发速度。
- 注重甲方沟通与配合度: 表现出抗压能力强、服从项目组工作安排、保密意识与规范意识健全的职业素养。
推荐准备资源
差异化准备建议
- 校招生: 基础扎实,能快速通过笔试与基础编程题即可。
- 社招生: 准备 2-3 个完整的端到端项目交付经验,重点突出独立负责模块、解决线上缺陷及客户满意度。