華爲2018春招前端開發實習生筆試題分享

我申請的是前端開發崗位,筆試題估計軟件開發都是同樣的,直接三道大題,一開始不熟悉牛客網的編程環境,浪費了好多時間。前端

牛客網編程筆試有一個好處就是能夠在本地ide上面編寫運行以後再copy到答題環境中,這樣能夠方便我進行調試,更直觀地找到代碼中一些小問題並快速修改。面試

接下來就是乾貨分享啦!我筆試的時候作出了兩道題,第三題時間不夠,沒有作出來。不知道有沒有面試機會額。正則表達式

牛客網編程環境介紹編程

我選的是js v8數組

代碼示例有兩個app

1.ide

// 求a+b的和
while(line=readline()){
    var lines = line.split(" ");
    var a = parseInt(lines[0]);
    var b = parseInt(lines[1]);
    print(a+b);
}

2.spa

// 輸出一個整數,表示n階方陣的和
// 輸入
// 3
// 1 2 3
// 2 1 3
// 3 2 1
var n = parseInt(readline());
var ans = 0;
for(var i = 0;i < n; i++){
    lines = readline().split(" ")
    for(var j = 0;j < lines.length; j++){
        ans += parseInt(lines[j]);
    }
}
print(ans);

筆試題:調試

第一題和第二題的代碼實現是在牛客網環境中運行的,若是本身調試的話能夠適當修改一下,不影響思路哈。code

1.題目很長,能夠簡化以下:

一個整數數組,數組中每一個值的範圍爲0-21,求數組中相鄰四個數之和最大,返回該相鄰四個數中的第一個數的索引

// 1.將輸入存爲一個數組;
//2.找數組中相鄰四個數之和最大,能夠考慮遍歷求和,將和放在一個新的數組中,其中對象的索引爲接收能量窗的索引,值爲四個數之和;
//3.遍歷數組,找出最大的值,並輸出對應的索引
var arr = []; var newarr = []; for(var i = 0;i < 21; i++){ arr[i] = parseInt(readline()); } for(var j = 0;j < arr.length-3; j++){ var h = 0; newarr[j] = 0; while(h<4){ newarr[j] += parseInt(arr[j+h]); h++; } } var max = Math.max.apply(null,newarr); var index = newarr.indexOf(max); print(index);

2.找標準鍵盤和天然鍵盤的對應關係,輸入是天然鍵盤,輸出是對應的標準鍵盤的字符,注意大寫字母對應輸出大寫字母,而小寫字母對應輸出小寫字母

標準鍵盤:QWERTYUIOPASDFGHJKLZXCVBNM
天然鍵盤:ABCDEFGHIJKLMNOPQRSTUVWXYZ
輸入
H kz k xif.
輸出
I am a boy.

//1.在天然鍵盤中找到對應字符的索引(用Indexof),再根據索引在標準鍵盤中找到對應字符;
//2.要考慮大小寫問題,可用正則表達式判斷字母大小寫
var bstr="QWERTYUIOPASDFGHJKLZXCVBNM"; var zstr="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var barr=bstr.split(""); var zarr=zstr.split(""); var newarr=[]; while(line=readline()){ var arr = line.split(""); } for(var j = 0;j < arr.length; j++){ var flag = true; //是否小寫 if(/^[a-z]+$/.test(arr[j])){ arr[j]=arr[j].toUpperCase(); flag = false; } var index = zarr.indexOf(arr[j]); if(index == -1){ newarr[j] = arr[j]; }else{ if(!flag){ newarr[j] = bstr[index].toLowerCase(); }else{ newarr[j] = bstr[index]; } } } var result = newarr.join(""); print(result);

3.

求一個整形數組中最大連續字數組的和
輸入
2, -3, 4, 11, -5, 8, 3, -6
輸出
21
輸入是一組數字,數字自己能夠是正數,也能夠是負數。輸出是這個數組的子數組中最大的求和數。如例子中知足該條件的額子數組是:4, 11, -5, 8, 3 求和後的值是21

// 1.要加和arr.length輪;
// 2.聲明一個新數組,在每一輪加和中依次保存arr[i],arr[i]+arr[i+1],.....,arr[i]+...+arr[arr.length-1]
// 3.找到新數組中最大的數值,輸出該值便可
// while(line=readline()){
//     var arr = line.split(", ");
// }
var arr=[2,-3,4,11,-5,8,3,-6]
var newarr=[];
var a=0;
for(var i = 0;i < arr.length; i++){
    // arr[i] = parseInt(arr[i]);
    var count = arr.length;
    while(count > i){
        newarr[a] = 0;
        for(var j = i;j < count; j++){
            newarr[a] += arr[j];
        }
        count--;
        a++;
    } 
}
var max = Math.max.apply(null,newarr);
// print(max);
console.log(max);
相關文章
相關標籤/搜索