应届生必看:8家互联网公司前端校招面试题汇总

面试导航 是一个专注于前、后端技术学习和面试准备的 免费 学习平台,提供系统化的技术栈学习,深入讲解每个知识点的核心原理,帮助开发者构建全面的技术体系。平台还收录了大量真实的校招与社招面经,帮助你快速掌握面试技巧,提升求职竞争力。如果你想加入我们的交流群,欢迎通过微信联系:yunmz777

智能搜索前端

基本信息

  • 日期: 2024 年 9 月 27 日 15:00
  • 岗位: 智能搜索前端
  • 地点: 北京
  • 面试时长: 33 分钟

面试内容

CSS 相关

  • CSS 层级问题
  • CSS 选择器优先级
  • BFC(块级格式化上下文)
    • 如何设置:overflow: hidden
    • 解决问题:消除 margin 合并

JavaScript 相关

  • 深浅拷贝的理解
  • 深浅拷贝的实现方法及优缺点
  • JSON.stringify 和 JSON.parse 的性能问题
  • 数组反转(不使用 API)的实现方法
  • 如何在原数组上进行操作

TypeScript 相关

  • TypeScript 的理解
  • unknown 和 any 的区别

Vue 相关

  • computed 是如何进行依赖收集的

项目相关

  • 项目中遇到的挑战

反问环节

  • 业务方向: 搜索相关,AI 相关,AI 图片生成
  • 技术栈: 新项目使用 React,老项目使用 Vue
  • 前端发展规划

IEG

面试内容

编程题

手写 memoize 函数

题目要求:

  1. 函数参数是一个函数,返回值是一个函数
  2. 功能:缓存目标函数执行的结果,缓存的 key 为第一个参数。如果第二次访问,key 相同,则返回缓存的值
  3. 可以直接删除 cache 中缓存的值
javascript 复制代码
function memoize(func) {
  // 待实现
}

function sum(a, b) {
  console.log("excute sum");
  return a + b;
}

const sumWapper = memoize(sum);
sumWapper(1, 2);
// 输出 excute sum
sumWapper(1, 2);
sumWapper.cache.delete(1);
sumWapper(1, 2);

编程语言相关

  • 会 Java、C++ 其他语言吗
  • JS 和 Java 本质上有什么不同
  • 面向对象与面向过程
    • JS 有 class 可以继承,JS/TS 向 Java 靠拢(增加类型、定义类)
    • 但大部分时间是通过函数等其他形式完善代码,很少使用这种方式
    • 你怎么看这种变化

JavaScript 相关

  • ES6 新特性(如箭头函数)在浏览器上的兼容性问题及解决方案
  • 将 ES6 转换为浏览器兼容代码的第三方工具
  • Webpack 中如何配置转换为 ES5
  • TypeScript 能否直接在浏览器上运行
  • undefined 和 null 的区别
  • JS 是单线程还是多线程
  • 浏览器中如何实现 sleep 功能
  • 浏览器中执行事件的规则
  • JS 中的原型链
  • JS 的柯里化

反问环节

学习建议

  • 补充基础:JS 相关知识、计算机网络、操作系统、后台问题

进阶学习方向

  • JS 学无止境:ESLint、Prettier、Stylelint 等工具
  • 技术应用:胜任工作、按时交付
  • 求职重点:基础为主,框架很少问,后期定方向再学框架
  • TypeScript 类型校验

JS 学习体系

  1. 语法
  2. 高级特性
    • 原型链
    • 内存分布
    • 事件循环
    • JS 执行引擎(V8、Node 引擎及其不同点)
  3. 迭代器和新特性(如 ES11 新特性)
  4. 高级特性(Promise、迭代器、遍历器等)

前端发展趋势

  • 状态驱动视图(局部刷新 DOM)
  • 微前端、工程化
  • JS 库开发
  • 从简单的 HTML+JS 开始,逐步完善
  • 处理浏览器兼容问题
  • TypeScript 工程化

