字节教育部门前端二面 校招
今天刚完成了字节二面(感觉凉了,第一题算法犯了很蠢的错误,后面全对了,但是感觉挽回不了了)
先看一下我的问题吧:
先是手撕了两道代码题:
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.数据库里事务的定义和事务的四大特征
大概就是这么多,全程大概一个多小时,然后还是时间过长或者我凉了,面试官没有给我反问的机会😶😶😶
害,静静等一下结果好了,许愿一个三面



