* 题目01:问题:实现 queryParse 函数,完成解析 URL 参数的功能* 用法:* ```js* const href = 'https://a.b.c?name=abc&age=24&code=%E6%B5%8B%E8%AF%95#main';* const params = queryParse(href);* console.log(params); // {name: 'abc', age: 24, ...等 }* ```* @param url* @returns object* @description https://segmentfault.com/a/1190000018108589*/function queryParse(url) {// ... 这里写代码实现var myUrl = new URL(url);console.log(myUrl.search);var searchParam = new URLSearchParams(myUrl.search);var map = new Map();map.set('name',searchParam.get('name'));map.set('age',searchParam.get('age'));map.set('code',searchParam.get('code'));console.log(map);}
/*** 题目02:问题:请实现对二叉树节点的遍历访问函数,并按要求输出log。* 示例:使得二叉树如下时:* 输入数据:[1, [2], [3, [4, [5], [6]], [7]]]* 1* / \* 2 3* / \* 4 7* / \* 5 6* console.log输出的顺序为:* 1* 2* 3* 4* 5* 6* 7*//*** @description 这里只写了中序遍历 , 还有前序和后序在 https://cloud.tencent.com/developer/article/1128038*/function binaryTreeAccess(arr) {// ... 这里写代码实现function BinaryTree(){var Node = function(key){this.key = key;this.left = null;this.right = null;};var oRoot = null;var insertNode = function(node,newNode){if(newNode.key < node.key){if(node.left === null){node.left = newNode;}else{insertNode(node.left,newNode);}}else{if(node.right === null){node.right = newNode;}else{insertNode(node.right,newNode);}}}this.insert = function(key){var newNode = new Node(key);if(!(oRoot === null)){insertNode(oRoot,newNode)}else{oRoot = newNode;}console.log(newNode)};// 中序遍历函数封装var inOrderTraverseNode = function(node,callback){//接收根节点的值和回调函数if(node !== null){//首先判断,二叉树的当前节点里边有没有内容inOrderTraverseNode(node.left,callback);//如果该节点左边有分节点(左边有孩子)那么在左孩子的位置基础上,再次调用中序遍历函数,并把当前左孩子的值传给函数。直到找不到左孩子时这个才会停止,函数会一层一层的嵌套。那么,直到最后一层的叶子级别的左孩子,就不会继续调用这个函数了,也就是会遍历到树的最左下角的那个节点了。//这种在函数身体里边再调用函数自身的方法真的要注意使用!callback(node.key);//输出当前的值inOrderTraverseNode(node.right,callback);//再看看这个节点上有没有右节点,如果有,就站在右节点的位置上,再次执行这个函数,那么下次遍历的就会是这个右节点的左孩子是否存在了。}}// 增加遍历的api接口this.inOrderTraverse = function(callback){//后期调用inOrderTraverseNode(oRoot,callback);//接口内,调用中序遍历函数,并且传入当前的根节点的值和回调函数。传oRoot是因为要从根节点开始。}}var nodeArr = [7,3,2,1,6,4,5];var binaryTree = new BinaryTree();nodeArr.forEach(function(key){binaryTree.insert(key);})var callback = function(key){// 增加遍历的自定义效果的回调函数console.log(key);//每次遍历后输出当前的遍历值。};binaryTree.inOrderTraverse(callback);// 调用封装好的遍历方法api,以实现遍历二叉树的目标。}
/*** 题目03:问题:实现一个分组批量执行的任务调度函数 shipTasks,* 使得任务队列里面的N条任务以每组 3 条异步并发执行,任务先进先出,每个分组依次串行执行* 注意:(后一组等前一组异步任务执行完之后才执行)* @description https://juejin.cn/post/6905972276403896334*/function mockTaskFn(task) {// 假设这里做了网络请求return Promise.resolve({name: task.name,data: {status: 200,x: Math.random(),},});}const mockTaskPool = [{ name: 'task1' },{ name: 'task2' },{ name: 'task3' },{ name: 'task4' },{ name: 'task5' },{ name: 'task6' },{ name: 'task7' },{ name: 'task8' },{ name: 'task9' },{ name: 'task10' },];async function shipTasks(tasks, amount = 3) {// 完成函数实现for (let i = 0; i < tasks.length; i+=amount) {Promise.all(tasks.slice(i,i+amount)).then((result) => {console.log(result) //打印数组['成功了', 'success']}).catch((error) => {console.log(error) //不打印})}}// 输出任务mock返回值数组const result = await shipTasks(mockTaskPool);
问题三:常见的浏览器内核有哪些?
答案:1.Trident内核: IE,MaxThon,TT,The World,360, 搜狗浏览器等。 [ 又称 MSHTML]
2.Gecko内核: Netscape6 及以上版本, FF,MozillaSuite/SeaMonkey 等
3.Presto内核: Opera7 及以上。 [Opera 内核原为: Presto ,现为: Blink;]
4.Webkit内核: Safari,Chrome 等。 [ Chrome 的: Blink ( WebKit 的分支) ]
问题四:对 [49, 38, 65, 97, 76, 13, 27, 49]进行冒泡排序
输入描述:
无输入
输出描述:
排序后的数组
示例1
输入
[49, 38, 65, 97, 76, 13, 27, 49]
输出
13,27,38,49,49,65,76,97
答案:function bubbleSort(arr) {
for(let i = 0; i < arr.length; i++) {
for(let j = 0; j < arr.length - 1 - i; j++) {
if(arr[j] > arr[j + 1]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
let arr1 = [49, 38, 65, 97, 76, 13, 27, 49];
let arrSort = bubbleSort(arr1);
console.log(arrSort);
问题五:给定一个数组,求它的最大值/最小值
输入描述:
数组
输出描述:
最大值,最小值
示例1
输入
[3,4,5,6]
输出
6 3
答案:
var arr = readline();
arr = arr.slice(1,arr.length-1);
arr = arr.split(",");
for(var i=1;i<arr.length;i++) {
for(var j=0; j<arr.length-i; j++){
if(arr[j]>arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
};
console.log(arr[arr.length-1]);
console.log(arr[0]);




