记录秋招部分公司的面经
昆仑万维
一面
- 自我介绍
- 你会怎么和别人讲解 ESbuild?
- 说一说 ES Module
- ES Module 可以 import css 文件吗?
- 那为什么 Vue 的入口文件通常可以导入 css 文件呢?
- 既然说到了 ES6 的 import,那它和 Nodejs 的 require 有什么区别吗?
- 既然说到了 import(),那调用它之后返回的是什么?
- 那说一说 promise、generator、async await 吧,比较喜欢哪个?为什么?
- JS 是单线程还是多线程?线程和进程的区别是什么?
- 既然说到微任务,那简单讲一讲事件循环机制的工作过程吧?
- 平时怎么用 webpack 进行性能优化的?(使用 webpack-bundle-analyzer 分析 bundle 构成,利用 splitChunks 抽离公共代码等)
- 换个基础一点的吧,JS 的数据类型有哪些?
- 存在栈里面还是堆里面?
- 既然说到堆栈,那么对于闭包,你有什么不一样的理解吗?
- 说到了内存泄漏,那顺便谈一谈垃圾回收机制吧?
- 这些知识你在哪里学习的?
- 说到了 V8 引擎,那 JIT 你了解过吗?
- 开发小程序的时候有使用过什么第三方框架吗?
- 关于小程序的性能优化,有了解过分包加载吗?
- 双向数据绑定的原理了解过吗?
- 有了解过发布-订阅模式和观察者模式吗?
招银网络科技
一面
- 做题:找出数组中重复的数字
- 自我介绍,为什么选择学习前端
- 有学过后端语言吗?数据库呢?
- 说一说 ES6 的新特性,比较喜欢哪个
- 说一说 http/2.0 的新特性
- 这些新特性你有在实际项目中使用过吗?
- 实现三列布局有哪些方法?简单介绍一下思路
- 有用过 grid 布局吗
- 简历上有提到 webpack,除了作为打包构建工具之外,还用它做过什么
- Vue 怎么实现多页面共享数据
二面
- 自我介绍
- 介绍一下最近做的一个项目
- CSS 常用的选择器和权重关系
- CSS 浮动会带来什么问题,如何解决
- 事件冒泡和事件委托的区别是什么
- http 的常用状态码有哪些
- https 的原理是什么
- 主要用 webpack 做什么
- 讲一下一些性能优化的常用方法
- 说一说 URL 输入到展示页面的过程
- 怎么看待加班问题
- 如果协调紧急任务
hr面
- 自我介绍,为什么选择学习前端
- 为什么不考研
- 平时是怎么学习技术的
- 怎么评价自己,优缺点是什么
- 你期望的公司技术氛围和文化氛围是怎么样的
- 对招银有了解吗
- 职业规划
- offer 情况
- 怎么看待加班
百度
一面
- 自我介绍
- ES6 用的多吗?有什么新语法?
- 最近学习的新技术
- 做题:提取 url 中的键值对,需要考虑 key 重复的情况
- 做题:看代码猜 this 指向
- script 声明 async 和 defer 有什么区别
- 怎么解决跨域
- JSONP 的原理是什么
- load 和 DOMContentLoaded 的区别是什么
- Vue2 和 Vue3 的区别
- 说一下 Vue 的响应式原理
- computed 和 watch 的区别
- 说一说对虚拟 DOM 的理解
- 项目是怎么实现响应式的
- 对 web 安全了解吗
- 说一下 XSS
二面
- 做题:寻找出现次数最多的三个标签
- 做题:模拟实现一下 console.log
- 一面好像问了 XSS,你举个例子吧
- 不要用 CSP 的话怎么解决这个问题?HTML 转义为什么不能解决?用 Vue 的话怎么解决?
- 项目用的 fastclick 是干嘛的?
- v-text 和 v-html 什么区别
- 说一说自己的项目,为啥做这个
- 遇到什么难点
字节跳动
一面
- 对 https 的根证书是怎么理解的
- 说一下 TLS 握手的过程
- 实现 JSON.stringify 的时候要注意什么
- 它的第二个参数是什么作用
- get 和 post 有什么本质区别
- 对 DOM 的 api 了解吗?获取子元素的 api 有哪些,getElementsByTagName 是元素调用还是 document 调用?
- 做题:看代码说 this 指向
- 做题:看异步代码说打印顺序
- 对 CSS 的权重是怎么理解的?和数量有关系吗?
- 说一下 margin 塌陷,怎么解决
- 说一下常用的定位和特点
- 不用 sticky 定位如何实现滚动吸顶效果
- 做题:二维数组,求按照对角线进行打印的结果
- 做题:二维数组,1 表示海岛,0 表示海,求最大的海岛面积
小米
一面
- 自我介绍
- 题目:promise 链式调用说打印顺序
- 题目:猜 this 指向,改成箭头函数再猜一遍
- 题目:十进制转二进制,小数保留四位
- 题目:输入 aaaabbbccd,输出 a4b3c2d
- 题目:反转链表
- 题目:99 个黑球和 1 个白球,摸三次不放回,能摸到白球的概率是多少
- flex:1 的含义
- max-width、width、flex-basis 三个属性的优先级
- 浏览器渲染页面的过程
- CommonJS 和 ES Module 的区别,CommonJS 是否可以在浏览器中使用
- 简单解释一下 tree-shaking
- tree-shaking 的原理,如何分析出某些代码属于冗余代码
- 说一下项目中最复杂的问题,如何解决的
二面
- 自我介绍
- 简单介绍一下项目的功能和具体分工
- 如何检测和防御 XSS 攻击
- 响应式效果是怎么实现的,rem 和 vw 更倾向于哪一种?rem vw 的方式有什么缺点?
- 项目部署的大概流程
- 部署项目的时候怎么实现端口重定向
- 对 CDN 是怎么理解的
- http/2 的新特性,哪些对性能优化是有作用的
- https 和证书的作用
- hash 模式和 history 模式的区别,history 模式下刷新会发生什么事
- 如果刷新后不想跳转到首页,而是恢复之前的路由,应该怎么做
- 有一些列表项,key 是固定的,点击按钮后它们会重新排序,diff 算法在这个过程中做了什么事
- 对浏览器缓存的理解,再次请求资源的时候,缓存怎么发挥作用
- 如果资源经常改动的话,缓存策略怎么设置比较好
- 除了上面这些,还有什么其它的性能优化方案
- 代码压缩具体是怎么做的
- 做题:实现 Promise.all 和 sleep 函数
- 做题:求任意一个数组的幂集
顺丰同城科技
一面
- 数组常用的方法和使用场景
- 浅拷贝和深拷贝的区别、实现方式
- 防抖、节流的区别和应用场景
- 浏览器的存储方案
- 负责了项目的哪些部分,登录模块是怎么做的
- 怎么解决回调地狱问题
- localStorage 怎么设置有效期
- 小程序通信方式、路由跳转方式有哪些
- 常见的打包构建工具有哪些,区别是什么
- Webpack 常用配置
- Webpack 如何进行性能优化
- React xxxx ?(忘记问了什么,我说没学过 React,于是改问了 Vue)
- Vue 的生命周期和应用场景
- Vue 有哪些事件修饰符
- Vue 组件通信方式有哪些
- 说一说 Vue 的 Mixin 和插槽
- 是否了解过 Vuex、westore 这些全局状态管理方案的底层原理
- Vue 双向绑定的原理是什么
- 说说虚拟 DOM 的渲染过程
- key 的原理是什么
- 平时是否有阅读源码的习惯
- 什么是跨域,如何解决跨域
- 开发小程序的时候有什么痛点,开发项目的时候遇到了哪些难点
- 项目放在 GitHub,平时会用哪些 git 命令
- 平时会去阅读英文技术文章吗
- 你觉得自己的优点和缺点是什么
二面
- 说一两个自己项目的难点和解决过程
- 不使用脚手架的话,怎么用 webpack 配置 vue 开发环境
- loader 和 plugin 的功能和区别
- loader 的调用顺序是怎么样的
- 是否了解过一些跨端开发的技术
- webpack 是怎么做热更新的
- 说一下 hash 模式和 history 模式
- vue-router 怎么基于这两种模式进行路由跳转
- 离开页面之前缓存数据,有哪些方法
- 从零开发一个项目,有哪些需要注意的地方
- 怎么排查首屏加载缓慢的问题?
- 场景题:用户不断滚动页面,导致页面出现大量 dom 元素,如何进行优化
- 场景题:设计秒杀系统,如何保证时间准确
- 做题:手撕字符串的 indexOf。还有哪些可以优化的地方
三面
- 介绍一下自己的前端学习路线
- 你觉得使用框架开发和原生开发有什么区别
- 好像模板引擎也能实现你说的这些优点,你对模板引擎是怎么看的
- 在 Vue 里面实现代码逻辑复用,你有什么好的方案吗
- Mixin 的优点应该很明显,你觉得它的缺点是什么
- 你会用 webpack 去做什么样的性能优化
- 对其它的打包工具你是怎么看的?比如 gulp、rollup、snowpack 这些
- 说一下打包配置里面 path 和 publicPath 的区别
- 如果要解析 sass 文件,需要哪些 loader
- 为什么 loader 的调用顺序是反过来写的,正常顺序书写不行吗
- 解释一下 tree-shaking ,它是基于什么实现的
- 有用 Vue3 写过组件吗,什么感觉
- 说一下 Vue3 和 Vue2 的主要区别
- Vuex 的单向数据流和 Vue 的双向数据绑定冲突吗,为什么
- 怎么看待 flux、redux 和 vuex
- 10000 条数据的数组,元素都是 1 到 5 的整数,怎么排序最好
58 同城
一面
- 为什么学习前端,你觉得前端可以用来做什么
- 最近一次系统学习的一个技术或者说比较难忘的问题是什么
- 平时是怎么学习的
- 项目的主要功能是什么,最复杂的地方是哪里
- 和另一个前端是怎么协调工作的
- 小程序是怎么发布的,编译打包在哪里进行
- 说一下常用的几种定位和特点
- 做题:找出数组中最大的 n 个偶数
- 页面渲染过程
二面
- 简单介绍一下自己的学习经历、项目和实习
- 关于项目的问题
- 要让一个元素不可见,有多少种方法?哪个会引起回流或者重绘?
- 做题:给定一个数组,求拍平 排序 去重的结果
- 为什么拍平的时候使用了 concat 而不是 push
- sort 排序为什么返回 -1
hr面
- 自我介绍
- 实习情况
- 为什么选择前端
- 说一下自己做过的项目,负责的东西
- 更倾向于去哪个城市工作
- offer 情况
- …
cvte
一面
- 解释一下盒模型
- 说一下 ES6 的新特性。ES7、ES8 这些有了解过吗?
- bigInt 解决了什么问题,应用场景是什么?
- flex 布局和常用属性
- 闭包和优缺点
- 除了闭包之外,还有哪些场景会导致内存泄漏?如何检测?
- 说一下事件循环。为什么要设计微任务这个东西?如果只是避免代码阻塞的话,宏任务不行吗?
- 说一下浏览器的事件流模型。怎么阻止事件冒泡?
- 有了解过不同浏览器事件流模型的差异吗?为什么 Chrome89 之后修改了事件流模型?
- TCP 和 UDP 的区别,为什么 TCP 需要三次握手?
- 说一下浏览器的缓存机制
- 300 和 303 状态码是什么意思
- http/2 有哪些改进?
- 有哪些方式可以实现实时通信?轮询和 websocket 各自有什么缺点?
- 说一下页面渲染的过程,回流的话会从渲染流水线的哪个部分开始重新走一遍?
- 说一下 XSS 攻击和 CSRF 攻击,分别是怎么防御的?
- CSRF token 要放在哪里?放在 cookie 里面可以吗?
- 设计注册功能,如何在各个流程确保安全性?
- 使用 webpack 做过哪些优化?
- 客户端渲染和服务端渲染各有什么优缺点?
- 说一下快速排序和冒泡排序的复杂度以及实现
- 了解过 Nodejs 吗?
二面
- 职业发展规划
- 做过的项目说一下,性能方面做了哪些优化
- 了解过状态管理工具的原理吗?
- 平时有学习什么新技术吗?
- vite 和 webpack 相比有什么区别?缺点是什么?
- 说一下 webpack loader 的原理
- vue 子组件在设计上为什么不能修改父组件状态?
- 如何解决输入框输入频繁触发请求的问题?
- 手写题:写一个输入框,输入会进行防抖处理
- 改进1:可以打印输入的值
- 改进2:可以接受并打印其它参数
- 如何统计某个城市的小卖部数量
蔚来汽车
一面
- 自我介绍
- 说一下选择器的优先级,平时会倾向于使用哪种选择器?为什么?
- 行内元素设置 margin 和 padding 可以生效吗?
- 如何才能让垂直方向的 margin 生效?
- 隐藏一个元素有多少种方式?
visibility:hidden
和opacity:0
有什么区别?都可以触发事件吗?- 判断数据类型有哪些方法?
Object.prototype.toString.call()
的返回值是什么,具体代码实现说一下?- 为什么这个方法要使用 call?call 还可以接受其它参数吗?这些参数要用到哪里?
- 如何实现 call 方法,call 方法调用之后会返回什么?
- 普通函数和箭头函数有什么区别?
- arguments 的结构是怎么样的?如何遍历?遍历的判断条件是什么?
- 说一下 cookie、localStorage 和 sessionStorage 的区别
- A 页面跳转到 B 页面,再跳转回 A 页面,sessionStorage 还存在吗?
- v-if 和 v-show 的区别,使用场景?
- 说一下 ref,返回的是什么,作用是什么,ref 可以重复吗?
- 组件传值的方式,跨组件传值除了 Vuex 和 EventBus 还有其它方法吗?
- 如果现在让你设计一个 UI 组件库,你会使用 vuex 还是手动管理数据?为什么?
- 使用懒加载的时候,如果用户滚动得特别快呢?那些图片也要全部加载吗?
- 防抖和节流的区别和思路
- 项目遇到的难题
- 想到哪个城市工作
蘑菇街
一面
- 介绍一下 JS 的模块化规范
- CommonJS 和 ES Module 有什么区别
- Babel 的作用和原理
- 为什么会出现跨域
- 如何解决跨域?除了服务端 CORS 解决,还有其它方法吗?
- 说一下从接收到 HTML 文件开始页面渲染的过程
- 解析 HTML 的时候遇到 script 标签会怎么处理?声明 async 和 defer 有什么区别?
- 解析 HTML 的时候遇到 link 标签和内联样式,分别会怎么处理?
- 解析样式和执行脚本可以同时进行吗?为什么?
- HTTP 和 HTTPS 的区别?
- 怎么防御 XSS 攻击和 CSRF 攻击
- Vue 数据响应式的原理
- 数据变化的时候怎么知道要更新哪些 DOM 元素?
- 做题:求多个数组区间的交集
- 项目中做的最好的一个地方
二面
- 自我介绍
- 参与了哪些开源项目
- 介绍一下项目,负责项目的哪些部分
- 项目的性能优化、难点
- http 和 https 的区别
- 为什么 https 要采用混合加密算法
- 虚拟 DOM、diff 算法
- 平时有关注什么新技术吗
袋鼠云
一面
- 自我介绍和项目
- 项目的性能优化是怎么做的
- 浏览器的存储机制和区别
- 字符串 split 方法的实现思路
- 对 webpack 的理解
- webpack 的 loader 是怎么添加 CSS 样式的,loader 返回的是什么
- 说一下页面渲染的过程
- Vue 数据响应式的原理
- 事件委托
- 用过 lodash 吗?说一下如何实现一个函数,比较两个对象是否完全相同
- 实现 JSON.parse的思路?基本类型怎么处理,对象和数组怎么处理
- 最近有看什么书吗
大华
一面
- 自我介绍
- http2 和 http1 的区别
- https 是如何保证安全性的
- 说一下强缓存和协商缓存
- let、const 和 var 有什么区别
- 场景题:后端返回了万条数据,一下子渲染出来很影响性能,如何解决?
二面
- 项目难点
- 场景题:如何解决 vue 监听的数据量很大的问题
- 场景题:首屏加载缓慢,如何排查
- 相关实践
驭势科技
一面
- Vue2 和 Vue3 的区别
- Proxy API 的缺点
- 解释浮动、绝对定位和 flex 布局
- 怎么清除浮动
- 闭包
- Webpack 的常用配置
- plugin 或者 loader 的原理
- 原型链的尽头是是什么
- 事件冒泡的过程和应用
- http 响应码有哪些
- 协商缓存的时候怎么知道资源是否改变
- Etag 或者 Last-Modified 具体是怎么发挥作用的,哪个更精确
- ETag 没有任何缺点吗?比如性能方面
- git push 和 git fetch 的区别