Lang:简体中文

前端算法面试题及答案

日期:2025-09-08 / 来源:面试宝典

常见算法题及详细答案剖析

在前端面试中,算法题是考察候选人逻辑思维和编程能力的重要环节。以下为大家整理了一些常见的前端算法面试题及答案。

数组去重

数组去重是一个经典的算法问题。例如,给定一个数组 [1, 2, 2, 3, 4, 4, 5],需要去除其中的重复元素。

可以使用 es6 的 set 数据结构来实现,代码如下:

function unique(arr) {

return [...new set(arr)];

}

let arr = [1, 2, 2, 3, 4, 4, 5];

console.log(unique(arr)); // 输出 [1, 2, 3, 4, 5]

set 数据结构的特点是它只会存储唯一的值,利用这一特性可以很方便地实现数组去重。

斐波那契数列

斐波那契数列是指这样一个数列:0、1、1、2、3、5、8、13、21、34 。在数学上,斐波那契数列以如下递推的方法定义:f(0)=0,f(1)=1, f(n)=f(n - 1)+f(n - 2)(n ≥ 2,n ∈ n*)。

可以使用递归的方式来实现,代码如下:

function fibonacci(n) {

if (n === 0) return 0;

if (n === 1) return 1;

return fibonacci(n - 1) + fibonacci(n - 2);

}

console.log(fibonacci(5)); // 输出 5

不过递归方法在 n 较大时会有性能问题,也可以使用循环的方式来优化。

字符串反转

字符串反转也是常见的面试题。例如,将字符串 "hello" 反转成 "olleh"。

可以使用 javascript 的 split、reverse 和 join 方法来实现,代码如下:

function reversestring(str) {

return str.split('').reverse().join('');

}

let str = "hello";

console.log(reversestring(str)); // 输出 "olleh"

这种方法利用了数组的反转功能,将字符串先转换为数组,反转后再转换回字符串。

排序算法 - 冒泡排序

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。

以下是冒泡排序的实现代码:

function bubblesort(arr) {

let len = arr.length;

for (let i = 0; i < len; i++) {

for (let j = 0; j < len - i - 1; j++) {

if (arr[j] > arr[j + 1]) {

let temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

return arr;

}

let arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];

console.log(bubblesort(arr)); // 输出排序后的数组

查找数组中的最大值

查找数组中的最大值是一个基础的算法问题。例如,在数组 [1, 5, 3, 9, 2] 中找出最大值。

可以使用 math.max 方法结合扩展运算符来实现,代码如下:

let arr = [1, 5, 3, 9, 2];

let max = math.max(...arr);

console.log(max); // 输出 9

扩展运算符可以将数组展开,方便传递给 math.max 方法。

以下为推荐内容

微信二维码