Skip to content

大前端模拟面试 - 2020-02-20

  • 时间: 2020-02-20
  • 候选人: @机智帅气的小雨 from 微信群

题目

1. 你工作中使用到的框架有遇到过什么问题吗

提示:

  1. 在使用中有没有遇到什么让你非常想吐槽的地方或这门框架有哪些优秀的地方
  2. 框架都能解决哪些问题,哪些问题用框架解决不好实现

2. 你有写过单元测试吗,在单元测试文件中有个很耗时的异步操作,执行这个文件每次都得等待很长时间,基于下面这段伪代码,你有什么解决策略吗

js
//假设这句同步代码会执行999次,执行一次耗时1ms
expect(add(1,2)).to.be(3)

// 这是一个很耗时的异步操作,会执行1000ms
require("fs").readFile("bigFile.jpg")
//假设这句同步代码会执行999次,执行一次耗时1ms
expect(add(1,2)).to.be(3)

// 这是一个很耗时的异步操作,会执行1000ms
require("fs").readFile("bigFile.jpg")

3. 假设你现在开发一个前端应用,面向国外用户

  • 服务器在国内
  • 国外网络不发达,可能只有3G,2G网络

基于这两个场景,你如何去设计你的架构,可以让国外用户顺畅地去浏览你的网站

4. 说出a.bind.bind.bind()的执行结果

声明一个函数

js
function a(){}
function a(){}

说出下列代码执行后的结果

js
a.bind.bind.bind()
a.bind.bind.bind()

说明:考察候选人对原型、原型链以及原生bind方法的理解

5. 你平常在项目开发中肯定会遇到很多错误,你都是怎么去做的错误处理

提示:

1.在执行代码期间可能会发生比如类型错误,引用错误 2.通信错误,比如后端服务挂掉等

6.算法题

给定一个非空数组,返回数组中第三大的数,如果不存在,则返回数组中最大的数

示例1:

输入:[3,2,1]
输出:1
解释:第三大的数是1
输入:[3,2,1]
输出:1
解释:第三大的数是1

示例2:

输入:[1,2]
输出:2
解释:第三大的数不存在,所以返回最大的数2
输入:[1,2]
输出:2
解释:第三大的数不存在,所以返回最大的数2

示例2:

输入:[2,2,3,1]
输出:1
解释:注意要求返回第三大的数,是指第三大且唯一出现的数。存在两个值为2的数,它们都排第二
输入:[2,2,3,1]
输出:1
解释:注意要求返回第三大的数,是指第三大且唯一出现的数。存在两个值为2的数,它们都排第二

视频

地址:https://www.bilibili.com/video/av90738781