【面试题】3-5年前端面试题及答案详解

4,190 阅读3分钟

react面试专题

1. 达达京东到家

笔试: 都是些基础选择题,考察计算机网络,事件循环机制,闭包,this 这些。 一面:

2.达观数据

笔试

var twoSum = function(nums, target) {
    const hashMap = new Map();
    for (let i = 0; i< nums.length; i++) {
        if (hashMap.has(target - nums[i])) {
            return [hashMap.get(target - nums[i]), i];
        } else {
            hashMap.set(nums[i], i)
        }
    }
};

一面:

3. 英语流利说

一面:

image.png

三面:

方案二:微前端

4. 拍拍贷

一面:

// 解决循环引用的深拷贝
function deepClone(target, map = new WeakMap()) {
  if (typeof target === "object") {
    let cloneTarget = Array.isArray(target) ? [] : {};
    if (map.get(target)) {
      return map.get(target);
    }
    map.set(target, cloneTarget);

    for (const key in target) {
      cloneTarget[key] = deepClone(target[key], map);
    }
    return cloneTarget;
  } else {
    return target;
  }
}  

二面:

方案2 使用渐进式图片,优化用户体验

  1. 天壤智能 一面:

[聊项目]

5. 拼多多

一面:

const funcArr = [
    () =>
        new Promise((resolve) => {
            setTimeout(() => resolve(1), 2000);
        }),
    () =>
        new Promise((resolve) => {
            setTimeout(() => resolve(2), 1000);
        }),
    () =>
        new Promise((resolve) => {
            setTimeout(() => resolve(3), 3000);
        }),
];

/**
 * @description: 实现Promise的串行
 * @param {*}: 接收一个包含多个返回Promise对象的函数的数组
 * @return {*}: 返回一个Promise对象
 */
function orderPromiseFn(arr) {
    let res = []
    return new Promise((resolve, reject) => {
        arr.reduce((old,curr) => {
            return old.then(() => curr()).then(currRes => res.push(currRes)).catch(err => {throw new Error(err)})
        },Promise.resolve()).then(() => {
            resolve(res)
        }).catch(err => {
            reject(err)
        })
    })
}

orderPromiseFn(funcArr).then(res => {console.log(res)}).catch(err => {
    console.log(err)
})

二面:

6.猫眼电影

一面:

6.米哈游

一面:

7.bilibili

一面:

8.阅文

一面:

9.阿里

算法笔试题

  • 将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组

  • 第二题: 说明:实现一个方法,用于比较两个版本号(version1、version2) 如果version1 > version2,返回1;如果version1 < version2,返回-1,其他情况返回0 版本号规则x.y.z,xyz均为大于等于0的整数,至少有x位 示例: compareVersion(‘0.1’, ‘1.1.1’); // 返回-1 compareVersion(‘13.37’, '1.2 '); // 返回1 compareVersion(‘1.1’, ‘1.1.0’); // 返回0

  • 找到字符串中最大回文子串 例如 ‘3434356’ 的最长回文子串是 ‘34343’。回文是指对称的字符串,如:‘abccba’。找到字符串中最大回文子串

参考链接 # 前端三年到五年面试题分享