面试稳过!前端手写题之场景篇(附答案及解析)
2024-01-20 15:39:00
前端面试中的场景手写题
在前端面试中,手写题往往是考察应聘者编程能力和技术掌握程度的重要环节。本文将深入探讨场景题的常见类型,并提供详细的答案解析。
回文串判断
场景:
你需要编写一个函数来判断一个给定的字符串是否是回文串,即从前往后读与从后往前读都相同的字符串。
答案:
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 面试来提升技能。 -
面试中写手写题有什么技巧?
使用清晰的语法,井井有条地写代码,并提供适当的注释。如有必要,不要犹豫向面试官提问以澄清问题。 -
手写题的评分标准是什么?
面试官会根据代码的正确性、效率和可读性来评分。