首页 > 编程知识 正文

大疆后端笔试题目,大疆软件测试笔试题

时间:2023-05-03 22:31:04 阅读:232655 作者:4825

大疆这么早就秋招,应该是提前批吧...

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')})

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。