拼多多2018提前批前端笔试总结
题型: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);