应届生前端开发笔试题目

如今的很多互联网公司,尤其是一些大公司总喜欢出各种算法题,考察程序员的逻辑思维能力。这是本人参加应聘时做过的面试题目,还有一些是网上收集的在面试时出现率比较高的算法题,现在拿出来跟大家一起分享,希望对一些前端开发应聘者能带来一些帮助,面试时即使做的题目跟这些不一样,但是这些做题的思想都是通用的。

题目1:

这是一个9*9的乘法口诀表,是完全用算法生成的,下来请用javascript完成生成一个这样的乘法口诀表,要求和图片一模一样,注意边框,注意字体,注意一切细节,不允许使用table。



说明:使用document.write()创建HTML标签并添加class;通过递归方法成一个9*9乘法表;再使用css给乘法表添加样式,使其变成等腰三角形。(关于边框重叠的问题,可以通过设置margin为负值来消除)

JavaScript代码:

   document.write("<div class='box'>"); //最外层div
    for (var i=1; i<=9; i++) { //行
    document.write("<div>");
    for (var j=1; j<=i; j++) {        //列
        document.write("<span class='column'>"+ i + "×" + j + "=" + i*j + "</span>");
    }
    document.write("</div>");
}

document.write("</div>");

CSS代码:

.box {
     text-align: center;
 }
 .column {
     display: inline-block;
     width: 51px;
     height: 17px;
     font-size: 12px;
     border: 1px solid #E2E2E2;
     margin-right: -1px;
     margin-bottom: -1px;
     padding: 5px 10px;

}



题目2:

通过一个输入框,输入一个自定义的数组,例如1,4,5,23,2,17,24,10000000。请把他按照中间高两边低进行排序,最后的结果是1,4,5,23,10000000,24,17,2,算法越准确越好,请注意左右翼数据数据的平衡性。

分析:应该分情况处理。1、如果数组的长度为偶数,则直接分为两组,第一组从小到大排序,第二组从大到小排序,两组拼接输出。 2、如果数值的长度为奇数,取出最大那个数,剩下的偶位数数组进行1操作,然后得到的两个数组跟最大那个数拼接输出。


JavaScript代码:

var cont = prompt("请输入一个数组,并用英文逗号隔开");
var arr = cont.split(",");
var arr1=[];
var arr2=[];
var max =Math.max.apply(null, arr);
if (arr.length%2==0) {        //偶数
    arrSplit(arr,arr1,arr2); //调用排序函数
    document.write(arr1.concat(arr2));        //拼接arr1和arr2数组

else{ //奇数
    arr.sort(function(a, b){ //对数组进行排序
    return b-a;
    });

    var newArr = arr.slice(1);     //除掉最大一个的数,得到偶位数的数组

  arrSplit(newArr,arr1,arr2)

  arr2.unshift(max);//把最大那个数插入arr2

   document.write(arr1.concat(arr2));

    }

function arrSplit(arr,arr1,arr2){ //封装一个对偶数位数组进行分割和排序的函数
    var Array = []; //定义一个数组用于存放arr1和arr2的返回值
    for (var i=0; i<arr.length/2; i++) {        //拆分成两个数组
    arr1[i]= arr[i];
    arr2[i]= arr[i+arr.length/2];
    }
    arr1.sort(function (a, b){        //升序
        return a-b;
    });
    arr2.sort(function (c, d){                  //降序    
        return d-c;
    });
    Array[0]=arr1;
    Array[1]=arr2;
    return Array;                               //返回arr1和arr2数组
}


猜你喜欢

转载自blog.csdn.net/axibadexiang/article/details/79850931