关于框架学习

  • 微前端可以了解,但不是面试重点
  • 入职后通常有固定的开发模式
  • Vue 底层原理不需要特别关注,入职后不一定使用 Vue

大梦龙图-深圳-Web 前端

基本信息

  • 日期: 2024 年 12 月 26 日 14:30
  • 岗位: Web 前端
  • 地点: 深圳
  • 面试时长: 40 分钟
  • HC: 2 个

面试内容

开场

  • 面试官简单介绍公司、新业务、要找的人的要求和负责的工作
  • 自我介绍
  • 为什么毕业后没工作,为什么不能转正,没上班都干了什么

CSS 相关

  • 几种水平和垂直居中的方法
  • 针对不同设备的 H5 响应式布局应该怎么做
  • rpx 的原理
  • rem 的使用

HTML 与浏览器

  • defer、async 属性的区别
  • 浏览器缓存机制
  • cookie、localStorage、sessionStorage 的区别及优缺点
  • 如何优化频繁操作 localStorage 的性能问题
  • 事件循环
  • 微任务和宏任务有哪些

网络相关

  • 跨域处理方法
  • Nginx 使用经验

JavaScript 相关

  • 深拷贝的理解,哪些属性需要深拷贝,哪些不需要
  • 深拷贝的实现方案及存在的问题
  • forEach 和 map 的区别
  • Promise 的理解和使用

Vue 相关

  • Vue 的了解程度,Vue2 和 Vue3 使用情况
  • Vue2 和 Vue3 的区别及原理
  • 组合式 API 和选项式 API 的理解和使用
  • ref 和 reactive 的区别
  • 为什么 v-if 中不能使用 index 作为 key
  • diff 算法如何打补丁

React 相关

  • Next.js 的使用经验
  • Next.js 与普通 React 的区别

工程化

  • ESM 和 CJS 的区别
  • 打包方面的差异
  • ESM 和 CJS 引入模块的过程
  • CJS 如何暴露模块

Node.js

  • Node.js 后端开发经验,使用过的框架和 ORM
  • MySQL 基本 CRUD 操作
  • npm run dev 或 npm run build 的执行过程
  • Node.js 如何调用 CMD 指令
  • Node.js 环境使用 require 函数的过程

反问环节

  • 公司研发规模: 前端十几个,4 个游戏 SDK,2 个广告落地页,内部系统,新业务需要 2 人
  • 面试评价: 基础扎实,Node.js 需要深入了解,需要能独立开发项目的人
  • 后续流程: 还有领导面,等 HR 通知

字节跳动-抖音电商

基本信息

  • 日期: 2024 年 10 月 25 日

面试内容

开场

  • 自我介绍
  • 实习中印象深刻的经历

安全相关

  • XSS 攻击原理
  • XSS 可能导致的后果及场景举例
  • 如何获取用户的 Cookie
  • Cookie 的特点

浏览器存储

移动端开发

  • H5 与小程序的区别及小程序优势
  • WebView 的概念
  • JSBridge 的理解
    • JavaScript 如何通过 JSBridge 调用移动设备功能
    • iOS 环境下如何调用 Objective-C 程序

浏览器渲染

  • 输入 URL 到页面显示的过程
  • DNS 解析过程
  • JS 和 CSS 解析是否会阻塞 HTML 解析及原因
  • 浏览器样式计算过程

CSS 相关

  • flex: 1 的含义
  • flex-grow 的作用

JavaScript 相关

  • ES5 的 Reflect 和 Proxy
  • 陷阱函数的概念

Vue 相关

  • Vue 中为什么要使用 key
  • 使用索引作为 key 的问题
  • 使用索引作为 key 导致交互标签混乱的场景

代码题

判断输出题 1
javascript 复制代码
console.log(1 < 2 < 3); // true
console.log(3 > 2 > 1); // false
判断输出题 2
javascript 复制代码
for (var i = 0; i < 5; i++) {
  setTimeout(() => {
    console.log(i);
  }, 100);
}
// 输出: 5 5 5 5 5
  • 为什么会这样输出
  • 如何实现从 0 到 4 的输出
  • 除了使用 let 声明,还有什么方法

