大疆这么早就秋招,应该是提前批吧...
1.快速排序的算法实现?
答案可参考链接:https://blog.csdn.net/Charles_Tian/article/details/80967523
2.进程间的方式有哪些?
答案可参考链接:https://blog.csdn.net/violet_echo_0908/article/details/51201278
3.数组和链表的区别?
答案可参考链接:https://blog.csdn.net/qq_25806863/article/details/70607204
4.如何将浮点数点左边的数每三位添加一个逗号,如12000000.11转化为12,000,000.11?
(1)正则实现一:
function commafy(num){ return num && num .toString() .replace(/(d)(?=(d{3})+.)/g, function($1, $2){ return $2 + ','; });}console.log(commafy(1231423423.22))//1,231,423,423.22(2)正则实现二:
var milliFormat = (input) => { return input && input.toString() .replace(/(^|s)d+/g, (m) => m.replace(/(?=(?!b)(d{3})+$)/g, ','))}console.log(milliFormat(1231423423.22))//1,231,423,423.22(3)字符串操作方法:
function formatNum(num){var newStr = "";var count = 0;var str = num.toString(); for(var i = str.indexOf(".")-1;i>=0;i--){if(count % 3 == 0 && count != 0){ newStr = str.charAt(i) + "," + newStr;}else{ newStr = str.charAt(i) + newStr; //逐个字符相接起来}count++;} str = newStr + str.substr((str).indexOf(".")); return str}console.log(formatNum(1231423423.22))//1,231,423,423.225.事件委托(这题给出了一个ul标签和三个li标签,每个li标签各有一个id名,js部分通过for循环给每个li标签添加了一个click事件。问以下代码还有什么可以优化的地方?)
原题代码(大致结构一样,可能填充数据不一样,不记得了):
HTML部分:
<ul id='menu'><li id='list1'>list1 was clicked</li><li id='list2'>list2 was clicked</li><li id='list3'>list3 was clicked</li></ul>JS部分:var list = document.getElementsByTagName('li');for (var i = 0; i < list.length; i++) {list[i].onclick = function(){console.log(this.innerHTML)}};
懂得人一眼就看出这题考察的是什么知识点。我们知道每添加一个事件,就会耗费一部分内存,所以事件越少性能越高。
事件委托就是利用事件冒泡的原理,委托子元素的父元素去代理执行事件,所以,上述方式是添加了三个事件,而通过事件委托可只需要添加一个点击事件即可实现相同的功能。
修改之后的JS代码:
var menu = document.getElementById('menu');menu.addEventListener('click',function(e){console.log(e.target.id + ' was clicked')})