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. Android之TextView密码输入变星号时间

    private static class Visible extends Handler implements UpdateLayout, Runnable{ public Visible(Spann ...

  2. 转载 jquery $(document).ready() 与window.onload的区别

    Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 windo ...

  3. 创维37K05HR黑屏有声音故障维修

    转载1: 接一台创维新机37L05HR,1年多,刚过保.开机图像声音正常,放10分钟左右黑屏.声音正常.关机再开有正常.2分钟又出现黑屏.在保修期内,售后 来修两次此类故障都没有根治.拆机测5V 12 ...

  4. oracle 11g 如何创建、修改、删除list-list组合分区

    Oracle11g在分区方面做了很大的提高,不但新增了4种复合分区类型,还增加了虚拟列分区.系统分区.INTERVAL分区等功能. 9i开始,Oracle就包括了2种复合分区,RANGE-HASH和R ...

  5. CSS3实现倒计时

    CSS3实现倒计时小程序,界面如下: 代码如下: <style> body,html{ margin:0px; height:100%; } body{background: #000; ...

  6. 基于jQuery点击加载动画按钮特效

    分享一款基于jQuery点击加载动画按钮特效.这是一款基于jQuery+CSS3实现的鼠标点击按钮加载动画特效代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div ...

  7. 关于VSTO调用Excel后进程无法退出的解决方案:

    VSTO的Excel对象模型提供了托管代码对Excel的操作.但是它的实现时通过RCW(Runtime Com Wrapper)实现的,所以无法完全按照托管代码的运行方式操作.COM的资源释放时通过引 ...

  8. Android 布局之RelativeLayout

    Android 布局之RelativeLayout 1 RelativeLayout简介 RelativeLayout是相对布局. RelativeLayout布局属性 1.1 与parent相对的属 ...

  9. 高性能JavaScript-JS脚本加载与执行对性能的影响

    在web产品优化准则中,很重要的一条是针对js脚本的加载和执行方式的优化.本篇文章简单描述一下其中的优化准则. 1. 脚本加载优化 1.1 脚本位置对性能的影响 优化页面加载性能的原则之一是将scri ...

  10. [Node.js] BDD和Mocha框架

    原文地址:http://www.moye.me/2014/11/22/bdd_mocha/ 引子 今天造了个轮子:写了个深拷贝任意JavaScript对象的模块(事实上npm上已经有类似的模块,纯造轮 ...