第一次笔试有十道左右选择题(大多是多选题),五六道简答题,三道编程题。由于简答题写的太久了后面编程题就没来得及写完,后来一面的时候面试官说可以再做一次笔试,于是有了第二次笔试。

第二次笔试有十几道选择题,大部分都比较常规,然后是五道编程题。由简单到难的,接下来记录一下~

# 第一题

给定一个字符串数组 返回另一个包含所有最长字符串的数组

let inputArray = ["aba", "aa", "ad", "vcd", "aba"]
function solution(inputArray) {
    let maxNum = 0// 记录最长长度
    let map = new Map
    for(let str of inputArray) {
        let len = str.length
        let temp
        maxNum = Math.max(maxNum, len) // 比较字符串长度和记录最长长度
        if (map.get(len) === undefined) {
            temp = [str]
        } else {
            temp = map.get(len)
            temp.push(str)
        }
        map.set(len, temp)
    }
    console.log(map.get(maxNum))
}
solution(inputArray)

# 第二题

层序遍历二叉树

[从上到下遍历二叉树] ** https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/ **

var levelOrder = function(root) {
    const ret = [];
    if (!root) {
        return ret;
    }
    const q = [];
    q.push(root);
    while (q.length !== 0) {
        const currentLevelSize = q.length;
        ret.push([]);
        for (let i = 1; i <= currentLevelSize; ++i) {
            const node = q.shift();
            ret[ret.length - 1].push(node.val);
            if (node.left) q.push(node.left);
            if (node.right) q.push(node.right);
        }
    }
        
    return ret;
};

# 第三题

css 水平垂直居中

display: flex/grid;
justify-content: center;
align-items: center;

# 第四题

递归 实现 反转链表

var reverseList = function(head) {
  // 终止条件
    if (head == null || head.next == null) {
        return head;
    }
    const newHead = reverseList(head.next);
    head.next.next = head;
    head.next = null;
    return newHead;
};