2023年7月4日发(作者:)
美团2020校招前端⽅向笔试题1、简答题1答案:1. i,s,a都在栈中,new出来的对象A在堆上。2. 执⾏完后a.i的值还是字符串op。解析:1、考察js堆与栈:栈内存主要⽤于存储各种基本类型的变量,包括Boolean、Number、String、Undefined、Null以及对象变量的指针,堆主要存储object所以字符串变量i,s以及对象指针a都存在栈中,new出来的对象开辟内存存在堆上,对应地址是指针a存的内容2、考察参数传递按值传递:a是A类的实例,所以a.i='op',(a.i)这句执⾏函数,把a.i作为参数传递,该函数会复制⼀个变量,两个变量完全独⽴,所以在函数体⾥只是把复制的那个变量(⼀个新的局部变量)改变为'op9’,在函数体外的a.i并没有被改变2、简答题2答案:foo, foo2, global解析:****由于new绑定的优先级⼤于bind绑定,所以函数内部this还是obj {}****第⼀个foo是(),这个时候因为已经执⾏了var bar=new (); 此时bar中foo的this是obj的this.改变的是把local变成foo第⼆个foo2是因为执⾏顺序是var bar3,bar2=bar,bar3=bar2, 所以bar3/bar2/bar都是指向同⼀个对象,改变的是bar3中的foo变成了foo2第三个global是因为⼀开始已经执⾏了var bar=new (); 所以后⾯对name的改变影响不了。考察点3个:
1、输出顺序主要考察:Event Loop;2、第⼀个和第三个输出考察:this指针;3、第⼆个输出考察:引⽤类型赋值
3、简答题3答案:答案:bfcad考察点:主要考察js event loop以及宏任务和微任务;解析:```// 定时器任务属于宏任务,并且需要先在任务队列等待,等到同步任务执⾏完,执⾏栈清空,才会在任务队列中按顺序选任务进去setTimeout(() => ('a'));//4. 打印a//Promise 属于异步微任务,在本轮同步任务结束之前执⾏e().then( // 1. 打印 b () => ('b') // 单引号要改为',然后去掉;号 ).then( // 箭头函数的resolve传递的参数作为下⼀个then的参数 () => e('c').then( // 执⾏箭头函数 (data) => { // 把定时器任务也放⼊任务队列中等待,在第⼀个定时器之后 setTimeout(() => ('d')); //5. 打印d // 2.打印 f ('f'); // 此时返回的 数据作为下⼀个then的参数 return data; } ) ).then(data => (data)); // 3.打印 c
```* `打印bfcad`
4、简答题4答案:var Person=(function(){ function Person(){ this._name=name; } =function(){ ('Hi,myname is'+ this._name); } elay=function(time){ var _this=this; setTimeout(function(){ ('Hi,my name is'+_); }) })();考察点:ES6语法糖理解,ES6编译到ES5过程理解,JS原型理解,this指向理解;
5、代码题1:斐波那契数列答案: while(line=readline()){ let m=parseInt(line); let N=m; function Firb(num){ if(num==0){return 1;}
let top=1,bottom=0,res=0 for(let i=0;i (Firb(N)); } 6、代码题2:代⾦券组合 答案:let line;while(line=readline()){ let num=parseInt(line); if(num==0){ break; } let lines=readline().split(' '); let MoneyNum=lines[0]; let coins=new Array(MoneyNum); for(let i=0;i dp[i]=(dp[i],dp[i-coin]+1); } } } return dp[num] === Infinity ? 'Impossible' : dp[num]; } let answer=MinnumCoupon(coins,num); (answer);} 7、代码题3:迷宫寻路答案: let MN=readline(); let MNlines=(' '); let M=parseInt(MNlines[0]); let N=parseInt(MNlines[1]); let line; let info=new Array(M); let rownum=0; while(line=readline()){ let lines=(' '); let infos=new Array(N); for(let i=0;i } else if(i==0&&j!=0){ Answer[i][j]=Answer[i][j-1]+TwoDimArray[i][j]; } else if(j==0&&i!=0){ Answer[i][j]=Answer[i-1][j]+TwoDimArray[i][j]; } else{ Answer[0][0]=TwoDimArray[0][0]; } } } return Answer[M-1][N-1]; } let an=FindBestWay(M,N,TwoDimArray); (an);8、代码题4:星际穿越答案:let N=parseInt(readline());if(N==0){ (0);}else if(N==1){ let line=readline(); let line=readline(); let lines=(' '); (lines[3]);}else{ let power=(new Array(N)).fill(0).map(()=>(new Array(N)).fill(0).map(() => (new Array(N)).fill(0))); for(let i=0;i
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688421002a135839.html
评论列表(0条)