返回

面试稳过!前端手写题之场景篇(附答案及解析)

前端

前端面试中的场景手写题

在前端面试中,手写题往往是考察应聘者编程能力和技术掌握程度的重要环节。本文将深入探讨场景题的常见类型,并提供详细的答案解析。

回文串判断

场景:
你需要编写一个函数来判断一个给定的字符串是否是回文串,即从前往后读与从后往前读都相同的字符串。

答案:

function isPalindrome(str) {
  if (!str || str.length === 0) {
    return true;
  }
  let left = 0;
  let right = str.length - 1;
  while (left < right) {
    if (str[left] !== str[right]) {
      return false;
    }
    left++;
    right--;
  }
  return true;
}

解析:
该函数使用双指针技术,从字符串的两端同时向中间移动,比较字符是否相等。如果所有字符都匹配,则返回 true,否则返回 false。

数组最大值查找

场景:
你正在寻找一个函数来查找一个给定数组中的最大元素。

答案:

function findMax(arr) {
  if (!arr || arr.length === 0) {
    return undefined;
  }
  let max = arr[0];
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] > max) {
      max = arr[i];
    }
  }
  return max;
}

解析:
该函数采用蛮力法,遍历数组并不断更新最大值。如果数组为空或不存在,则返回 undefined。

数组元素反转

场景:
你需要创建一个函数来将一个给定的数组中的元素反转。

答案:

function reverseArray(arr) {
  if (!arr || arr.length === 0) {
    return [];
  }
  let left = 0;
  let right = arr.length - 1;
  while (left < right) {
    let temp = arr[left];
    arr[left] = arr[right];
    arr[right] = temp;
    left++;
    right--;
  }
  return arr;
}

解析:
该函数使用双指针技术,从数组的两端同时向中间移动,交换元素。

数组交集计算

场景:
你被要求写一个函数来计算两个给定数组的交集,即两个数组中都存在的元素。

答案:

function intersection(arr1, arr2) {
  if (!arr1 || arr1.length === 0 || !arr2 || arr2.length === 0) {
    return [];
  }
  let set = new Set(arr1);
  let result = [];
  for (let i = 0; i < arr2.length; i++) {
    if (set.has(arr2[i])) {
      result.push(arr2[i]);
    }
  }
  return result;
}

解析:
该函数使用 Set 数据结构,将 arr1 中的元素存储为唯一键。然后遍历 arr2,并使用 has 方法检查是否存在于 set 中。如果存在,则将其添加到交集中。

素数判断

场景:
编写一个函数来判断一个给定的数字是否是素数,即只能被 1 和它本身整除的数字。

答案:

function isPrime(num) {
  if (num <= 1) {
    return false;
  }
  for (let i = 2; i <= Math.sqrt(num); i++) {
    if (num % i === 0) {
      return false;
    }
  }
  return true;
}

解析:
该函数采用蛮力法,从 2 到数字的平方根遍历,检查是否可以被任何其他数字整除。如果找到一个因数,则返回 false,否则返回 true。

总结

以上是前端面试中常见的场景手写题类型,涉及到回文串判断、数组最大值查找、数组元素反转、数组交集计算和素数判断。通过熟练掌握这些手写题,应聘者可以展示他们的编程能力和对前端技术原理的深刻理解。

常见问题解答

  • 什么是手写题?
    手写题是指在面试过程中要求应聘者手动书写代码以解决问题。

  • 为什么前端面试中会出现手写题?
    手写题可以帮助面试官评估应聘者的即时编程能力,而无需依靠 IDE 或其他工具。

  • 如何准备手写题?
    熟悉常见的手写题类型,并练习解决它们。还可以通过在线代码挑战平台或 mock 面试来提升技能。

  • 面试中写手写题有什么技巧?
    使用清晰的语法,井井有条地写代码,并提供适当的注释。如有必要,不要犹豫向面试官提问以澄清问题。

  • 手写题的评分标准是什么?
    面试官会根据代码的正确性、效率和可读性来评分。