1. 程式人生 > >應屆生前端開發筆試題目

應屆生前端開發筆試題目

如今的很多網際網路公司,尤其是一些大公司總喜歡出各種演算法題,考察程式設計師的邏輯思維能力。這是本人蔘加應聘時做過的面試題目,還有一些是網上收集的在面試時出現率比較高的演算法題,現在拿出來跟大家一起分享,希望對一些前端開發應聘者能帶來一些幫助,面試時即使做的題目跟這些不一樣,但是這些做題的思想都是通用的。

題目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陣列
}