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. eclipse 编译出错(java.io.ObjectInputStream)的解决办法

    Multiple markers at this line - The type java.io.ObjectInputStream cannot be resolved. It is indirec ...

  2. Android SDK开发包国内下载地址

    不知道是因为最近kaihui还是怎么的,打开android sdk官方网站特别的慢,想下载最新版本的platform几乎变成不可能完成的任务,不知道为什么Google不像Apache那样在各国设立镜像 ...

  3. 视觉SLAM中的数学基础 第四篇 李群与李代数(2)

    前言 理解李群与李代数,是理解许多SLAM中关键问题的基础.本讲我们继续介绍李群李代数的相关知识,重点放在李群李代数的微积分上,这对解决姿态估计问题具有重要意义. 回顾 为了描述三维空间里的运动,我们 ...

  4. IBM powerVM VIOS

    引言 随着信息化技术不断发展,各个企业 IT 基础架构也在不断朝向虚拟化,大数据,云计算等精简,整合的趋势发展.虚拟化技术就显得尤为重要.今天要给大家介绍的是 Power 服务器虚拟化技术中的一小部分 ...

  5. [原]如何在Android用FFmpeg解码图像

    前一篇[原]如何用Android NDK编译FFmpeg 我们知道了如何使用NDK来编译Android平台下使用的FFmpeg动态库.这篇文章我们就可以使用Android下的JNI来调用FFMpeg进 ...

  6. SQL 触发器 instead of | insert

    create trigger tgr_Insert on A instead of insert as print 'Hello World' go insert into A values('100 ...

  7. 文件比对工具(Beyond Compare)

    文件比对工具: 工具名称:Beyond Compare 版本号:v3.3.13 下载地址:http://i.cnblogs.com/Files.aspx 官网最新版本下载地址:http://www.s ...

  8. SmartJS 系列规划分享和背景介绍

    发布了smartjs后,有朋友问:“没看懂究竟是干嘛的”.唉,打击了,每次我都想高唱其实你不懂我的心. 今天把相关的东西都整理了一遍,给大家介绍一下.里面绝大多数都已经实现过,有些则是有新的思路重做或 ...

  9. HTML5 is Canvas

    var cvs = document.getElementById("cvs"); // // 获取上下文环境 var con = cvs.getContext("2d& ...

  10. Angular开发Tips

    1.在使用$routeProvider的时候,需要让模块依赖ngRoute,否则会提示找不到服务,示例: angular.module('module1', ['ngRoute']) .config( ...