1. 程式人生 > >2018 CVTE 前端校招筆試題整理

2018 CVTE 前端校招筆試題整理

簡單的 三欄布局 位置 back 左右 blue color for循環 結果

昨天晚上(7.20)做了CVTE的前端筆試,總共三十道題,28道多選題,2道編程題 。做完了之後覺得自己基礎還是不夠紮實,故在此整理出答案,讓自己能從中得到收獲,同時給日後的同學一些參考。

首先說一下兩道肥腸簡單的編程題:

1.請實現這樣一個函數,輸入參數為一個長度為2n的整數數組,以兩個整數一組的方式將數據分組,並使每組數組最小值相加為最大,輸出這個最大值。

輸入[1,4,3, 2],輸出為4
輸入[1,5,7,9, 4, 12],輸出為15

思路:把數組按大小排序然後相鄰兩項分為一組,取每組較小的一個數相加即可。

function arrApart(arr){
    arr.sort( function
(a,b){return a-b} ); var len = arr.length; var result = 0; for(i = 0 ; i < len ; i=i+2){ result += arr[i]; console.log(arr[i]); } return result } console.log("result: "+arrApart([3,1,4,7,2,12,6,8])) //result: 18

2. 用flex實現一個三欄布局,左右定寬,中間自適應。這個就很簡單了。

<style>
body{ margin: 0; padding: 0; } .box{ display: flex; } .left{ width: 200px; height:400px; background: red; } .middle{ flex-grow:1; height:400px; background: yellow; } .right{ width: 120px; height:400px; background: blue; } </style> </head> <body> <div class="box">
<div class="left"></div> <div class="middle"></div> <div class="right"></div> </div> </body>

下面是小題(摘錄):

1. 以下代碼輸出啥?

for(var i={j:0};i.j< 5;i.j++){
(function(i){
    setTimeout(function(){console.log(i.j)},0);
    })(JSON.parse(JSON.stringify(i)));
}
輸出啥?//0,1,2,3,4

for循環體內創建了一個自執行的匿名函數,立即把每一個 i 以 JSON.parse(JSON.stringify(i)) 處理之後按值傳遞給匿名函數的參數。這裏的每個i是個對象,JSON.stringify()是從一個對象中解析出字符串,即JSON.stringify(i) === ‘{"j": 0 }‘,而JSON.parse()是從一個字符串中解析出json對象,即JSON.parse(‘{"j": 0 }‘) === { j : 0 }, 一波操作之後傳的其實還是i,然後再一個個把i.j 的值打印出來,結果是0,1,2,3,4

2. 已知一算術中綴表達式為A-(B+C)*D+F/G ,則可算出後綴表達式為( )

所謂前綴、中綴、後綴表達式,它們都是對表達式的記法,因此也被稱為前綴記法(波蘭式)、中綴記法和後綴記法(逆波蘭式)。它們之間的區別在於運算符相對與操作數的位置不同:前綴表達式的運算符位於與其相關的操作數之前;中綴和後綴同理。

變換步驟如下:a. 先按優先級給每個表達式加括號: (A-(((B+C)*D)+(F/G))) b. 將每個括號內的運算符丟到括號後面:((A-((B+C)*D))+(F/G)) c. 去掉括號:ABC+D*-FG/+ (中綴變前綴就是把運算符丟到括號前面)

3. 未完待續...

2018 CVTE 前端校招筆試題整理