蓝湖前端面试

1,071 阅读2分钟

面试前

其实这个应该是约面试的第一家公司,因为觉得没有准备好,所以约的今天面试。
面试开始约的六点,我改了时间,我记忆中改成了晚上7点,结果我今天和hr沟通,发现我约的面试是8点。。。。。

面试

  1. 自我介绍 大厂面试中,如何进行自我介绍,让面试官觉得你是他们需要的人才

  2. 最近比较满意的项目 本人面试两个月真实经历:面试了20家大厂之后,发现这样介绍项目经验,显得项目很牛逼!| 掘金技术征文

  • 简介 项目背景
  • 如何进行问题分析
  • 做了什么事情
  • 最后达到了什么效果
  1. 为什么离职 你为什么离职——面试常见问题解析
  • 个人职业职业
  • 客观的一些原因
  1. 算法题:合并有序链表,输出值的数组 开始写之前,面试官提示 注意代码规范。然后简单让我说了下思路,然后开始写

方式一:(我面试中写的,我开始理解错了,理解成只需要合并了)

function merge(arr1, arr2) {
    const res = {
        val: 0,
        next: null
    }
    let pre = res;
    while(arr1 && arr2) {
        if(arr1.val <= arr2.val) {
            pre.next = arr1;
            pre = pre.next; // 面试的时候,这行忘写了,导致最后输出结果不对,面试中没找到原因
            arr1 = arr1.next;
            pre.next = null;
            
        }
        else {
            pre.next = arr2;
            pre = pre.next;
            arr2 = arr2.next;
            pre.next = null;
            
        }
    }
    pre.next = arr1 || arr2;
    const value = [];
    while(res) {
        value.push(res.val);
    }
    return res.slice(1);
}

方法二:

function merge(arr1, arr2) {
    const res = [];
    while(arr1 || arr2) {
        if (arr1 && !arr2) {
            res.push(arr1.val);
            arr1= arr1.next;
        }
        else if (!arr1 && arr2) {
            res.push(arr2.val);
            arr2 = arr2.next;
        }
        else if(arr1.val <= arr2.val) {
            res.push(arr1.val);
            arr1 = arr1.next;
        }
        else {
            res.push(arr2.val);
            arr2 = arr2.next;
        }
    }
    return res;
}

写测试case,面试官说不能直接固定的值进行测试,建议写一个方法把数组转成链表

function arrToObj (arr) {
    if(!arr.length) {
        return null;
    }
    const top = arr.shift();
    let obj = {
        val: top;
        next = arrToObj(arr);
    };
    return obj;
}
  1. 上面算法的时间复杂度和空间复杂度 时间复杂度:On
    空间复杂度: On
    一文吃透时间复杂度和空间复杂度

总结

  1. 算法题我在面试时,调试了好几遍都没找出答案,但是面试完之后我半分钟就找到答案了,(唉,看来面试的时候心里素质还是不够好)

  2. 自我介绍感觉不是很好,因为面试官还问了我一些基础问题,证明我回答的没有让她满意

  3. 这次面试应该不会过了