算法题

  • 数组第 k 大的数
  • 版本号比较

反问环节

  • 面试官使用的是旧简历,没有关注到 gap 期间做的开源项目
  • 面试官回应:你应该早点说,不过我看你那个项目基本的点都有做,大文件上传啥的。

腾讯-腾娱

基本信息

  • 日期: 2024 年 7 月 2 日
  • 面试时长: 62 分钟
  • 面试形式: 无摄像头,无自我介绍

面试内容

编程题

  • 业务发布的各种条件限制,版本号对比问题

场景题

  • Vue 传值和状态管理
  • Vue 实现购物车逻辑的各种细节
    • userId 是否需要传递

项目相关

  • 大文件分片上传
    • 如何进行文件分片
    • 如何合并分片
    • 如何保证上传成功率
    • 分片丢失的处理方法
    • 如何实现并发上传

反问环节

  • Base 地点: 深圳总部
  • 业务方向: 手 Q 增值业务
  • 面试评价: 基础有点差,总体还不错

腾讯-腾讯云智

基本信息

  • 日期: 2024 年 5 月 30 日
  • 面试时长: 65 分钟

面试内容

开场

  • 自我介绍

实习经历

  • App 运行优化
  • Promise 相关
    • Promise 为什么要有 then 方法,这样设计的好处
    • 为什么要分宏任务队列和微任务队列
  • 安全相关
    • 渗透测试修复:XSS 存储型
    • CSRF 防御方法(httponly、双 token)
  • 小程序相关
    • 小程序优化
    • 小程序运行原理,宿主环境
  • 性能优化
    • link 预解析
    • DNS 预解析

JavaScript 深入

  • JS 编译过程
  • V8 反优化
  • JS 编译时作用域确定阶段(在 AST 生成前,词法编译)
  • 事件循环机制

项目经验

  • 大文件分片上传(前后端对接的数据结构)
  • 瀑布流虚拟列表
  • 视频截帧当封面

Vue 原理

  • 响应式原理
  • Track 依赖收集
  • Trigger 派发更新

场景题

  • 设计一个 Vue 派发更新后,统一通知视图更新的数据结构

工程化

  • Vite 和 Webpack 的区别
  • Vite 为什么快
  • Vite 在 dev 环境的运行方式
  • Webpack 热重载原理

编程题

javascript 复制代码
/* 
背景:模板引擎在前端开发中广泛用于生成HTML。它允许开发者定义一个带有占位符的模板,
然后用数据填充这些占位符来生成最终的HTML字符串。

任务:实现一个函数 renderTemplate,它接受一个字符串模板和一个数据对象作为输入,
并返回一个填充了数据的新字符串。模板字符串中的占位符格式为 {{propertyName}}。

要求:
1. 你的函数应该能够处理嵌套属性,例如 {{user.name}}。
2. 如果数据对象中不存在对应的属性,占位符应该被替换为空字符串。
3. 请不要使用任何库或内置的模板引擎。

示例代码框架:
function renderTemplate(template, data) {
    // TODO: Implement this function
}

// Usage
const template = 'Hello, {{user.name}}! Your age is {{user.age}}.';
const data = { user: { name: 'Alice', age: 30 } };
const result = renderTemplate(template, data);
console.log(result); // Output: 'Hello, Alice! Your age is 30.'
*/

反问环节

  • Base 地点: 长沙
  • 业务方向: 腾讯本部的医疗业务
  • 面试评价: 基础好,原理差点意思,Vue 原理没预想的好
  • 建议 :
    • 多关注工程化
    • 继续深入原理
    • 面试要大胆说出自己的想法和设计

转转

基本信息

  • 日期: 2024 年 12 月 4 日 10:30

面试内容

开场

  • 自我介绍

