今天刚完成了字节二面(感觉凉了,第一题算法犯了很蠢的错误,后面全对了,但是感觉挽回不了了)
先看一下我的问题吧:
先是手撕了两道代码题:
1.给两个有序数组,进行一个合并去重,并且保证有序:
刚开始我用的set+sort ,然后面试官要求我实现一个o(n)的算法,也就是归并排序,然后我在进行归并过程中犯了很蠢的错误:
function c(a,b){ let arr = []; while(a.length>0 && b.length>0){ if(a[0]>b[0]){ if(arr.indexOf(b[0])===-1){ arr.push(b.shift()); }else b.shift();//我写的continue }else{ if(arr.indexOf(a[0])===-1){ arr.push(a.shift()); }else a.shift();//我写的也是continue } } if(a.length) arr.concat(a); if(b.length) arr.concat(b); return arr; }两个continue直接让循环陷入死循环了,看了半天也没看出来,挺蠢的😭😭😭
2.
求一个字符串最长的没有相同字符的连续子串
输入 abcdcdhil
输出 cdhil
function maxLength(str){ let sum = ''; let num = 0; let arr = []; for(let i = 0; i<str.length; i++){ let char = str.charAt(i); let index = sum.indexOf(char); if(index === -1){ sum += char; num = Math.max(sum.length, num); }else{ arr.push(sum); sum = sum.substr(index + 1) + char; } } arr.push(sum); for(let i = 0; i<arr.length; i++){ if(arr[i].length>sum.length){ sum = arr[i]; } } return sum; }3.连续的看代码说输出:
(1).
(2).
var a = 3; var obj = { a: 5, fn: function() { this.a = 10; } } var fn2 = obj.fn; fn2(); console.log(a); console.log(obj.a)答案 10 5
(2).
console.log(a); const a = function a() { console.log('a'); };报错
(3).
function a() { console.log('a'); Promise.resolve().then(() => { console.log('e'); }); } function b() { console.log('b'); } function c() { console.log('c'); } function d() { setTimeout(a, 0); var temp = Promise.resolve().then(b); setTimeout(c, 0); console.log('d'); } d();输出dbaec
4.知道我是软件工程的之后问了我进程和线程的区别,然后问了我进程之间通信(我回答的也不是很好,基本是正确的)
5.数据库里事务的定义和事务的四大特征
大概就是这么多,全程大概一个多小时,然后还是时间过长或者我凉了,面试官没有给我反问的机会😶😶😶
害,静静等一下结果好了,许愿一个三面
全部评论
(4) 回帖