万字详解:蚂蚁、字节前端面试全记录

第一部分:基础技术面试题

一、数组合并方法

常用方法:

  • concat()

  • for循环

  • 扩展运算符(...

  • push.apply()

二、对象合并方法

常用方法:

  • Object.assign()

  • 扩展运算符(...

  • 手写深浅拷贝

三、TypeScript中interface与type的区别

核心区别:

  1. 继承与实现:interface可以通过extendsimplements被命名使用,而对象字面量的type别名不能

  2. 声明合并:interface支持多个声明合并,对象字面量的type别名不支持

  3. 扩展性:type可以使用联合类型、元组等更复杂的类型定义

官方建议:优先查看TypeScript官网文档

四、CSS Flex布局

flex: 0 1 auto的含义:

  • 这是flex属性的简写形式

  • 语法flex: <flex-grow> <flex-shrink> <flex-basis>

  • 具体值

    • 0:flex-grow(放大比例),不放大

    • 1:flex-shrink(缩小比例),空间不足时等比缩小

    • auto:flex-basis,基于内容自动计算尺寸

  • 注意:这是弹性盒子的默认值

五、算法题:最长公共前缀

题目:

javascript

输入: ["flower","flow","flight"] 输出: "fl"

解法思路:

  1. 找出数组中的最小字符串和最大字符串

  2. 这两个字符串的最长公共前缀就是整个数组的公共前缀

代码实现:

javascript

var longestCommonPrefix = function(strs) { if (strs === null || strs.length === 0) return ""; if (strs.length === 1) return strs[0]; let min = 0, max = 0; for (let i = 1; i < strs.length; i++) { if (strs[min] > strs[i]) min = i; if (strs[max] < strs[i]) max = i; } for (let j = 0; j < strs[min].length; j++) { if (strs[min].charAt(j) !== strs[max].charAt(j)) { return strs[min].substring(0, j); } } return strs[min]; };

六、手写Koa的compose方法

简化版实现:

javascript

function compose(middleware) { return function() { return dispatch(0); function dispatch(i) { let fn = middleware[i]; if (!fn) return; return fn(function next() { return dispatch(i + 1); }); } }; }

异步处理:如需支持异步,dispatch函数中返回Promise即可

七、获取高精度时间

浏览器环境:

javascript

performance.now(); // 返回从performance.timing.navigationStart到当前的微秒数

Node.js环境:

javascript

process.hrtime(); // 返回[秒, 纳秒]数组

八、获取首屏时间

H5页面:

  • 有图片:首屏时间 = 首屏图片全部加载完毕的时刻 -performance.timing.navigationStart

  • 无图片:首屏时间 =performance.timing.domContentLoadedEventStart-performance.timing.navigationStart

小程序:通过拦截setData调用方式计算

九、Git操作:rebase vs merge

核心区别:

  • rebase:变基,重写提交历史,保持线性、整洁的历史树

  • merge:合并,保留分支的commit提交节点,产生合并提交


第二部分:蚂蚁金服面试(4轮技术+1轮HR)

一面:简历评估面

面试要点:

  1. Node.js经验

    • 项目架构、数据库(MySQL + Redis)

    • 部署、监控方案

  2. 大型项目管理

    • Git协作流程

    • 技术栈选型考虑因素

    • 团队规范制定(脚手架、Lint等)

  3. 技术工具

    • TSLint与ESLint区别(TS现已推荐使用ESLint)

    • TypeScript实践经验

  4. 开源框架

    • 原理理解:Koa、Axios、Vue、React、Taro

    • 开源贡献经验

  5. 性能监控SDK

    • 架构设计、难点解决

    • 异常监控、网络请求、加载时间实现原理

  6. 业务场景

    • 灰度发布实现

    • 数据收集、Web搭建理解

    • SDK缓存优化

二面:技术深度面

小程序相关:

  1. 小程序架构

    • 容器、渲染引擎、JavaScript引擎

    • View层(WebView)与JS层分离

    • 通信机制:MessageChannel

  2. 框架对比

    • Taro、uni-app、kbone、WePY、mpvue

    • Taro限制:React语法支持有限

  3. 编译原理

    • JSX转小程序代码过程

    • Babel AST转换

技术细节:

  1. npm版本管理

    bash

    ^1.2.1 # >=1.2.1 && <2.0.0 ^0.2.1 # >=0.2.1 && <0.3.0 ~1.5.1 # >=1.5.1 && <1.6.0
  2. Beta版本发布

    bash

    npm publish --tag beta
  3. 埋点系统

    • 上报方案:Ajax、img、script

    • 图片方案优势:跨域友好、不阻塞

    • 数据模板设计

    • 曝光埋点实现

三面、四面:综合能力面

考察重点:

  1. 项目亮点:突出技术优势

  2. 问题反思:从失败中学习的经验

  3. 技术规划:个人成长路径

  4. 团队协作:优缺点自我认知

  5. 抗压能力:高强度工作应对

HR面:终面

关键问题:

  1. 职业发展

    • 换工作原因

    • 未来规划

    • 工作机会优先级(公司、团队、技术、薪资)

  2. 工作表现

    • 过往绩效

    • 团队定位

    • 成长经历

  3. 个人特质

    • 压力应对方式

    • 生活工作挑战


第三部分:字节跳动面试(3轮技术+1轮HR)

一面:技术基础+编程

CSS Flex题目:

html

<div class="container"> <div class="left"></div> <div class="right"></div> </div> <style> * { padding: 0; margin: 0; } .container { width: 600px; height: 300px; display: flex; } .left { flex: 1 2 500px; background: red; } .right { flex: 2 1 400px; background: blue; } </style>

计算思路:根据容器宽度和flex属性计算实际分配空间

异步编程题:

javascript

const list = [1, 2, 3]; const square = num => { return new Promise((resolve, reject) => { setTimeout(() => { resolve(num * num); }, 1000); }); }; // 改造前(同时输出) async function test() { list.forEach(async x => { const res = await square(x); console.log(res); }); } // 改造后(间隔1秒输出) async function testFixed() { for (let x of list) { const res = await square(x); console.log(res); } }

并发控制函数:

javascript

function multiRequest(urls, maxNum) { // 实现要点: // 1. 控制最大并发数 // 2. 请求返回后补充新请求 // 3. 保持结果顺序 }

二面:技术原理深度

原型链问题:

javascript

Object instanceof Function; // true Function instanceof Object; // true Object instanceof Object; // true Function instanceof Function; // true

深拷贝实现要点:

  1. 基本类型直接返回

  2. 引用类型递归复制

  3. 处理循环引用

  4. 特殊对象类型(Date、RegExp等)

  5. 正则表达式深拷贝

Array.prototype.splice模拟实现:

  • 参数处理:start、deleteCount、...items

  • 数组长度调整

  • 元素删除与插入

  • 返回被删除元素数组


第四部分:面试准备建议

一、技术准备重点

  1. 基础扎实

    • JavaScript核心概念(闭包、原型、异步)

    • CSS布局(Flex、Grid)

    • 数据结构和算法

  2. 框架原理

    • 至少精通一个主流框架

    • 理解其设计思想和实现原理

  3. 工程化能力

    • 构建工具、性能优化

    • 代码规范、团队协作

  4. 项目经验

    • 能清晰阐述项目架构

    • 突出技术难点和解决方案

二、公司特点分析

蚂蚁金服:

  • 重视Node.js全栈能力

  • 关注大型项目管理经验

  • 技术深度要求高

  • HR面有否决权

字节跳动:

  • 算法和编程能力要求高

  • 框架原理理解深入

  • 技术广度重要

  • 前两面难度最大

三、面试策略

  1. 简历准备

    • 每项技能都有实际案例支撑

    • 量化项目成果

  2. 知识体系

    • 建立完整的知识图谱

    • 准备常见问题的深度解析

  3. 沟通表达

    • 技术问题条理清晰

    • 项目经验故事化讲述

  4. 心态调整

    • 视面试为技术交流

    • 从失败中学习改进


第五部分:推荐学习资源

在线题库:

  • 前端100问 - Daily-Interview-Question

  • JavaScript算法 - JavaScript-Algorithms

深度文章:

  1. 深入探究Function & Object鸡蛋问题

  2. 如何实现一个深拷贝

  3. Lodash深拷贝实现原理

扩展阅读:

  1. TypeScript官方文档

  2. Flex布局MDN文档

  3. Git官方文档


总结

面试不仅是技术能力的考察,更是综合素质的展现。建议:

  1. 持续学习:技术更新快,保持学习状态

  2. 深度思考:不只停留在使用层面,理解原理

  3. 实践积累:通过实际项目锻炼能力

  4. 复盘总结:每次面试后反思改进

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1170680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qwen3-VL-WEB完整指南:支持8B/4B的网页推理系统部署

Qwen3-VL-WEB完整指南&#xff1a;支持8B/4B的网页推理系统部署 1. 引言 随着多模态大模型在视觉理解与语言生成能力上的持续突破&#xff0c;Qwen3-VL 系列作为通义千问最新一代视觉-语言模型&#xff0c;已在多个维度实现显著升级。其不仅具备更强的文本理解和生成能力&…

开发者必看:Open-AutoGLM本地环境部署与真机连接实操手册

开发者必看&#xff1a;Open-AutoGLM本地环境部署与真机连接实操手册 1. 引言 1.1 Open-AutoGLM – 智谱开源的手机端AI Agent框架 随着多模态大模型技术的快速发展&#xff0c;AI智能体&#xff08;Agent&#xff09;正逐步从“被动响应”向“主动执行”演进。Open-AutoGLM…

为什么我推荐你用fft npainting lama?三大理由

为什么我推荐你用fft npainting lama&#xff1f;三大理由 1. 引言 1.1 图像修复的技术演进 随着深度学习在计算机视觉领域的深入发展&#xff0c;图像修复&#xff08;Image Inpainting&#xff09;技术已从早期的基于纹理合成方法&#xff0c;逐步演进为以生成对抗网络&am…

零基础玩转BGE-M3:手把手教你搭建语义搜索系统

零基础玩转BGE-M3&#xff1a;手把手教你搭建语义搜索系统 1. 引言&#xff1a;为什么选择 BGE-M3 搭建语义搜索&#xff1f; 在当前信息爆炸的时代&#xff0c;传统的关键词匹配已难以满足用户对精准、高效检索的需求。尤其是在构建 RAG&#xff08;Retrieval-Augmented Gen…

rest参数在函数中的实际应用场景:项目实践

rest参数的实战密码&#xff1a;如何用好 JavaScript 中的“万能参数”&#xff1f;你有没有遇到过这样的场景&#xff1f;写一个工具函数&#xff0c;想让它能接收任意数量的参数——比如合并多个数组、记录日志消息、批量注册事件回调。以前我们可能习惯性地去翻arguments&am…

(5/10)电子技术-杂七杂八

较宽的线有更大的对地电容&#xff0c;可能影响高频响应。“EMC/EMI&#xff1a;设计时费1分力&#xff0c;整改时省10分力”沙盒总结一下&#xff1a;沙盒就是计算机世界的“安全试车场”和“隔离病房”。它通过“限制能力”和“隔离空间”来换取系统的整体安全与稳定&#xf…

L298N电机驱动模块接线图解:Arduino应用一文说清

从零搞懂L298N&#xff1a;Arduino驱动电机的底层逻辑与实战避坑指南你有没有遇到过这种情况&#xff1f;花半小时接好线&#xff0c;上传代码&#xff0c;满怀期待地按下复位——结果电机不动、Arduino重启&#xff0c;甚至模块烫得不敢碰。别急&#xff0c;这几乎是每个玩电机…

DCT-Net技术深度:解析Domain-Calibrated算法

DCT-Net技术深度&#xff1a;解析Domain-Calibrated算法 1. 技术背景与问题提出 近年来&#xff0c;随着AI生成内容&#xff08;AIGC&#xff09;的快速发展&#xff0c;人像风格化尤其是人像卡通化成为图像生成领域的重要应用方向。用户希望通过简单操作&#xff0c;将真实照…

Kotaemon备份恢复:定期导出配置与索引数据的安全策略

Kotaemon备份恢复&#xff1a;定期导出配置与索引数据的安全策略 1. 引言 1.1 业务场景描述 Kotaemon 是由 Cinnamon 开发的开源项目&#xff0c;作为一个基于 RAG&#xff08;Retrieval-Augmented Generation&#xff09;架构的用户界面工具&#xff0c;主要面向文档问答&a…

TurboDiffusion硬件选型指南:RTX 5090 vs H100成本效益分析

TurboDiffusion硬件选型指南&#xff1a;RTX 5090 vs H100成本效益分析 1. 引言&#xff1a;TurboDiffusion带来的视频生成革命 1.1 技术背景与行业痛点 传统扩散模型在视频生成任务中面临严重的效率瓶颈。以标准Stable Video Diffusion为例&#xff0c;生成一段5秒720p视频…

智能文本补全实战:BERT语义填空案例解析

智能文本补全实战&#xff1a;BERT语义填空案例解析 1. 引言 1.1 业务场景描述 在自然语言处理&#xff08;NLP&#xff09;的实际应用中&#xff0c;智能文本补全是提升人机交互效率的重要手段之一。无论是搜索引擎的自动补全、写作辅助工具的内容建议&#xff0c;还是教育…

MinerU智能文档理解优化:提升表格识别准确率技巧

MinerU智能文档理解优化&#xff1a;提升表格识别准确率技巧 1. 背景与挑战&#xff1a;智能文档理解中的表格识别瓶颈 在现代办公自动化、学术研究和企业知识管理中&#xff0c;从PDF、扫描件或图像中提取结构化信息已成为关键需求。OpenDataLab推出的MinerU系列模型&#x…

Open-AutoGLM娱乐应用:AI自动刷短视频并点赞优质内容

Open-AutoGLM娱乐应用&#xff1a;AI自动刷短视频并点赞优质内容 1. 引言 1.1 技术背景与应用场景 随着移动互联网的普及&#xff0c;用户每天在短视频平台&#xff08;如抖音、快手、小红书&#xff09;上花费大量时间进行内容浏览、互动和社交。然而&#xff0c;重复性操作…

Hunyuan MT1.5-1.8B部署问题:上下文丢失如何解决?

Hunyuan MT1.5-1.8B部署问题&#xff1a;上下文丢失如何解决&#xff1f; 1. 背景与问题引入 1.1 混元轻量翻译模型的技术定位 HY-MT1.5-1.8B 是腾讯混元于 2025 年 12 月开源的轻量级多语神经翻译模型&#xff0c;参数量为 18 亿&#xff0c;专为边缘设备和移动端推理优化设…

零配置使用BERT镜像:手把手教你搭建中文语法纠错系统

零配置使用BERT镜像&#xff1a;手把手教你搭建中文语法纠错系统 1. 项目背景与核心价值 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;中文语法纠错是一项极具挑战性的任务。由于中文缺乏明显的词边界和形态变化&#xff0c;传统规则方法难以覆盖复杂的语义错…

Qwen All-in-One优化技巧:让CPU推理速度提升3倍的秘诀

Qwen All-in-One优化技巧&#xff1a;让CPU推理速度提升3倍的秘诀 1. 背景与挑战 在边缘计算和资源受限场景中&#xff0c;如何高效部署大语言模型&#xff08;LLM&#xff09;一直是工程实践中的核心难题。传统方案往往依赖多个专用模型协同工作——例如使用 BERT 进行情感分…

通义千问2.5-7B功能测评:代码生成能力堪比34B模型

通义千问2.5-7B功能测评&#xff1a;代码生成能力堪比34B模型 1. 引言&#xff1a;为何关注70亿参数的“全能型”开源模型&#xff1f; 在大模型军备竞赛不断升级的背景下&#xff0c;参数规模动辄上百亿甚至千亿&#xff0c;但实际落地中&#xff0c;推理成本、部署门槛与响…

Open Interpreter功能测评:Qwen3-4B本地编程真实体验

Open Interpreter功能测评&#xff1a;Qwen3-4B本地编程真实体验 1. 背景与使用动机 在当前AI辅助编程快速发展的背景下&#xff0c;开发者对代码生成工具的需求已从“能写代码”转向“能执行并验证代码”。传统的聊天式AI助手&#xff08;如ChatGPT&#xff09;虽然能生成高…

Arduino Uno R3与其他AVR开发板硬件对比分析

从Uno到最小系统&#xff1a;AVR开发板的实战选型指南你有没有过这样的经历&#xff1f;项目做到一半&#xff0c;突然发现手里的Arduino Uno引脚不够用了&#xff1b;或者产品要量产了&#xff0c;一算BOM成本&#xff0c;发现光是这块“标准开发板”就占了三分之一预算。更别…

DCT-Net实战教程:自动化测试流水线搭建

DCT-Net实战教程&#xff1a;自动化测试流水线搭建 1. 教程目标与背景 随着AI生成内容&#xff08;AIGC&#xff09;在虚拟形象、社交娱乐、数字人等领域的广泛应用&#xff0c;人像到卡通风格的转换技术逐渐成为前端交互和个性化服务的重要组成部分。DCT-Net&#xff08;Dom…