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. [leetcode]Binary Tree Right Side View

    好久不写了,最近忙毕业论文呢. 这个题,就是说一个二叉树,你从右边看,你能看到的数有哪些(会被遮挡) 其实抽象出来就是说...二叉树每层最右边的数有哪些.. 那我们按层遍历一次就好了. /** * D ...

  2. 关于float /double、string类型的hash函数/hash表实现(转)

    #include <ext/hash_map> #include <math.h> #include <stdio.h> using namespace std; ...

  3. Maven Android使用一

    Maven的坐标包括:groupId.artifactId.version.packaging.classifier. groupId:定义当前maven项目隶属的实际项目: artifactId:定 ...

  4. jquery---基本标签

    你觉得 jquery 有哪些好处? jQuery 是轻量级的 javascript 框架 强大的选择器 出色的 DOM 操作的封装 可靠的事件处理机制 完善的 ajax 封装 出色的浏览器的兼容性 支 ...

  5. java模仿qq好友面板的布局(BoxLayout问题)

    .............. JLabel ll = new JLabel(dlg.getNameText() + ":" + dlg.getIPText(), ii[index] ...

  6. NPM使用详解(上)

    1.NPM是什么? NPM是JavaScript的包管理工具,在安装NodeJS(什么?你不知道node?来,我们合计合计:https://nodejs.org/)的时候,会自动安装上npm. 要查看 ...

  7. 0x00411202指令引用的0x00000000内存该内存不能为read错误,怎么解决

    0X000000该内存不能为read的解决方法 出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了. 一.先说说硬件问题,主要方面是: 1.内存条坏了 更换内存条 2.双 ...

  8. 免费下载:320+ 手绘风格 Apple iOS7 图标

    Themify 图标是一套用在网页设计和应用程序的图标,包括 320+ 手工制作的像素完美的苹果  iOS7 图标中汲取灵感.这些图标完全免费,您可以用于任何目的,无论是个人或商业. 您可能感兴趣的相 ...

  9. 探索jdk8之ConcurrentHashMap 的实现机制

    在介绍ConcurrentHashMap源码之前,很有必要复习下java并发编程中的一些基础知识,比如内存模型等. 存储模型 并发编程中的三个概念 1.原子性 2.可见性 3.重排序 对HashMap ...

  10. Cocos2d-x网络通信

    Cocos2d-x示例提供了三种内置的网咯通信类 HttpClient,WebSocket,SocketIO. 其中第一个是简单的HTTP协议的使用,提供很多Http请求方式. 剩下的Socket*是 ...