ThoughtWorks 公司在西邮正式开办的只教女生前端开发的女子卓越实验室已经几个月过去了,这次计划于暑期在西邮内部开展面向所有性别所有专业的前端培训。

具体官方安排请戳:ThoughtWorks 西安邮电大学暑期特训营(2016)

不知为期7-18至8-26六周、每周6天、每天8小时的训练后,我这个本学PHP走服务端的Someone前端能力会有多么厉害,期待ING。

这篇博客把自己当时摘抄的 ThoughtWorks 在线 JavaScript 笔试题和自己相应的解答代码从笔记中整理出来,遗憾的是当时没有多截图。

补充一句,我是男生。这次培训名单的九十七分之十七的男生之一。

(下面有彩蛋,下面有彩蛋,下面有彩蛋。)

第一题

第一题只需要在 GitHub 上新建一个仓库并使里面包含小写的 readme.md 即可。

最终将该题目的 GitHub 地址填写到提交栏里,网站后台会自动拖拽仓库并检验答案(用到了 jasmine ,自己并不太了解),后面所有题提交步骤与此相同。

下面是能用到的简单的 git 命令。具体 GIT 教程可参考简单易懂的:git-简明指南

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暑期训练营学员技术能力调查

这个调查里面提问的技能点很多都是自己不了解的,对自己的发展方向很有指点。

ThoughtWorks西邮暑期特训营 -- JavaScript在线笔试题的更多相关文章

  1. 西邮linux兴趣小组2014纳新免试题(五)

    [第五关] 题目 http://final5.sinaapp.com/ 关注西邮Linux微信平台,得到一个名为a的文件 分析 分析文件a 需要反汇编,拿IDA上,打开后发现key_function及 ...

  2. 西邮linux兴趣小组2014纳新免试题(四)

    [第四关] 题目 http://findakey.sinaapp.com/ Example: String1:FFFF8 5080D D0807 9CBFC E4A04 24BC6 6C840 49B ...

  3. 西邮linux兴趣小组2014纳新免试题(三)

    [第三关] 题目 http://sortsth.sinaapp.com/ 分析 查看网页源码,得知题目让找出6种排序算法,每次刷新或提交序列都变化. 15种算法清单: CountingSort     ...

  4. 西邮linux兴趣小组2014纳新免试题(二)

    [第二关] 题目 http://round2.sinaapp.com/ 分析 打开后,戳进去发现一句名言,然后下一戳的url提示. 在网页源码中得到Page1024提示,于是写一个脚本 #!/bin/ ...

  5. 西邮linux兴趣小组2014纳新免试题(一)

    [第一关] 题目 0101001001100001011100100010000100011010000001110000000011001111100100000111001100000000000 ...

  6. JavaScript常见笔试题分析

      1.Javascript的typeof可能返回的结果有哪些? 答:共6种,具体为number ,boolean,string,undefined,function,object(对象或者null返 ...

  7. 西邮Linux兴趣小组纳新笔试试题

    下面是西邮Linux小组今年纳新的笔试试题 1. 下面这个程序的输出结果是什么? int main() { int a = (1, 2); printf(“a = %d\n”, a); return ...

  8. 西邮Linux兴趣小组2016免试题

    4.28的宣讲会圆满结束(就在写这段话之前不久),对于西邮Linux兴趣小组这一次纳新,身为局外人表示:还是有历史,还是会玩,还是厉害哈. 华丽的分割线里面是自己之前的攻关战略,最后补充了宣讲会上学长 ...

  9. 优客源创会 西安站 西邮Linux兴趣小组

    2016年5月19日晚7:00,优客源创会西安站在西安邮电大学长安校区东区教学楼FF305如期举行,西安邮电大学计算机学院教授.西邮Linux兴趣小组指导老师陈莉君.王小银老师和来自开源中国的周凯先生 ...

随机推荐

  1. 使用Aspose.Cells 设置chart的y坐标轴显示值

    目的:设置chart的y坐标轴显示值 用aspose.cell生成的chart生成的Y轴是默认生成的,自己要定义y轴坐标值1.把数据源写到excel里面,list里面2.y轴坐标自己定义 第一种:默认 ...

  2. Android开发之Canvas rotate方法释疑

    Canvas的rotate()函数本应该是很简单的一个函数,但是由于api手册言之不详,使用中难免有吃不准的地方.下面所记录的几点,都是我在使用中所迷惑过的问题,特此记录. 1,坐标原点在哪里? 如果 ...

  3. 谷歌面经 Tree Serialization

    http://www.careercup.com/question?id=4868040812396544 You should transform an structure of multiple ...

  4. MFC窗口和控件大小等比例变化

    第一步:OnInitDialog里保存对话框及其所有子窗体的Rect区域 CRect rect; GetWindowRect(&rect); listRect.AddTail(rect);// ...

  5. 使用tomcat作为web应用容器时,启用新线程找不到Session的问题

    今天做一个功能,为了快速响应前端,业务完成后,另起了一个线程做一些不影响业务的统计工作,然后立即将业务操作结果返回给前台. 结果在新线程里报空指针找不到request对象.检查了下,我们用的是stru ...

  6. 编写高质量JS代码的68个有效方法(二)

    [20141011]编写高质量JS代码的68个有效方法(二) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  7. ubuntu14.04使用IceGridAdmin图形界面

    打开网页: http://www.rpmfind.net/linux/RPM/index.html输入搜索: icegrid-gui下载文件: icegrid-gui-3.5.1-2.mga4.x86 ...

  8. I'm back for Machine Learning

    Hi, Long time no see. Briefly, I plan to step into this new area, data analysis. In the past few yea ...

  9. 剑指架构师系列-Struts2构造函数的循环依赖注入

    Struts2可以完成构造函数的循环依赖注入,来看看Struts2的大师们是怎么做到的吧! 首先定义IBlood与BloodImpl类: public interface IBlood { } pub ...

  10. [Node.js] Promise,Q及Async

    原文地址:http://www.moye.me/2014/12/27/promise_q_async/ 引子 在使用Node/JS编程的时候,经常会遇到这样的问题:有一连串的异步方法,需要按顺序执行, ...