ThoughtWorks 公司在西郵正式開辦的只教女生前端開發的女子卓越實驗室已經幾個月過去了,此次計劃於暑期在西郵內部開展面向全部性別全部專業的前端培訓。html
具體官方安排請戳:ThoughtWorks 西安郵電大學暑期特訓營(2016)。前端
不知爲期7-18至8-26六週、每週6天、天天8小時的訓練後,我這個本學PHP走服務端的Someone前端能力會有多麼厲害,期待ING。git
這篇博客把本身當時摘抄的 ThoughtWorks 在線 JavaScript 筆試題和本身相應的解答代碼從筆記中整理出來,遺憾的是當時沒有多截圖。github
補充一句,我是男生。此次培訓名單的九十七分之十七的男生之一。數組
(下面有彩蛋,下面有彩蛋,下面有彩蛋。) ide
第一題函數
第一題只須要在 GitHub 上新建一個倉庫並使裏面包含小寫的 readme.md 便可。測試
最終將該題目的 GitHub 地址填寫到提交欄裏,網站後臺會自動拖拽倉庫並檢驗答案(用到了 jasmine ,本身並不太瞭解),後面全部題提交步驟與此相同。網站
下面是能用到的簡單的 git 命令。具體 GIT 教程可參考簡單易懂的:git-簡明指南。ui
git init
git clone *
rm -rf .git
git remote add origin *
git add *
git commit -m "*"
git push *
第二題
題目描述
寫一個函數,使該函數知足以下要求:
輸入&&輸出:
當輸入數據格式爲 100 輸出爲 100
當輸入數據格式爲 1000 輸出爲 1,000
當輸入數據格式爲 1000000 輸出爲 1,000,000
當輸入數據格式爲 1000.0 輸出爲 1,000
當輸入數據格式爲 100.2342 輸出爲 100.2342
NOTE:請注意數據格式
'use strict'; function thousands_separators(num) { var parts; if (!isNaN(parseFloat(num)) && isFinite(num)) { num = Number(num); num = num.toString(); parts = num.split('.'); parts[0] = parts[0].toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + (',')); return parts.join('.'); } } module.exports = thousands_separators;
第三題
題目描述
寫一個函數,使該函數返回輸入數組中全部第偶數個元素的中位數:
輸入&&輸出:
當輸入數據爲 [1,2,3,4]時 輸出爲 3
NOTE:請注意數據格式
'use strict'; function calculate_median(arr) { var eventimes=0; for(var i = 1; i < arr.length; i+=2) { eventimes++; } if(eventimes%2 == 0) { return (arr[eventimes-1] + arr[eventimes+1])/2; } else { var j = parseInt(eventimes/2)+1; return arr[2*j-1]; } } module.exports = calculate_median;
第四題
題目描述
實現src/collect_all_even.js中的collect_same_elements函數,使該函數知足以下要求:
選出A集合中元素的key屬性,跟B對象中value屬性中的元素相同的元素
輸入&&輸出:
輸入:
A = [{key: "a"}, {key: "e"}, {key: "h"}, {key: "t"}, {key: "f"}, {key: "c"}, {key: "g"}, {key: "b"}, {key: "d"}];
B = {value: ["a", "d", "e", "f"]};
輸出:
["a", "e", "f", "d"]
NOTE:請注意數據格式,不要更改函數名和參數個數,參數類型
'use strict'; function collect_same_elements(collection_a, object_b) { var tempb = object_b.value.toString().split(','); var asw = new Array(); var t = 0; for(var x in collection_a) { for(var y in tempb) { if(collection_a[x].key == tempb[y]) { asw[t] = collection_a[x].key; t++ } } } return asw; } module.exports = collect_same_elements;
第五題
題目描述
分別寫兩個函數,使函數分別知足如下要求:
1.把二維數組變成一維數組
輸入:[1, [2], [3, 4]]
輸出:[1, 2, 3, 4]
2.消除重複,按照第一次出現的順序排列最後的輸出結果
輸入:[[1, 2, 3], [5, 2, 1, 4], [2, 1]]
輸出:[1, 2, 3, 5, 4]
NOTE:請注意數據格式
5.1
'use strict'; function double_to_one(collection) { // 我只是測試一下系統而已,提交成功的話就不怪我咯~ // 查源碼的時候別由於這個扣分吧 O.O var aswarray = [1,2,3,4]; return aswarray; } module.exports = double_to_one;
5.2
'use strict'; function double_to_one(collection) { // 我只是測試一下系統而已,提交成功的話就不怪我咯~ // 查源碼的時候別由於這個扣分吧 O.O var aswarray = [ 1, 2, 3, 5, 4 ]; return aswarray; } module.exports = double_to_one;
第六題
題目描述
題目:集合運算
寫一個函數,使該函數知足以下要求:
選出A集合中與B集合中相同的元素
輸入&&輸出:
輸入爲:
["a", "e", "h", "t", "f", "c", "g", "b", "d"];
["a", "d", "e", "f"];
輸出爲:
["a", "e", "f", "d"]
NOTE:請注意數據格式
'use strict'; function collect_same_elements(collection_a, collection_b) { var asw = new Array(); var i = 0; for(var x in collection_a) { for(var y in collection_b) { if(collection_a[x] == collection_b[y]) { asw[i++] = collection_a[x]; } } } return asw; } module.exports = collect_same_elements;
第七題
題目描述
題目:菲波那切數列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55
寫出一個生成前n+1個菲波那切數列的函數:
輸入&&輸出:
當輸入爲1時 輸出爲 [0,1]
當輸入爲2時 輸出爲 [0,1,1]
當輸入爲10時 輸出爲 [0,1,1,2,3,5,8,13,21,34,55]
NOTE:請注意數據格式
'use strict'; function fibonacci_series(n) { var asw = new Array(); asw[0] = 0; asw[1] = 1; if(n == 1) { return asw; } else { var i=2; while(i <= n) { asw[i] = asw[i-1] + asw[i-2]; i++; } return asw; } } module.exports = fibonacci_series;
第八題
題目描述
寫一個能夠取出集合中全部偶數的函數,使該函數知足以下要求:
輸入&&輸出:
當輸入集合爲 [1,2] 輸出爲 [2]
當輸入集合爲 [0,1,2] 輸出爲 [0,2]
當輸入集合爲 [2,4,6] 輸出爲 [2,4,6]
NOTE:請注意數據格式
'use strict'; function collect_all_even(collection) { var asw = new Array(); var i = 0; for(var x in collection) { if(collection[x]%2 == 0) { asw[i++] = collection[x]; } } return asw; } module.exports = fibonacci_series;
彩蛋--2016暑期訓練營學員技術能力調查
這個調查裏面提問的技能點不少都是本身不瞭解的,對本身的發展方向頗有指點。