腾讯QQ 前端一面 手写题整理
面完几个小时,关电脑的时候发现写了手写题的页面还没关,数据还在,就记录了一下,整理之后分享给大家.
如果有任何问题可以联系我删除
T1
// t1 function isBig(thing){ if(thing == 0 || thing == 1 || thing == 2){ return false; } return true; } console.log(isBig(1)); console.log(isBig([2])); console.log(isBig([3]));
写出输出之后问了==的转化规则,以及===
T2
// t2 setTimeout(() => { console.log('1'); }); (function (){ new Promise((resolve, reject) => { resolve(2,3); console.log('4'); }).then((agr1,arg2,arg3) => { console.log(agr1,arg2,arg3); return agr1; }).finally(() => { const args = Array.prototype.slice.apply(arguments); console.log(args); }); })(5); console.log('6');
说出输出,之后问了事件循环,宏队列微队列等等
T3
// t3 var a = 100; function fn(){ console.log(a); var a = 200; console.log(a); } fn(); console.log(a); var a; console.log(a); var a = 300; console.log(a);
T4 使用闭包的方式,写一段JS实现如下功能:函数每调用一次则该函数的返回值加1。
function addOne(){ var a = 0; return function(){ return a++; } }
T5 看输出,如何修改
// t5 for (let i = 0; i < 3; i++) { setTimeout(() => { console.log(i); }); } // 3 3 3 // let i = 0;
T6 给出一个字符串:将其中的abc删除,将其中的数字左右加上【】,将其中的数字*2
// t6 var str = 'abc345efgabcab'; var str1 = str.replace(/(a|b|c)/g, ''); console.log(str1); var str2 = str.replace(/\d/g, `[$&]`); console.log(str2); var str3 = str.replace(/\d/g, (match) =>{ return String(Number(match)*2); }); console.log(str3); // 345efg // abc[3][4][5]efgabcab // abc6810efgabcab
T7 手写bind
T8 手写节流函数
T9 js实现二分查找
#实习##前端##腾讯##面试#