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


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

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

接下來就是干貨分享啦!我筆試的時候做出了兩道題,第三題時間不夠,沒有做出來。不知道有沒有面試機會額。

牛客網編程環境介紹

我選的是js v8

代碼示例有兩個

1.

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

2.

// 輸出一個整數,表示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);

筆試題:

第一題和第二題的代碼實現是在牛客網環境中運行的,如果自己調試的話可以適當修改一下,不影響思路哈。

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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM