10 个算法提升你的 JavaScript 技能

1)在数组中查找缺失的数字

Input: [1, 2, 3, 4, 6, 7, 8, 9, 10]
Output: 5


const find_missing = function(input) {
  let n = input.length + 1;

  let sum = 0;
  for (let i in input) {
    sum += input[i];
  }

  return Math.floor((n * (n + 1)) / 2) - sum;
};

提示:算术级数和公式:

2)反转整数

Input: num = 123
Output: 321
Input: num = -123
Output: -321

const reverse = function(num) {
    let result = 0;
    while (num !== 0) {
      result = result * 10 + num % 10;
      // Math.trunc() 方法会将数字的小数部分去掉,只保留整数部分
      num = Math.trunc(num / 10);
    }

    if (result > 2**31 || result < -(2**31)) return 0;
    return result;
};
  1. 数组排列

Input: [1,2,3]
Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]


const permute = function(nums) {
    let results = [];

    let go = (current) => {
      if (current.length === nums.length){
        results.push(current);
        return;
      }
      nums.forEach(n => {
        if (!current.includes(n)){
          go([...current, n]);
        }
      });
    }
    go([]);
    return results;
};
  1. 字符串中的排列

Input: s1 = "ab", s2 = "eidbao"
Output: true
Input: s1 = "aa", s2 = "eidbao"
Output: false

const checkPermutation = function(s1, s2) {
  const len1 = s1.len
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript面试通常涵盖以下几个方面的问题: 1. 基础知识:面试官可能会问关于JavaScript语言的基础知识,如变量声明、数据类型、作用域、闭包、原型链等。你需要对这些概念有清晰的理解,并能够简洁明了地解释它们。 2. DOM操作:面试官可能会问如何使用JavaScript来操纵网页上的元素,如查找元素、修改元素属性、添加事件监听器等。你需要熟悉DOM API,并能够写出相关的代码。 3. 异步编程:JavaScript中的异步编程是一个重要的主题。你可能会被问到如何处理回调函数、使用Promise对象、编写异步代码的最佳实践等。了解事件循环机制和异步编程模式是很有帮助的。 4. ES6+特性:ES6引入了许多新特性,如箭头函数、解构赋值、模板字面量、类和模块等。面试官可能会问你对这些特性的理解和实际应用。 5. 函数式编程:函数式编程在JavaScript中越来越流行。你可能会被问到纯函数、高阶函数、函数组合等概念,并需要展示你对函数式编程的理解和实践经验。 6. 错误处理和调试:面试官可能会问你如何进行错误处理和调试,包括处理异常、使用断点调试器等。了解常见的错误类型和调试技巧是很重要的。 7. 性能优化:JavaScript性能优化是一个关键的话题。你可能会被问到如何提高代码的性能,减少网络请求、优化渲染、缓存数据等。了解性能优化的策略和工具是非常有价值的。 此外,面试还可能包括项目经验、算法题等方面的问题。为了准备好JavaScript面试,你可以通过阅读相关的书籍和博客文章,参加练习和模拟面试,以及实践编写JavaScript代码来提升自己的技能和经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值