1. js 实现一个函数,完成超过范围的两个大整数相加功能

主要思路是通过将数字转换为字符串,然后每个字符串在按位相加。
function bigNumberAdd(number1, number2) {let result = "", // 保存最后结果carry = false; // 保留进位结果// 将字符串转换为数组number1 = number1.split("");number2 = number2.split("");// 当数组的长度都变为0,并且最终不再进位时,结束循环while (number1.length || number2.length || carry) {// 每次将最后的数字进行相加,使用~~的好处是,即使返回值为 undefined 也能转换为 0carry += ~~number1.pop() + ~~number2.pop();// 取加法结果的个位加入最终结果result = carry % 10 + result;// 判断是否需要进位,true 和 false 的值在加法中会被转换为 1 和 0carry = carry > 9;}// 返回最终结果return result;
}

2. js 如何实现数组扁平化?

function flattenArray(array) {if (!Array.isArray(array)) return;let result = [];result = array.reduce(function (pre, item) {// 判断元素是否为数组,如果为数组则递归调用,如果不是则加入结果数组中return pre.concat(Array.isArray(item) ? flattenArray(item) : item);}, []);return result;
}
// 这一种方法是利用了 toString 方法,它的一个缺点是改变了元素的类型,只适合于数组中元素都是整数的情况
function flattenArray(array) {return array.toString().split(",").map(function (item) {return +item;})
}

3. js 如何实现数组去重?

function unique(array) {if (!Array.isArray(array) || array.length <= 1) return;var result = [];array.forEach(function (item) {if (result.indexOf(item) === -1) {result.push(item);}})return result;
}
function unique(array) {if (!Array.isArray(array) || array.length <= 1) return;return [...new Set(array)];
}

4. 如何求数组的最大值和最小值?

var arr = [6, 4, 1, 8, 2, 11, 23];
console.log(Math.max.apply(null, arr))

5. 如何求两个数的最大公约数?

function getMaxCommonDivisor(a, b) {if (b === 0) return a;return getMaxCommonDivisor(b, a % b);
}

6. 如何求两个数的最小公倍数?

基本思想是采用将两个数相乘,然后除以它们的最大公约数function getMinCommonMultiple(a, b){return a * b / getMaxCommonDivisor(a, b);
}

7. 实现 IndexOf 方法?

function indexFun(array, val) {if (!Array.isArray(array)) return;let length = array.length;for (let i = 0; i < length; i++) {if (array[i] === val) {return i;}}return -1;
}

8. 判断一个字符串是否为回文字符串?

function isPalindrome(str) {let reg = /[\W_]/g, // 匹配所有非单词的字符以及下划线newStr = str.replace(reg, "").toLowerCase(), // 替换为空字符并将大写字母转换为小写reverseStr = newStr.split("").reverse().join(""); // 将字符串反转return reverseStr === newStr;
}

9. 实现一个累加函数的功能比如 sum(1,2,3)(2).valueOf()

function sum(...args) {let result = 0;
result = args.reduce(function (pre, item) {return pre + item;
}, 0);
let add = function (...args) {result = args.reduce(function (pre, item) {return pre + item;}, result);return add;
};
add.valueOf = function () {console.log(result);
}
return add;
}

10. 使用 reduce 方法实现 forEach、map、filter

 // forEachfunction forEachUseReduce(array, handler) {array.reduce(function (pre, item, index) {handler(item, index);}, null);}// mapfunction mapUseReduce(array, handler) {let result = [];array.reduce(function (pre, item, index) {let mapItem = handler(item, index);result.push(mapItem);}, null);return result;}// filterfunction filterUseReduce(array, handler) {let result = [];array.reduce(function (pre, item, index) {if (handler(item, index)) {result.push(item);}}, null);return result;}

11. 设计一个简单的任务队列,要求分别在 1,3,4 秒后打印出 “1”, “2”, “3”

 class Queue {constructor() {this.queue = [];this.time = 0;}addTask(task, t) {this.time += t;this.queue.push([task, this.time]);return this;}start() {this.queue.forEach(item => {setTimeout(() => {item[0]();}, item[1]);})}}

12. 怎么查找一篇英文文章中出现频率最高的单词?

 function findMostWord(article) {// 判断合法性if (!article) return;// 参数处理article = article.trim().toLowerCase();let wordList = article.match(/[a-z]+/g),visited = [],maxNum = 0,maxWord = "";article = " " + wordList.join("  ") + " ";// 遍历判断单词出现次数wordList.forEach(function (item) {if (visited.indexOf(item) < 0) {let word = new RegExp(" " + item + " ", "g"),num = article.match(word).length;if (num > maxNum) {maxNum = num;maxWord = item;}}});return maxWord + "  " + maxNum;}

JavaScript经典笔试题相关推荐

  1. 50道 JavaScript 经典面试题汇总篇

    web前端教程 用大白话,来讲编程 有很多小伙伴都跟我提过,为什么之前<经典面试题>系列不像<趣味ES6>和<vue基础系列>一样,来个汇总篇呗,免得想看的话要一道 ...

  2. 【转载】经典10道c/c++语言经典笔试题(含全部所有参考答案)

    经典10道c/c++语言经典笔试题(含全部所有参考答案) 1. 下面这段代码的输出是多少(在32位机上). char *p; char *q[20]; char *m[20][20]; int (*n ...

  3. [转载] 硬件工程师经典笔试题集锦---(张飞实战电子)

    [别找了全在这]硬件工程师经典笔试题集锦! 直转链接:https://www.sohu.com/a/312704438_819258 数字电路知识问题,请简要回答之. (1) 什么是 Setup和 H ...

  4. 嵌入式常见经典笔试题

    嵌入式常见经典笔试题 2012-1-6 15:09:49    收藏  |  打印  | 投票(0)  |  评论(0)  |  阅读(130)  ◇字体:[大 中 小] 预处理器(Preproces ...

  5. 动态内存分配——经典笔试题

    文章目录 经典笔试题 1.未返回地址导致开辟无效 2.返回栈空间地址问题 3.内存泄漏 4.提前释放导致的非法访问 经典笔试题 1.未返回地址导致开辟无效 #include<stdio.h> ...

  6. java经典笔试题大全(50道含答案)

    java经典笔试题大全(50道含答案)整理了一套常用的Java笔试题,选择题50道,简答题5道,试试你能做对多少题吧,含答案. 选择题(共50题,每题1.5分,共75分.多选题选不全或选错都不得分.) ...

  7. mysql经典笔试题

    sql数据库经典笔试题 题目一 解答: select avg(eglish) from mark; select mark.math,cust.Name,cust.Address,cust.Telno ...

  8. 经典笔试题:用C写一个函数测试当前机器大小端模式

    "用C语言写一个函数测试当前机器的大小端模式"是一个经典的笔试题,如下使用两种方式进行解答: 1. 用union来测试机器的大小端 1 #include <stdio.h&g ...

  9. 【笔试题】嵌入式软件开发——嵌入式软件工程师经典笔试题

    从CSDN各个博客上摘选的一些容易做错的嵌入式软件的笔试题,做一下记录,让自己记住. 文章转自:嵌入式经典面试题. 1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) ...

  10. 20道JavaScript经典面试题

    该篇文章整理了一些前端经典面试题,附带详解,涉及到JavaScript多方面知识点,满满都是干货-建议收藏阅读 前言 如果这篇文章有帮助到你,❤️关注+点赞❤️鼓励一下作者,文章公众号首发,关注 前端 ...

最新文章

  1. 【OpenCV 4开发详解】图像像素统计
  2. github怎么隐藏自己的pr记录_记便签的软件哪个好?怎么及时记录自己的想法
  3. BZOJ1251 序列终结者
  4. React开发(111):写注释的方法
  5. AAAI 2018经典论文获奖者演讲:本体论的昨天和今天
  6. python 当前文件路径获取方式_python中获取文件路径的几种方式
  7. [zz]C#中的Type类和Assembly类
  8. 基于JAVA+SpringBoot+Mybatis+MYSQL的记账本管理系统
  9. C#使用 OleDbConnection 连接读取Excel
  10. 打印机如何取消打印任务
  11. mysql查询父子关系树_数据库 SQL 遍历父子关系表(二叉树)获得所有子节点 所有父节点...
  12. 移动CPU异步多核和大小核的那些事
  13. uniapp实现身份证实名认证
  14. PKI/CA/电子签名等相关名词解释
  15. 电脑系统安装失败无法启动服务器,Windows2008R2安装补丁后系统无法启动
  16. 微信小程序的事件处理,吊打面试官系列!
  17. 用科傻软件,求平面网和高程网的平差
  18. python3.x 实现天气查询
  19. 梅科尔工作室-王宣-鸿蒙笔记1
  20. css首字下沉_一个简单CSS首字下沉

热门文章

  1. YARN——NM重启后的任务恢复
  2. C# 实现自动ADSL拨号
  3. 拉姆达表达式基本语句
  4. Kotlin学习资料
  5. 基于SpringBoot体育用品购物商城-协同过滤推荐算法项目源代码
  6. python syntactic suger
  7. 部分软件免管理员权限安装
  8. 美团2015校园招聘笔试题
  9. 产品经理实践【四川省地震需求分析】
  10. 股市中如何用筹码分布选牛股,通达信幅图指标公式筹码寻牛