Shopee 前端实习一面面经
那先来问几道 vue 相关的题目吧
1. Vue 的响应式原理
2. Proxy 的原理了解吗
3. 由模板变为真实 dom 的过程(ast?还没去了解)
4. Virtual Dom 是什么
下面来问问基础
1. 往页面里面插入 10000 个元素,怎么优化(documentFragment + requestAnimationFrame)
然后直接做题
1. promise 有了解过吗,async await 有了解过吗
给你看看一个题,看输出结果
2. 闭包相关的
  
 
var result = [], a = 3, total = 0
function f (a) {
    var i = 0;
    for (; i < 3; i = i + 1) {
        result[i] = function () {
            total += a * i
        }
    }
    
}
f(1)
result[0]() // ?
result[1]() // ?
result[2]() // ?   
 
3. 继承相关的
  
 
function A() {
    this.name = 'a'
    this.color = ['yello', 'blue']
}
function B() {}
B.prototype = new A()
var b1 = new B()
var b2 = new B()
b1.name = 'bbb'
b1.color.push('black')
console.log(b1.name) // ?
console.log(b2.name) // ?
console.log(b1.color) // ?
console.log(b2.color) // ?
   
 
4. 数组扁平化
5. 实现斐波那契数列
  
 
// fibonacci(1) // 0 // fibonacci(2) // 0 1 // fibonacci(3) // 0 1 2 // fibonacci(4) // 0 1 2 3 // fibonacci(5) // 0 1 2 3 5
  
 
要求优化,比如计算 fibonacci(100) 之后,再计算 fibonacci(99) ,要求不用做重复运算,
不能把缓存放在全局
(立即执行函数,通过闭包进行缓存)
  
 
const fibonacci = (function() {
    let dp = []
    dp[0] = 0
    dp[1] = 1
    return function(n) {
        if (n <= dp.length) return dp.slice(0, n + 1)
        
        for (let i = dp.length; i <= n; i++) {
            dp[i] = dp[i - 1] + dp[i - 2]
        }
        return dp
    }
})()
console.log(fibonacci(1000))   
 
面试官让我计算 1000,结果牛客上运行后显示不出结果,尴尬,然后他让我好好想想为什么会这样,我解释到数越大,dp 数组就越大,所以…,面试官说其实 1000 或者 10000 也不算大,让我好好想想。
面试结束,说 hr 后面会联系我
#shopee前端面经##Shopee##前端工程师##实习##面经# 查看13道真题和解析
查看13道真题和解析
