十道JS算法面试题
·
-
反转字符串
function reverseString(str) { return str.split('').reverse().join(''); } console.log(reverseString("hello")); // "olleh" -
判断是否是回文
function isPalindrome(str) { const reversed = str.split('').reverse().join(''); return str === reversed; } console.log(isPalindrome("racecar")); // true console.log(isPalindrome("hello")); // false -
斐波那契数列
function fibonacci(n) { if (n <= 1) return n; return fibonacci(n - 1) + fibonacci(n - 2); } console.log(fibonacci(6)); // 84.计算阶乘
function factorial(n) { if (n === 0) return 1; return n * factorial(n - 1); } console.log(factorial(5)); // 1205.数组去重
function uniqueArray(arr) { return [...new Set(arr)]; } console.log(uniqueArray([1, 2, 2, 3, 4, 4])); // [1, 2, 3, 4]6.合并两个有序数组
function mergeSortedArrays(arr1, arr2) { let merged = []; let i = 0, j = 0; while (i < arr1.length && j < arr2.length) { if (arr1[i] < arr2[j]) { merged.push(arr1[i]); i++; } else { merged.push(arr2[j]); j++; } } return merged.concat(arr1.slice(i)).concat(arr2.slice(j)); } console.log(mergeSortedArrays([1, 3, 5], [2, 4, 6])); // [1, 2, 3, 4, 5, 6]7.求数组的最大值
function maxArray(arr) { return Math.max(...arr); } console.log(maxArray([1, 2, 3, 4, 5])); // 58.斐波那契数列(非递归版)
function fibonacciIterative(n) { let a = 0, b = 1, temp; while (n >= 1) { temp = a; a = b; b = temp + b; n--; } return a; } console.log(fibonacciIterative(6)); // 89.实现一个深拷贝
function deepClone(obj) { return JSON.parse(JSON.stringify(obj)); } const obj = { a: 1, b: { c: 2 } }; const clone = deepClone(obj); console.log(clone); // { a: 1, b: { c: 2 } }10.字符串内字符出现频率统计
function charFrequency(str) { const frequency = {}; for (let char of str) { frequency[char] = (frequency[char] || 0) + 1; } return frequency; } console.log(charFrequency("hello world")); // { h: 1, e: 1, l: 3, o: 2, ' ': 1, w: 1, r: 1, d: 1 }这些题目涵盖了字符串操作、数组处理、递归与迭代、对象深拷贝等常见算法和数据结构操作,适合用于JavaScript算法面试。
更多推荐



所有评论(0)