1. 程式人生 > >拼多多2018提前批前端筆試總結

拼多多2018提前批前端筆試總結

思路 htm arr con return sum asc ret ash

題型:14單選、5不定項選擇、3問答(比較基礎的編程)

1.編程題

(1)給定一個包含N個整數的數組A,找出所有不一樣的組合 i 、j、k ,使得 A[i]+A[j]+A[k]=0; 例如 A=[-1,0,1,2,-1,4],輸出為[-101],[-1,-1,2]。請用javascript實現。

思路:使用三層遍歷循環,求出滿足使得 A[i]+A[j]+A[k]=0 的所有可能的 i 、j、k 組合;對得到所有組合進行排序;最後刪除掉重復的組合並輸出就是所得的結果。

function sum(arr){
    var n = arr.length;
    var result = [];
    
for(var i=0; i<n-2; i++){ for(var j=1; j<n-1; j++){ for(var k=2; k<n; k++){ if(arr[i]+arr[j]+arr[k] == 0){ var temp = [arr[i], arr[j], arr[k]]; result.push(temp); } } } }
//子數組排序 result.forEach(function(item){ return item.sort(); }); //二維數組的去重 var hash = {}; var newArr = []; for(var i=0,len=result.length; i<len; i++){ if(!hash[result[i]]){ newArr.push(result[i]); hash[result[i]] = true; } }
// console.log(hash); console.log(newArr); //[ [ -1, 0, 1 ], [ -1, -1, 2 ] ] } sum([-1,0,1,2,-1,4]);

(2)寫一個mul函數,使得方法如下:

console.log(mul(2)(3)(4)); //output:24
console.log(mul(4)(3)(4)); //output:48

解題如下:

function mul(i){
    return function(j){
        return function(k){
            return i * j * k;
        }
    }
}
console.log(mul(2)(3)(4)); //output:24
console.log(mul(4)(3)(4)); //output:48

(3)使用標準的dom方法或屬性編寫一段javascript腳本生成下面這段dom結構。

<div id="pdd">
    <p class="pdd-slogan">多實惠,多樂趣</p>
</div>

方法1

    var div = document.createElement(‘div‘);
    div.id = ‘pdd‘;
    var para = document.createElement(‘p‘);
    para.className = ‘pdd-slogan‘;
    para.innerHTML = "多實惠,多樂趣";
    div.appendChild(para);
    document.body.appendChild(div);

方法2

    var div = document.createElement(‘div‘);
    div.setAttribute(‘id‘, ‘pdd‘)
    var para = document.createElement(‘p‘);
    para.setAttribute(‘class‘, ‘pdd-slogan‘);
    var text = document.createTextNode("多實惠,多樂趣");
    para.appendChild(text);
    div.appendChild(para);
    document.body.appendChild(div);

拼多多2018提前批前端筆試總結