CSS 相关

  • 元素垂直居中方法
  • Flex 布局相关知识
    • flex-shrink 和 flex-grow 的作用
  • 响应式布局
  • rem 单位的使用

JavaScript 相关

  • 数组去重方法
  • 字符串切割方法
  • substring、slice 和 splice 的区别
  • 宏任务和微任务
  • 函数式编程

计算机网络

  • 跨域解决方法
  • 后端不配置 Nginx 时前端如何解决跨域
  • 构建工具不支持正向代理时的解决方案
  • JSONP 的原理和使用

React 相关

  • React 如何实现类似 Vue 的 keep-alive 功能
  • 高阶组件的概念和应用
  • React 开发优化方法
  • React 缓存策略
  • React 编译方面的优化

场景题

  • 封装请求库需要注意的事项
  • 请求暂停和请求取消的实现
  • 首屏优化方法
  • App 内嵌 H5 页面的优化策略
  • H5 如何调用手机设备(如摄像头)及与客户端的区别

反问环节

  • 校招要求: 24 届和 25 届校招生的要求差异(回答:基本没有差异,要求都差不多)
  • 业务和技术栈: C 端使用 Vue,B 端使用 React;业务包括二手回收、仓库管理、物流、客服等,入职后根据分配确定

轻购云-武汉-前端

基本信息

  • 日期: 2024 年 12 月 25 日 15:00
  • 面试时长: 30 分钟

面试内容

开场

  • 自我介绍
  • 没上班的半年干了什么,为什么没上班

CSS 相关

  • 响应式布局
  • Flex 布局
  • 水平垂直居中方法
  • rem 和 em 的区别与使用

Vue 相关

  • Vue2 和 Vue3 的使用经验及区别
  • 选项式 API 和组合式 API 的区别
  • 为什么 Vue2 的 data 要返回一个函数而不是对象
  • Vue 组件传值方式
  • Vuex 和 Pinia 的区别
  • watch 和 computed 的区别与使用场景

JavaScript 相关

  • JavaScript 数据类型
  • 原型链
  • 常用的数组 API
  • 数组的增删方法
  • 箭头函数的特点及与普通 function 的区别

UniApp 相关

  • 使用过的 UniApp API
  • 页面跳转方法
  • onLoad 和 onShow 的执行顺序

浏览器相关

  • 浏览器缓存机制及各种缓存的区别

开放性问题

  • 封装组件需要注意的问题
  • 项目中遇到的挑战及解决方案

反问环节

  • 业务方向: 智能货柜的页面、货架相关功能,以及公司内部系统
  • 研发团队: 7 个前端,正在招聘中
  • 面试评价: 对于应届生来说算是上游,基础扎实,但表达能力需要提高,简历中技术栈描述过于简陋
  • 后续流程: 通过的话三天内 HR 会联系
相关推荐
匹马夕阳2 分钟前
Vite项目中vite.config.js中为什么只能使用process.env,无法使用import.meta.env?
开发语言·前端·javascript
只有一斤了呐6 分钟前
超硬核!教你手搓一套船新架构的前端脚手架~
前端·javascript·开源
拉不动的猪10 分钟前
刷刷题38(前端实现分包及组件懒加载的核心方案&&图片懒加载)
前端·javascript·面试
任磊abc18 分钟前
在react当中利用IntersectionObserve实现下拉加载数据
前端·react·observer·下拉加载·intersection
NaZiMeKiY19 分钟前
HTML5前端第三章节
前端·html·html5
Loadings26 分钟前
Cursor内置的系统提示词学习
前端·javascript·cursor
拉不动的猪32 分钟前
前端数据库indexDB
前端·javascript·面试
自学前端_又又32 分钟前
前端苦熬一月,被 Cursor 5 天超越,未来技术浪潮如何破局?
前端·人工智能·cursor
冴羽1 小时前
SvelteKit 最新中文文档教程(4)—— 表单 actions
前端·javascript·svelte
搬砖-无恙1 小时前
vue uniapp里照片多张照片展示
前端·vue.js·uni-app