面试前
其实这个应该是约面试的第一家公司,因为觉得没有准备好,所以约的今天面试。
面试开始约的六点,我改了时间,我记忆中改成了晚上7点,结果我今天和hr沟通,发现我约的面试是8点。。。。。
面试
- 简介 项目背景
- 如何进行问题分析
- 做了什么事情
- 最后达到了什么效果
- 为什么离职 你为什么离职——面试常见问题解析
- 个人职业职业
- 客观的一些原因
- 算法题:合并有序链表,输出值的数组 开始写之前,面试官提示 注意代码规范。然后简单让我说了下思路,然后开始写
方式一:(我面试中写的,我开始理解错了,理解成只需要合并了)
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;
}
- 上面算法的时间复杂度和空间复杂度
时间复杂度:On
空间复杂度: On
一文吃透时间复杂度和空间复杂度
总结
-
算法题我在面试时,调试了好几遍都没找出答案,但是面试完之后我半分钟就找到答案了,(唉,看来面试的时候心里素质还是不够好)
-
自我介绍感觉不是很好,因为面试官还问了我一些基础问题,证明我回答的没有让她满意
-
这次面试应该不会过了