Skip to content

面经 1

  1. 自我介绍
  2. 你觉得最能表现出你的水平的一个项目是哪个
  3. 你的 webpack-cli 项目主要涉及什么知识点(webpack 配置、yeoman、nodejs、sftp、git 操作.
  4. webpack 使用过哪些插件,目的是什么
  5. webpack 做了哪些性能优化工作,网站项目做了哪些性能优化
  6. 你们做的性能监控系统是怎么实现性能分析的、错误信息怎么捕获
  7. 你的网页是如何适配 web 端、SDK webview、移动端的
  8. 前端如何与 SDK 通讯比如我离开网页去 app store 下载某个软件,如何实现
  9. 你们是如何接入 h5 游戏的,iframe 里边的游戏怎么跟你们传递信息,你们如何与 iframe 里边的游戏传递信息
  10. 一个项目上线后,你怎么知道有没有发生异常?发生异常后怎么处理
  11. 雪碧图是怎么自动合成的,底层原理是什么
  12. cdn 原理是什么
  13. 除了 http2、cdn、资源压缩这些,还有没有其他的性能优化方案(答了 14、15、16 相关)
  14. http 缓存的了解,etag 怎么生成的
  15. 服务端渲染是怎么做的
  16. sdk 预加载前端资源是什么实现的,他们怎么知道需不需要拉取新文件
  17. 我这边问题大概这些,你有什么问题需要问我的吗

面经 2

  1. 并行和并发
  2. tcp 拥塞控制
  3. 6 个 tcp 请求限制是谁限制的,没有客户端的话限制吗
  4. class 和 function 有什么区别
  5. 箭头函数 和普通函数的区别
  6. http2.0 协议
  7. HTTPS 的原理,以及具体实现的过程
  8. 是否了解 HTTP2,跟旧版有什么区别?
  9. 是否了解前端安全性的防范?
  10. 怎么去监听浏览器的错误捕获?
  11. 是否了解 Promise 的用法?
  12. Link 标签引用 CSS,然后用 Script 标签引用 JS,再用 ING 引用的图片,怎么去监听这些脚本的加载情况?
  13. 用原生怎么去实现 AJAS?
  14. JS 怎么去实现大数据相加?
  15. 协商缓存和强缓存的应用场景和具体的实现方式是怎样的?

面经 3

  1. 介绍自己的工作经历和项目经历,项目相关工作和技术问题,业务内容等
  2. 闭包以及实际行用
  3. 原型原型链
  4. 继承的方式以及具体实现
  5. New 一个对象的时候做了什么,绑定 this 到新对象的时候是怎么绑定的
  6. BFC
  7. 重绘回流,具体指什么,哪些会导致回流(重排),怎么优化
  8. 页面刷新到显示 经历了什么,越详细越好
  9. http 缓存
  10. 执行上下文
  11. 作用域,作用域链
  12. 垃圾回收
  13. 原生的 ajax ,这个会问到具体点,传参,请求头的设置==
  14. 节流和防抖的具体实现,浏览器的缓存
  15. 跨域
  16. 平时会做哪些性能优化
  17. 浏览器缓存
  18. 做项目当中怎么选择图片
  19. 事件代理,这个要给出具体实现方案
  20. target 和 currenttarget 的区别
  21. setTimeOut3 秒后一定会执行吗,考的 js 执行机制
  22. onload 和 DOMContentLoaded 区别
  23. tcp 和 udp
  24. 页面白屏时间计算
  25. Csrf 的攻击防范,以及具体的实施过程,这个问的很细,问道了具体怎么攻击
  26. 浏览器的错误捕获,如果让你设计一个捕获异常的 sdk 你怎么做
  27. 一个台阶 一次可能走 1 阶或 2 阶 有多少种走法
  28. 这个是基础实现是递归,然后优化部分是重点

面经 4

  1. 计算机基础
  2. 计算机有哪些数据结构
  3. 哈希表有什么特点
  4. 堆是什么介绍下有什么特点
  5. 栈这种结构的特点
  6. 链表特点
  7. 数组和链表插入元素的时间复杂度
  8. 数组和链表查找一个元素有什么不同
  9. 浏览器+网络
  10. JS 中的基础数据类型:基础类型与引用类型的存放位置是哪里?
  11. 性能优化:有特色的深入的东西;网上那些面试官说,这些都是些普遍的优化,有没有更加深入一点的
  12. 浏览器缓存:
    • (1) 为啥有了 last-modified 还要有 etag
    • (2) 为啥读取的时候先从 disk cache 再从 memory cache
    • (3) Exqires 时间是什么格式
    • (4) Cache-control 的 max-age 是什么格式?单位是啥
  13. csrf 攻击:如何被攻击的为什么会被攻击?如何防范?
  14. xSs 攻击:我说需要将内容转义,他问怎么转义,转义成什么.
  15. 实际项目中有没有做过安全防护
  16. tcp 的四次挥手
  17. tcp 与 udp 的区别

面经 5

  1. 说出具体的 js 的基础类型, 复杂类型

  2. 说一说常见的数据结构以及他们的特性

  3. 特定问了数据结构:链表 和 堆

  4. 说说浏览器缓存机制:强缓存和协商缓存的含义

  5. 强缓存是利用了 Http 头部的哪几个字段?

  6. Cache-Control: max-age 的字段的单位是什么?Expires 的格式是什么?

  7. 强缓存和协商缓存命中后分别返回什么样的状态码?

  8. Etag 是怎么生成的?默认包含哪些?

  9. 有了 last-Modified,为什么要需要 Etag?

  10. jsp 的生命周期?js 变量的生命周期?(没听清楚)

  11. 用原生 js 怎么去实现 AJAX

  12. 什么是 csrf 攻击?具体的攻击方式是怎么样的?

  13. csrf 的防范措施以及 csrf token 在客户端和服务器的交互方式 以及 客户端怎么存储 token

  14. XSS 攻击是什么?如何防范

  15. 介绍项目;介绍项目中困难的地方;追问一些问题;然后聊到性能问题,介绍项目中的性能前后对比;

  16. 技术选择为什么要用 react;对比下 react 和 vue;

  17. redux 和 vuex 对比;说下它们的设计思想;

  18. 性能优化的方法;说下 visual-list 的思想;怎么确保快速下滑的白屏问题;如果一下直接到底部呢;

  19. nodejs 知道吗(不会)

  20. 说下你们用的路由;改变路由时候,react-router 是怎么切换页面的;

  21. es6 用过哪些东西;箭头函数和普通函数的区别;除了这些还有吗? 箭头函数和 Generator(没答上最后一点)

  22. es6 和 es5 继承的区别;defineProperty 和 proxy 的区别;

  23. 最近学习哪些东西、你是怎么学习的

面经 6

  1. 讲一下 eval 函数,这个函数的缺点及他的作用域
  2. jsonp 和 cors 的原理,jsonp 的缺点
  3. 跨域预检请求原理
  4. 作用域(全局,局部,块级)
  5. 闭包函数
  6. js 有哪几种数据类型,分别是传值还是引用
  7. 项目优化,性能测试,错误日志上报(页面性能分析,重要的时间指标)
  8. window. onload 和 DOMContentLoaded 区别 9. 同步和异步区别
  9. xss csrf
  10. prosess 判断是否是 node 环境还是浏览器环境
  11. nodejs 压力测试,服务器容灾,ssr 直出降级
  12. 事件冒泡
  13. 缓存,indexdb,workerservice
  14. 判断一个变量属于哪种类型 instanceof
  15. IIFE 自执行函数

面经 7

  1. 侧重 javascript、css 基础,例如:js 有哪几种基本类型?css 实现垂直居中有哪些方法?
  2. React 框架的基础知识,例如:描述 React 生命周期?
    • 父子组件兄弟组件之间如何进行数据通信?
    • props 和 state 的区别是什么?如何管理组件状态?Redux 状态管理机制是怎样的?
  3. 前端工程化简单问了下,例如:webpack 打包。

着重问了下所做项目的架构设计方案

  1. 前后端整体架构,我说了下兔展的前后端五层整体架构,我负责前端的浏览器层和 Node.js Web 层。
  2. 重点问了前端的浏览器层架构,我花很多功夫描述浏览器端的 SPA 场景架构、富交互 Web 应用的架构,包括技术选型、框架、core 封装、基础模块、UI 组件库、状态管理、模块化、组件化、工程化等等,涵盖了诸多面向现代前端开发的必备知识。
  3. 还侧重问了 Node.js Web 层架构,主要是 Node.js 在项目中的角色,例如:作为应用入口服务器,可以自由控制前端页面和路由,包括 SSR;还有和后端 API 网关的通信,包括接口转发和接口聚合;还有用户会话管理、Redis 缓存技术、mysql 数据库技术等等。

侧重于问题的解决思路和方案、以及个人规划、技术方向相关。

  1. 假设 Node.js 服务器出了问题,如何排查和解决?
  2. 你的未来规划是怎样的?管理还是技术?技术方向的话,想往什么方向突破? 其他的比较模糊记不太清了,问题很开放,有点泛泛而谈的意思。

面经 8

  1. 项目经历相关,有什么重点难点项目如何解决
  2. 性能优化相关 如何计算 LCP FID CLS 的时间
  3. 做过什么优化,达到什么效果
  4. 事件循环机制,node 循环机制和浏览器有什么区别,为什么要有微任务
  5. V8 垃圾回收机制
  6. http1.0, 1.1, 2.0 要有什么区别,多路复用的实现原理
  7. VUE P 更新,nextTick 原理,computed 原理,componentAPI 相比 optionsAPI 优势在哪里,具体例子
  8. VUE react 区别,hook 开发是什么
  9. 组合总和算法,手写 schedule,时间复杂度怎么计算

面经 9

  1. Node.js 为什么会有内存限制
  2. Node.js 服务线上部署
  3. Node.js 读取大体积文件方式
  4. Node.js 未捕获错误怎么处理
  5. 分片上传
  6. dll plugin 能否做到自动重建,如果 dll 的 entry 里面声明的是某个文件,应该怎么做
  7. Node.js 多进程通信、主进程怎么调度子进程 Round-Robin
  8. 性能监控怎么做,重要指标
  9. 前端 JS 主线程与 WebWorker 怎样通信时怎样减小开销
  10. XSS、CSRF 怎么防范

面经 10

  1. 项目经验
  2. webpack
  3. toB 优化(我主要回答了网络问题,缓存和分包)
  4. 图片懒加载实现方案
  5. http 缓存(强缓存,协商缓存)
  6. 闭包
  7. bind,call,apply
  8. dom 碎片
  9. onLoad 和 DOMContentLoaded 区别
  10. 首屏优化
  11. 跨域
  12. 事件委托
  13. 安全问题:xss,csrf
  14. new 一个对象的时候做了什么,this 怎么绑定的和原型链
  15. 作用域(深入)
  16. 浏览器垃圾回收机制

面经 11

  1. 一上来就问网站的优化
  2. 跨域的解决方案
  3. 浏览器的事件循环机制
  4. 怎么实现继承
  5. 创建 ajax 的过程
  6. 浏览器事件捕获跟冒泡
  7. http1.0 和 http2.0 的区别
  8. 浏览器缓存
  9. 数据的存储堆和栈
  10. Http 的状态码
  11. Web 安全意外问的很深

面经 12

  1. react 用了几年?
  2. 小程序有用过吗?
  3. 询问是做后台管理端的还是更多面向用户的前端
  4. react 的生命周期介绍
  5. 新版生命周期函数相对于旧版改动的好处和坏处?
  6. 对 react 中 dom 的了解,它主要的作用是什么?
  7. 解释 diff 算法用来干嘛的?具体的算法是怎么样的?
  8. 聊埋点方案(没有做过,答的不好) 方案 1:埋点放在 dom 结构上和业务解耦会好点,但封装到 dom 中会有什么坏处?;
    方案 2:考虑到性能会将埋点代码写道应用逻辑中去。
  9. 询问家庭状态(单身/结婚/小孩),现在家庭住址 10.总结下自己的优势。

面经 13

  1. 项目介绍
  2. 原型链,继承
  3. 跨域的具体实现,有几种方式
  4. 反向代理
  5. 闭包的实现和应用场景
  6. JS 的垃圾回收机制
  7. 性能优化
    • (1)路由软加载
    • (2)首屏优化,首屏渲染时间
    • (3)事件委托
    • (4)虚拟列表具体实现
    • (5)网络协议方向的优化->Http2.0 相比 http1.1, 新版本 tcp 连接可以并行处理,老版本是串行处理

面经 14

  1. 列举 ES6 的特性,并讲解 let/const 和 var 的差别,set/map 和 array 的差别

  2. 安全问题:讲解 XSS/CSRF 的攻击原理和防御方法

  3. 列举跨域方法并解释(jsonp/cors/反向代理等)

  4. 列举性能优化的方法

  5. 解释 Event loop

  6. vue 简单问了下生命周期和组件之间的通信

  7. 打包工具

  8. 浏览器事件触发原理,过程;

  9. 浏览器垃圾回收机制;

  10. h5 性能优化做了哪些;

  11. webpack 打包优化;

  12. 网络安全,什么是 CSRF 攻击?举个例子?如何预防?scrf_token 怎么生成。

  13. 事件代理

  14. 作用域

  15. 闭包

  16. 解决跨域的方法

  17. script 标签上 async 与 deffer 属性的区别

  18. 手动实现 5 题中的 deffer 效果

  19. XSS 攻击?如何预防?字符转译后输出的结果?

  20. 项目优化做了哪些?

  21. 性能监控怎么做?哪些指标?

  22. 1 如何监控第三方脚本的报错信息?

面经 15

  1. h5 项目优化做了哪些?
  2. 在原公司的主要工作;
  3. 如何与产品或运营团队协商需求实现方案
  4. 对 rn 的了解
  5. 浏览器缓存策略,项目中如何运用
  6. 1、js 数据类型有哪些?如何判断?
  7. 2、闭包及作用域,闭包的运用
  8. js 内存溢出,为什么会导致,如何检查处理
  9. 浏览器地址栏输入内容到页面展现的整个过程(这个可以答得很细,答的好是个加分项);
  10. 性能优化做了哪些?(我答了 webpack 打包、缓存、cdn、懒加载、页面事件代理、观察者模式肩痛滚动事件)
  11. 线上问题如何预防(其实就是监控工具或者脚本)
  12. node 会哪些/
  13. 项目优化做了哪些
  14. rn 会哪些,跨端开发经验,rn 是否满足了我们的跨端需求

面经 16

  1. vue react 有什么不同
  2. state = {a: 1} setState({ a : 2}) 会重新渲染么
  3. redux 是如何监听监听到新增的对象的
  4. webpack 性能优化 为什么要拆 chunk
  5. react 解决性能问题 有使用过 performance 么
  6. 浏览器缓存,如何利用
  7. router 如何实现
  8. primise 求执行顺序
  9. 实现一个带并发限制的调度器
  10. vue 双向绑定的实现原理、
  11. 怎么对数组进行监听、
  12. nexttick 的实现、
  13. 组件之间的监听、
  14. 手写一个 eventbus 的实现、
  15. 手写 2 个有序数组的合并、
  16. import 和 require 的区别、
  17. 对 AMD 和 CMD 和 UMD 的了解、
  18. js 基本数据类型、
  19. undefined 和 null 的区别、
  20. 为什么设置了 height 和 line-height 一样能居中、line-height=1 是什么意思、平时怎么设置元素的垂直居中、
  21. vertical-align 在什么情况下生效
  22. webpack 的 loader 和 plugin 的差别、有没有实现过这些
  23. css position 5 种定位 absolute 依据什么定位
  24. v-show 和 v-if 区别
  25. 隐藏一个元素的多种办法
  26. promise 数组依次调用
  27. await async 使用
  28. 判断两个二叉树是否相等
  29. vnode 有什么好处
  30. nexttick 的原理,vue 更新 dom 的时机,宏任务与微任务
  31. 移动端适配,自适应问题和兼容性问题
  32. history hash 模式

面经 17

  1. 函数柯里化
  2. 数组的最大子序列和
  3. 实现带并发的异步任务调度器-promise
  4. 实现一个 event emitter

富途 2023 面经

javascript
const func1 = async () => {
  console.log(1);
  await func2();
  console.log(2);
};
const func2 = async () => {
  console.log(3);
};

func1();
setTimeout(() => console.log(4), 0);

new Promise((resolve) => {
  resolve();
  console.log(5);
}).then(() => {
  console.log(6);
  Promise.resolve().then(() => {
    console.log(7);
  });
});
console.log(8);

sum(1, 2, 3).sumOf(); // 6
sum(1)(2, 4)(2).sumOf(); //9
javascript
// 题一:
function Base() {}
Base.prototype.a = 1;
Base.prototype.add = function (num) {
  this.a += num;
};

function Extended() {}
Extended.prototype = new Base();
const ext1 = new Extended();
const ext2 = new Extended();

console.log(ext1.a);
console.log("a" in ext1);
console.log(Object.keys(ext1).includes("a"));
ext1.a = 2;
console.log(ext1.a);
console.log(ext2.a);
ext2.add(2);
console.log(ext1.a);
console.log(ext2.a);
// 写出输出结果
  1. 题二:
javascript
//  - 有一系列并发请求,写一个队列,让它们串行执行 例如:
foo() foo()
foo()
// 三个都是执行一秒,一秒后输出 3 个结果
const foow = wrapper(foo)
foow()
foow()
foow()  // 1、2、3 秒各输出一个结果

leetcode 已处理

  • 每次上 1 个台阶或 2 个台阶,求上 n 楼的方案问题

leetcode 未处理

  • N 个数,找第 K 大数
  • 找出两个子 view 最近的共同父 view(算法)
  • 红黑树的特点是什么,什么情况下使用 hashmap,什么情况下使用红黑树
  • 一个 Int 型是有 4 个字节,a = 1, b = 2,怎样不使用第三个变量,使得 a,b 变量交换值。
  • 写一个迭代器
  • 100 万个 16 位整数,内存不限,找出 Top K。
  • 例如:输入:[2, 1, 4, 5, 8, 3, 7, 10, 2, 5], k = 2 输出:[1, 4, 5, 8], [3, 7, 10]
  • 给定一个序列,求最长递增子序列有几个(动态规划)
  • 算法写个 3sum(leetcode)
  • 排序算法
  • 算法整数反转
  • N 个数,找第 K 大数,经典题,leetcode 原题
  • 求 double 类型的 n 次方,double pow(double base , int n)  注意边界问题
  • 只描述思路:10T 大小的文件,每行为一个单词,找出词频最高的前 k 个单词
  • 实现一个单例类
  • 手写一个智能指针实现,线程安全的智能指针
  • 找出一个字符串 s 包含字符串 t 的最小重复字符串
  • 怎么从一对数里面最快找到最大值和最小值
  • 给出一个字符串 N “ABBCDB”(大小英文字母组成) ,按照一下任意一个规则,一:从头部删除一个字母,并追加到新字符串尾;二:从尾删除一个字母,并追加到新字符串尾;期望最后得到一个字典排序最小的字符串

数组

  • 一个包含 0-9 的数组,只有一个数字是两次出现,如何在 O(n)时间,O(1)空间下找出这个数字
  • 将一个数组的所有元素向右移动若干单位,并把数组右侧溢出的元素填补在数组左侧的空缺中,这种经操作称为数组的循环平移,给你一个不小于 3 个元素的数组 a,已知 a 是从一个有序且不包含重复元素的数组平移 k(k 大于等于 0 且小于数组长度)个单位而来;请写一个函数,输入 int 类型数组 a,返回 k 的值。例如,对于数组 a = {5, 1, 2, 3, 4},它由有序数组 {1, 2, 3, 4, 5} 循环平移 1 个单位而来,因此 k = 1。
  • 给一个数组,求如何划分数组,使得 abs(sum【A】 - sum【B】)最小
  • 给个有序数组,将数组非重复部分排在前面,不占用额外空间,输出数组
  • 找出一个数组的长度 Top2 的连续升序子数组,并按长度降序输出
  • 一个乱序的整型数组,输出数组中没出现的最小的整数
  • 一个正整数数组 找出连续和为 K 的整数倍的最短序列
  • 给一个数组,用二分法查找某个元素是否在里面,在就返回 0,不在就返回-1
  • 一个 n 的数组,有一些随机数据,怎么抽出 m 长度的数据,保证数组的数据唯一,方法可能有很多,面试官会探讨最优方法
  • 给一个任意整数组,剔除一个元素后,得出最大乘积例如:[4]int{2,3,4,-4}   最大乘积 24
  • 给定一个整数数组,使得去除一个数后,剩余数相乘最大
  • 有一个任意的整形数组,[]int,从数组取出任意一个元素是的它是符合下面条件的,一:它的左边都比它小,二它的右边都比它大。 10000 个整数的升序数组,无重复数,找出最接近目标数的下标

链表

  • 旋转链表: 给定一个单链表,旋转链表,将链表每个节点向后移动 k 个位置,如果是尾节点,则把它移动到最前面;其中 k 是正数。要求:时间复杂度 O(n),空间复杂度 O(1)
  • 两条链表是否含有交叉
  • 实现一个单链表反转
  • 实现单链表的逆序,普通的修改链接指针的逆序方式之外是否还有其他方式实现逆序。

二叉树

  • 二叉排序树实现插入算法
  • 二叉树最近公共祖先节点
  • 给定一个二叉树和一个数字 n,判断二叉树中是否有一个路径上的数字之和等于给定的数字 n
  • 二叉树翻转 (递归和迭代)
  • 判断两个二叉树是否相等
  • 写一个二叉树的层序遍历
  • 一颗二叉树从右边看过去,把看到的节点打印出来
  • 求二叉树的直径,即一个叶子节点到另一个叶子节点的最大长度
  • 倒置二叉树
  • 二叉树遍历

Released under the MIT License.