当前位置: 首页 > 面试经验 >

360 8.27日前端笔试

优质
小牛编辑
91浏览
2023-03-28

360 8.27日前端笔试

题型:40道选择题(有单选,有多选) + 2编程题


单选题

考察内容比较杂,也有前端相关的知识

编程题

1. 修改DNA


例:"ATTTAA"变成"TTAATT"的操作是,02交换、34交换、5修改所以操作数是3次
思路:比较原DNA和目标DNA的不同,优先交换,毕竟一次交换可以匹配两个,最后剩下没得交换了只能修改了。
console.log(minTimes("ATTTAA", "TTAATT")); // 3

// 优先交换,不行再改
function minTimes(str1, str2) {
  // 记录A、T不满足的次数
  let flagA = 0,
    flagT = 0;
  for (let i = 0; i < str1.length; ++i) {
    if (str1[i] !== str2[i] && str1[i] === "T") {
      flagT++;
    } else if (str1[i] !== str2[i] && str1[i] === "A") {
      flagA++;
    }
  }
  // delat是要交换的次数
  let delat = Math.abs(flagA - flagT);
  return delat + Math.min(flagA, flagT);
}



2. 小明乱用快排

题干描述:小明要对数组进行快排,每次选择一个pivot,比pivot小的放在左边,比pivot大的放在右边。注意放左边、右边保留原来的相对顺序,如[1,9, 2, 8 ,3, 7, 4, 6, 5],选择了pivot为5,那么结果为[1,2,3,4,5,9,8,7,6]。参数为`给出待排序的数组,以及每次选择的pivot`,问按小明的思路最后排出的结果是啥样的?
例: 原数组为[1,9, 2, 8 ,3, 7, 4, 6, 5], pivot依次为[3,7];  最后输出结果为[1, 2, 3 ,4 ,6, 5 ,7, 9, 8]
思路:[不要先入为主想着快排,要看小明的思路];这题就是按题干的要求来,按他提供的pivot,将原数组分为两堆。但我的空间复杂度超限了。不知道AC的大佬怎么做的。
function quickSort(arr, pointArr) {
  if (pointArr.length === 0) {
    return arr;
  }
  let left = [],
    right = [],
    pivot = pointArr.shift();
  for (let i = 0; i < arr.length; ++i) {
    if (pivot > arr[i]) {
      left.push(arr[i]);
    } else if (pivot < arr[i]) {
      right.push(arr[i]);
    }
  }
  let newArr = [...pointArr];
  return quickSort(left.concat(pivot, right), newArr);
}

console.log(quickSort([1, 9, 2, 8, 3, 7, 4, 6, 5], [3, 7])); // [1,2 ,3 ,4 ,6, 5 ,7, 9, 8]




#360##360笔试#
 类似资料: