校招|蚂蚁集团前端实习面经

校招|蚂蚁集团前端实习面经
最新回答
爷是那么黑

2026-04-26 14:50:28

蚂蚁集团前端实习一面面经核心问题及解答如下:

JavaScript 基础
  • Object.create(null) 和 {} 的区别

    Object.create(null) 创建一个无原型链的空对象(无继承属性),适合作为纯数据字典;{} 继承自 Object.prototype,包含 toString、hasOwnProperty 等方法。

    示例:Object.create(null).toString 报错,{}.toString 返回函数。

  • Object.keys() 和 for…in 的区别

    Object.keys() 仅返回对象自身可枚举属性的数组;for…in 遍历对象自身及原型链的可枚举属性,需配合 hasOwnProperty 过滤。

    示例:Object.keys({a:1, __proto__: {b:2}}) 返回 ['a'],for…in 会遍历 b。

  • hasOwnProperty 和 in 的区别

    hasOwnProperty 检查属性是否为对象自身所有;in 检查属性是否在对象或其原型链上。

    示例:({a:1}).hasOwnProperty('a') 返回 true,'toString' in {} 返回 true。

  • 原型链属性 vs 对象自身属性

    原型链属性通过 __proto__ 继承,访问时逐级向上查找;自身属性直接定义在对象上,优先级更高。

    修改原型链属性会影响所有继承该原型的对象。

  • Array.map 用法

    map 遍历数组并返回新数组,不修改原数组。常用于数据转换,如 [1,2,3].map(x => x*2) 返回 [2,4,6]。

  • 数组去重方法

    Set:[...new Set(arr)]

    filter + indexOf:arr.filter((item, index) => arr.indexOf(item) === index)

    reduce:arr.reduce((acc, cur) => acc.includes(cur) ? acc : [...acc, cur], [])

  • this 指向场景

    默认绑定(非严格模式指向 window,严格模式 undefined)

    隐式绑定(方法调用时指向调用对象,如 obj.method())

    显式绑定(call/apply/bind 强制指定 this)

    new 绑定(构造函数中指向新创建的对象)

    箭头函数(继承外层 this,无自身 this)。

  • Map 和 WeakMap

    Map:键可为任意类型,迭代有序,支持大小查询;

    WeakMap:键必须是对象,弱引用(不阻止垃圾回收),不可迭代,适合存储私有数据。

小程序开发
  • 开发框架

    蚂蚁集团小程序可能使用原生或自研框架(如支付宝小程序框架),需了解其生命周期、组件化机制。

    其他框架如 Taro、WePY 可实现跨平台开发,需对比其与原生开发的差异。

  • 与传统 Web 开发的不同

    运行环境:小程序基于双线程(渲染层+逻辑层),Web 为单线程。

    API 差异:小程序提供原生能力(如支付、地理位置),Web 依赖浏览器 API。

    性能优化:小程序需注意包大小限制、分包加载,Web 侧重代码分割、懒加载。

  • 开发中的奇怪问题

    例如:setData 频繁触发导致性能问题,需合并数据或使用防抖;

    样式隔离问题,需检查 usingComponents 或样式作用域配置。

工程化与工具
  • 域名注册

    域名通常通过阿里云、腾讯云等注册,需备案后用于生产环境。

  • Git 使用

    常用命令:clone、branch、commit、push、pull、merge、rebase。

    协作流程:如 Git Flow 或 GitHub Flow,需掌握 feature 分支开发与 pull request 合并。

  • 云服务与数据库

    云服务:阿里云、AWS 等,可能涉及服务器部署、CDN 加速。

    数据库:MySQL(关系型)、MongoDB(文档型),索引优化需了解 B+树结构及联合索引的最左匹配原则。

算法与智力题
  • 两个栈实现队列

    入队:压入栈 A;

    出队:若栈 B 为空,将栈 A 全部弹出并压入栈 B,再弹出栈 B 顶部元素。

  • 找出重复数字

    1 个重复:数学法(求和差)或位运算(异或);

    2 个重复:

    方法 1:哈希表统计频率;

    方法 2:数学法(设重复数为 a 和 b,根据总和与平方和列方程求解)。

其他问题
  • 前端社区生态

    需关注主流框架(React/Vue/Angular)、构建工具(Webpack/Vite)、状态管理(Redux/Pinia)等。

  • HTTP 与 CORS

    CORS:跨域资源共享,需服务器配置 Access-Control-Allow-Origin。

    简单请求:GET/POST/HEAD,HTTP 头无自定义字段;

    复杂请求:需先发送 OPTIONS 预检请求。

  • CSS 了解程度

    需掌握布局(Flex/Grid)、动画(transition/animation)、响应式设计(媒体查询)等。

总结:面试覆盖基础、工程化、算法及场景题,需扎实准备 JavaScript 核心、小程序开发差异及实际问题解决能力。