返回

掌握技巧,从新手入门到熟练手写 JavaScript 头部高频面试题目,冲刺面试好成绩!

前端

作为一名前端开发者,掌握 JavaScript 的基础知识和算法实现能力至关重要。在前端面试中,手写实现 JavaScript 题目是一个常见的环节,也是考察候选人编程能力和算法思维的重要方式。为了帮助大家高效备战前端面试,本文汇总了常见的面试高频手写 JavaScript 题目,并提供了详细的实现步骤和代码示例。

手写 JavaScript 头部高频面试题目汇总

1. 数组去重

手写一个函数,接受一个数组作为参数,返回一个不包含重复元素的新数组。

function unique(arr) {
  const seen = {};
  const result = [];
  for (let i = 0; i < arr.length; i++) {
    const item = arr[i];
    if (!seen[item]) {
      seen[item] = true;
      result.push(item);
    }
  }
  return result;
}

2. 数组交集

手写一个函数,接受两个数组作为参数,返回一个包含两个数组交集的数组。

function intersection(arr1, arr2) {
  const result = [];
  for (let i = 0; i < arr1.length; i++) {
    const item = arr1[i];
    if (arr2.includes(item)) {
      result.push(item);
    }
  }
  return result;
}

3. 数组并集

手写一个函数,接受两个数组作为参数,返回一个包含两个数组并集的数组。

function union(arr1, arr2) {
  const result = [...arr1];
  for (let i = 0; i < arr2.length; i++) {
    const item = arr2[i];
    if (!result.includes(item)) {
      result.push(item);
    }
  }
  return result;
}

4. 数组排序

手写一个函数,接受一个数组作为参数,返回一个从小到大排序后的新数组。

function sort(arr) {
  return arr.sort((a, b) => a - b);
}

5. 二分查找

手写一个函数,接受一个有序数组和一个要查找的元素作为参数,返回该元素在数组中的索引。如果元素不存在,则返回 -1。

function binarySearch(arr, target) {
  let left = 0;
  let right = arr.length - 1;
  while (left <= right) {
    const mid = Math.floor((left + right) / 2);
    const guess = arr[mid];
    if (guess === target) {
      return mid;
    } else if (guess < target) {
      left = mid + 1;
    } else {
      right = mid - 1;
    }
  }
  return -1;
}

6. 冒泡排序

手写一个函数,接受一个数组作为参数,返回一个从小到大排序后的新数组。

function bubbleSort(arr) {
  for (let i = 0; i < arr.length - 1; i++) {
    for (let j = 0; j < arr.length - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        const temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
  return arr;
}

7. 选择排序

手写一个函数,接受一个数组作为参数,返回一个从小到大排序后的新数组。

function selectionSort(arr) {
  for (let i = 0; i < arr.length - 1; i++) {
    let minIndex = i;
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[j] < arr[minIndex]) {
        minIndex = j;
      }
    }
    const temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
  }
  return arr;
}

8. 插入排序

手写一个函数,接受一个数组作为参数,返回一个从小到大排序后的新数组。

function insertionSort(arr) {
  for (let i = 1; i < arr.length; i++) {
    const key = arr[i];
    let j = i - 1;
    while (j >= 0 && arr[j] > key) {
      arr[j + 1] = arr[j];
      j--;
    }
    arr[j + 1] = key;
  }
  return arr;
}

结语

掌握 JavaScript 的基础知识和算法实现能力是前端开发者必备的技能之一。希望通过本文汇总的高频面试题目,能够帮助大家高效备战前端面试,获得理想的职位机会。