日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

美团2020校招前端方向笔试题

發布時間:2023/12/20 HTML 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 美团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.func(a.i)這句執行函數,把a.i作為參數傳遞,該函數會復制一個變量,兩個變量完全獨立,所以在函數體里只是把復制的那個變量(一個新的局部變量)改變為'op9’,在函數體外的a.i并沒有被改變

另外補充說明ECMAScript中所有函數的參數都是按值傳遞的——《高程3》,其實對于參數是對象的情況,實際上也是按值傳遞,把傳參的指針復制出一個完全獨立的變量,只是存的內容和傳參對象地址一摸一樣https://www.cnblogs.com/chenwenhao/p/7009606.html

2、簡答題2

答案:

foo, foo2, global

解析:

****由于new綁定的優先級大于bind綁定,所以函數內部this還是obj {}****

第一個foo是console.log(bar.name),這個時候因為已經執行了var bar=new obj.foo(); 此時bar中foo的this是obj的this.改變的是把local變成foo

第二個foo2是因為執行順序是var bar3,bar2=bar,bar3=bar2, 所以bar3/bar2/bar都是指向同一個對象,改變的是bar3中的foo變成了foo2

第三個global是因為一開始已經執行了var bar=new obj.foo(); 所以后面對name的改變影響不了window.name。

考察點3個:?

1、輸出順序主要考察:Event?Loop;

2、第一個和第三個輸出考察:this指針;

3、第二個輸出考察:引用類型賦值

?

3、簡答題3

答案:

答案:bfcad

考察點:主要考察js event loop以及宏任務和微任務;

解析:

```
// 定時器任務屬于宏任務,并且需要先在任務隊列等待,等到同步任務執行完,執行棧清空,才會在任務隊列中按順序選任務進去
setTimeout(() => console.log('a'));//4. 打印a

//Promise 屬于異步微任務,在本輪同步任務結束之前執行
Promise.resolve().then(
?? ?// 1. 打印 b
? ?() => console.log('b') ?// 單引號要改為',然后去掉;號
?).then(
?? ?// 箭頭函數的resolve傳遞的參數作為下一個then的參數
? ?() => Promise.resolve('c').then(
?? ? // 執行箭頭函數
? ? ?(data) => {
?? ??? ?// 把定時器任務也放入任務隊列中等待,在第一個定時器之后
? ? ? ?setTimeout(() => console.log('d')); //5. 打印d
?? ? ? // 2.打印 f
? ? ? ?console.log('f');
?? ? ? // 此時返回的 數據作為下一個then的參數
? ? ? ?return data;
? ? ?}
? ?)
?).then(data => console.log(data)); // 3.打印 c
?
```
* `打印bfcad`

?

4、簡答題4

答案:

var Person=(function(){function Person(){this._name=name;}Person.prototype.greet=function(){console.log('Hi,myname is'+ this._name);}Person.prototype.greetDelay=function(time){var _this=this;setTimeout(function(){console.log('Hi,my name is'+_this.name);})} )();

考察點:

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=0for(let i=0;i<num;i++){res=top+bottombottom=toptop=res}return res}?console.log(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<MoneyNum;i++){coins[i]=parseInt(lines[i+1]);}let dp=new Array(num+1).fill(Infinity);dp[0]=0;function MinnumCoupon(coins,num){for(let i=1;i<=num;i++){for(let coin of coins){if(i>=coin){ ? ? ? ? ? ?dp[i]=Math.min(dp[i],dp[i-coin]+1);}}}return dp[num] === Infinity ? 'Impossible' : dp[num];}let answer=MinnumCoupon(coins,num);console.log(answer); }

?

7、代碼題3:迷宮尋路

答案:

let MN=readline();let MNlines=MN.split(' ');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=line.split(' ');let infos=new Array(N);for(let i=0;i<N;i++){infos[i]=parseInt(lines[i]);}info[rownum]=infos;rownum++;}let TwoDimArray=new Array(M);for(let i=0;i<TwoDimArray.length;i++){TwoDimArray[i]=info[i];}let Answer=(new Array(M)).fill(0).map(() => (new Array(N)).fill(0))function FindBestWay(M,N,TwoDimArray){for(let i=0;i<M;i++){for(let j=0;j<N;j++){if(i!=0&&j!=0){Answer[i][j]=Math.min(Answer[i-1][j]+TwoDimArray[i][j],Answer[i][j-1]+TwoDimArray[i][j]); }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);console.log(an);

8、代碼題4:星際穿越

答案:

let N=parseInt(readline()); if(N==0){console.log(0); } else if(N==1){let line=readline();let lines=line.split(' ');console.log(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<N;i++){for(let j=0;j<N;j++){for(let z=0;z<N;z++){let line=readline();let lines=line.split(' ');power[parseInt(lines[0])][parseInt(lines[1])][parseInt(lines[2])]=parseInt(lines[3]);}}}let hasroute=(new Array(N)).fill(0).map(()=>(new Array(N)).fill(0).map(() => (new Array(N)).fill(0)));for(let i=0;i<N;i++){for(let j=0;j<N;j++){for(let z=0;z<N;z++){hasroute[i][j][z]=true;}}}let maxi=0,maxj=0,maxz=0;let maxpower=power[maxi][maxj][maxz];for(let i=0;i<N;i++){for(let j=0;j<N;j++){for(let z=0;z<N;z++){if(power[i][j][z]>maxpower){maxi=i;maxj=j;maxz=z;maxpower=power[i][j][z];}}}}let max=0;let total=0;function FindMaxPower(x,y,z){hasroute[x][y][z]=false;total=total+power[x][y][z];//判斷不越界且能量比較大且沒走過if(x+1 < N && power[x + 1][y][z] < power[x][y][z]&&hasroute[x + 1][y][z]){FindMaxPower(x + 1, y, z);}if (x - 1 > -1 && power[x - 1][y][z] < power[x][y][z] && hasroute[x - 1][y][z]){FindMaxPower(x - 1, y, z);}if (y + 1 < N && power[x][y + 1][z] < power[x][y][z] && hasroute[x][y + 1][z]){FindMaxPower(x, y + 1, z);}if (y - 1 > -1 && power[x][y - 1][z] < power[x][y][z] && hasroute[x][y - 1][z]){FindMaxPower(x, y - 1, z);}if (z + 1 < N && power[x][y][z + 1] < power[x][y][z] && hasroute[x][y][z + 1]){FindMaxPower(x, y, z + 1);}if (z - 1 > -1 && power[x][y][z - 1] < power[x][y][z] && hasroute[x][y][z - 1]){FindMaxPower(x, y, z - 1);}if(total>max){max=total;}total=total-power[x][y][z];hasroute[x][y][z]=true;}FindMaxPower(maxi,maxj,maxz);console.log(max); }

?

總結

以上是生活随笔為你收集整理的美团2020校招前端方向笔试题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。