大疆这么早就秋招,应该是提前批吧...
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.22
5.事件委托(这题给出了一个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')
})