返回
掌握技巧,从新手入门到熟练手写 JavaScript 头部高频面试题目,冲刺面试好成绩!
前端
2023-10-04 09:00:21
作为一名前端开发者,掌握 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 的基础知识和算法实现能力是前端开发者必备的技能之一。希望通过本文汇总的高频面试题目,能够帮助大家高效备战前端面试,获得理想的职位机会。