前端面经总结

#前端面经##秋招##大厂面试#
一面(1h)

1. 讲一个你参与过的项目,你在项目中的职责、使用的技术栈以及遇到的问题。
2. BFC的作用及触发条件,使用场景讲一下。
3. 在项目中,你使用过哪些ES6特性?
4. 常见的HTTP状态码有哪些?分别表示什么含义?
5. 前端缓存机制讲一下,如何利用前端缓存机制优化性能?
6. HTTPS相较于HTTP有哪些优势?讲一下HTTPS的加密原理。
7. 请求头中包含哪些重要信息?如何通过请求头实现跨域资源共享(CORS)?
8. Vue的响应式原理是什么?如何实现数据的双向绑定?
9. Vue的响应式原理中,为什么直接通过索引修改数组元素无法触发更新?如何解决?  
10. 在使用Webpack时,你采取了哪些优化措施?
11. 地图中大量标记点(Markers)的渲染性能如何优化?
13. 实现一个函数,计算二叉树的最大深度。
● 题目描述:二叉树的深度是指从根节点到最远叶子节点的最长路径上的节点数。请实现一个函数,接收一个二叉树的根节点作为输入,返回该二叉树的最大深度。
● 输入输出要求:输入一个二叉树的根节点,输出一个整数,表示二叉树的最大深度。
● 示例:
// 示例二叉树:
//     3
//    / \
//   9  20
//     /  \
//    15   7
// 最大深度为3
const root = {
  val: 3,
  left: { val: 9, left: null, right: null },
  right: { val: 20, left: { val: 15, left: null, right: null }, right: { val: 7, left: null, right: null } }
};
console.log(maxDepth(root)); // 输出:3

14. 编写一个函数,实现两个二进制数字符串的相加,并返回结果字符串。
● 题目描述:给定两个表示二进制数的字符串,编写一个函数将它们相加,并返回相加后的结果字符串。输入和输出都为字符串,且只包含字符 '0' 和 '1'。
● 输入输出要求:输入两个字符串形式的二进制数,输出一个字符串,表示两个输入二进制数的和。
● 示例:
const a = "1101";
const b = "1011";
console.log(addBinary(a, b)); // 输出:"11000"

二面(1h)
1. 讲一下你的前端模块化的理解。
2. HTTP/2 解决 HTTP/1.1什么问题?
3. 在你的项目中,你是如何设计埋点方案统计用户点击“加入购物车”的行为?
4. Hash 模式和历史模式(History API)的路由跳转差异,如何实现服务端兼容。
5. Vue 2 的 Object.defineProperty 和 Vue 3 的 Proxy 在响应式处理数组时的区别是什么?  
6. 讲一下Vue 的异步更新策略,以及 nextTick 的实现原理。  
7. Loader 和 Plugin 在 Webpack 中的作用有何不同?举例说明常见应用场景。  
8. Webpack 热更新(HMR)的实现原理,包括客户端和服务端的协作流程。
9. 手写一个支持异步链式调用的 Promise 基础版本,需包含 resolve 和 then 方法。 
10. 给定数组 nums,判断是否存在三个元素 a, b, c 使得 a + b + c = 0。 
11. 设计一个地图搜索框的自动补全功能。

三面(40min)
1. 讲一个你觉的最有成就感的项目?
2. 平时用那个地图软件,你觉的百度地图和高德地图有什么区别?
3. 在很多人协作开发中,若遇到接口定义不一致或代码冲突,你会如何推动问题解决?
4. 你有没有团队中主动分享或推动技术方案的经历。
5. 平时是怎么学习前端的?了解的最新的技术是什么 ?
6. 未来3-5年,你希望在前端领域达到什么目标?地图的业务场景实现个人成长?
7. 给定两个非递减整数数组 nums1(长度为 m+n)和 nums2(长度为 n),将 nums2 合并到 nums1 中,保持非递减顺序。
全部评论
求面经
点赞 回复 分享
发布于 05-30 22:38 吉林
大佬考虑京东吗
点赞 回复 分享
发布于 05-23 14:58 北京
清华吗nb
点赞 回复 分享
发布于 05-23 13:20 山西
求面经
点赞 回复 分享
发布于 05-22 15:28 四川

相关推荐

09-11 14:12
已编辑
北京邮电大学 Web前端
1.浏览器从输入url到页面渲染的过程2.浏览器做了哪些工作解析HTML最终形成页面展示(渲染过程)3.对js的解析是解析什么内容4.就是假设我们已经解析完了,不管它是解析什么内容,那解析完之后的话,它其实会有一个事件循环的机制,介绍一下js的事件循环机制5.事件循环在nodejs和浏览器的区别6.vue3的vue2响应式的话有哪些区别7.vue3实现一个自定义的响应式的数据应该怎么实现8.对于引用类型和基础类型的ref 实现上有什么区别?基础类型通过包装对象实现响应式,引用类型则借助 reactive 转换为代理对象,两者最终都通过 .value 访问,但内部处理机制不同。9.vite的热更新为什么比webpack快?10.vite是怎么支持解析所有文件的为什么?11.性能优化的方式,首屏加载优化资源层面,优先压缩和拆分资源,如用 Vite/Webpack 拆分代码(Code Splitting),大文件分片加载;图片懒加载非首屏图片。通过 CDN 分发静态资源。代码层面,路由懒加载(如 React.lazy、Vue 异步组件)。缓存层面,设置 HTTP 缓存(强缓存 Cache-Control,协商缓存 ETag)12.大文件进行分片加载是如何实现的?首先前端获取文件总大小,按固定尺寸(如 1MB)计算分片数量;然后通过 HTTP Range 请求头,每次请求一个分片(如Range: bytes=0-1048575);服务端根据 Range 返回对应片段;前端接收所有分片后,用 Blob 或 ArrayBuffer 合并成完整文件。13.强缓存的,就是说要用强缓存。那你如果强化了之后,那你怎么更新呢?就比如我发了个紧急的 V3版本,你是当前可能强化才能 V1,那我怎么更新到 V3?给静态资源(JS/CSS/ 图片等)添加版本标识,如在文件名后加哈希值(app.8f3d2.js)或版本号(app.v3.js)。构建工具(Webpack/Vite)可自动生成哈希,哈希值随文件内容变化而变。14.标识是在哪里做的?构建工具(如 Webpack、Vite)会在打包时,根据文件内容生成唯一哈希值(如 MD5),并添加到文件名中(如index.abc123.js)这一步由构建工具的配置实现。15.那如何要设置html的强缓存,如何做到强制更新?16.RAG(检索增强生成)到底是什么东西,工作原理怎么样17.为什么要做向量化的过程?18.RAG减少的原因是什么,还有什么方式可以减少幻觉19.就是你是如何去了解一个全新的一个技术领域的,就是你是怎么去做对应的一个学习的?有没有一些学习的方法论可以分享一下20.分享一下Mi-BRAG21.手撕:要实现支持并发限制和先进先出(FIFO)的异步任务调度器22.追问:task返回什么类型任务执行失败了上面功能能执行么,promise如何处理失败,但是不阻塞队列->finally()catch的时候,能否将其重新加入队列重试📍面试公司:字节跳动-今日头条💻面试岗位:前端开发
查看24道真题和解析
点赞 评论 收藏
分享
评论
5
31
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务