2016春季阿里游戏前端实习生笔试题
来源:互联网 发布:mac x 资料库 编辑:程序博客网 时间:2024/04/28 00:09
闭包问题
var fun = (function(a) { this.a = a; return function(a) { a += this.a; return a; };}(function(a) { return a;})(1));console.log( fun(4) ); // ?
好好想想看,答案是?这个 this
究竟可不可以传递到闭包里面呢?
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
> 5
我写了 NaN
,真是呵呵。
事实上,返回的闭包无论有多少层,this
都是指向顶层父函数的 this
!
最优雅地实现:
若一个数组 arr
长度为 0,则添加一个元素(1,数字类型),否则根据先进先出移除一个
请写出代码。。。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
// 温习功课:尾进push,尾出pop;头进unshift,头出shiftarr.length ? arr.shift() : arr.push(1); // 10分的题目只拿了8分
面试的时候,面试官说最优雅的实现应该是:
arr == '' ? arr.shift() : arr.push(1); // 原理:隐式转换(toString / valueOf)
不使用循环生成长度为100的数组 array
,对应值为其下标
想想看可以怎么实现?
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
我只想到了用递归
function generator(arr) { var len = arr.length; if (len < 100) { arr[len] = len; return generator(arr); // (这里我忘了加return,我醉了...) } else { return arr; }}var array = generator([]);console.log(array); // [0, 1, 2, ..., 99]
将上述数组乱序
想想看能如何实现?
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
我能想到的就是使用 Math.random * 100
,
但我错用了 Math.round
。
四舍五入会导致访问溢出(不存在 a[100]
)!!!
温习功课:Math.random
返回值区间为 [0, 1)
因此,最好使用 Math.floor
或 parseInt
网上搜了一下,原来还有更加优雅的办法:
array.sort(function() { // 返回值小于0则调换位置,否则不变 return 0.5 - Math.random();});console.log( array ); // (乱序的array)
请优雅地将上述乱序数组的前十项求和
一定要优雅哦~
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
我天真地使用了 forEach
,但这是一个大坑:forEach
不支持中断(break
报错,return
无效)。。。
网上搜了一下,发现最优雅的是
eval(array.join('+'))
但这只是针对整个数组求和。So?我也母鸡。。。
请使用正则匹配九游所有的二级域名及其服务
例如:http://a.li.9game.cn/hello/world?ie=utf-8&q=haha&f=&m=true
这样都要匹配到(请注意 query 中 f
为空值)。
正则绝对是要考的啦~~~快快想想怎么写吧,不许先偷看答案哦!
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
// 我事后拼命挤出来的。。。var reg = /((http|https):\/\/)?(\w+.)*9game.cn(\/\w+)*(\??([^?=&]+=[^?=&]*)&?)*/g;
如果以上的正则属于核心代码,对性能要求很高,并且修改发布也是高风险操作,容易影响全局,你会做一些什么工作来 保证每次发布的修改、性能都是可衡量的,出问题的概率是最低的?
这应该属于开放性题目,好好想想,别急着看答案~
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
下面是我的原答案,拿了满分:
单元测试:写相对刁钻的测试用例重复测试,测试过程中记录执行时间与消耗资源。
最高性能地往body中插入十行无序列表,每行显示“第N行”
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
var ul = document.createElement('ul'); i = 0;while (i < 10) { var li = document.createElement('li'); li.innerHTML = '第' + ++i + '行'; ul.appendChild(li);}document.getElementsByTagName('body')[0].appendChild(ul); // 这里扣分了。面试官说这样子会遍历文档,性能不算最高,请直接使用 document.body。。。
如果是直接往 body
中直接 append
10个 p
,则建议使用 document.createDocumentFragment()
一次性插入。
摆脱回调地狱的异步编程解决方案有哪些?用一句话描述其优/缺点
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
请参考 《Javascript异步编程的4种方法 - 阮一峰的网络日志》
JS实现继承的方式有哪些?哪种是你最推荐的?为什么?
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
请参考 《Javascript 面向对象编程 - 阮一峰的网络日志》(三篇)
如何捕获生产环境下的报错代码?
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
在项目中我是通过监听 window.onerror,然后Ajax上传错误信息到后台
根据雅虎军规,前端的 html / js / css / 图片 该如何优化?
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
请参考《前端开发面试题》
上述工作如何自动化?
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
我的答案只拿了7分(满分8分):
前端部分:利用 grunt / gulp / webpack 构建工具(及其插件)实现自动化后端部分:利用镜像(Docker等)以便于实现大规模部署
日常开发如何调试?有什么辅助工具?
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
请自行百度吧亲。。。
- 2016春季阿里游戏前端实习生笔试题
- 2011淘宝春季实习生招聘笔试题
- 淘宝2011春季实习生笔试题
- 阿里2017前端实习生笔试编程第一题
- 2016阿里安全工程师实习生招聘笔试题
- 阿里前端笔试题
- 阿里前端笔试题
- 2016年阿里前端笔试题
- 2015春季实习生招聘 多益网络科技有限公司笔试+面试 游戏开发工程师
- 阿里 2016届实习生招聘笔试
- 2016 阿里 java实习生 在线笔试
- 20130505阿里实习生招聘笔试题
- 2014阿里暑假实习生招聘笔试题
- 2016阿里前端开发实习生面试经历
- 百度2012前端实习生笔试题
- 2015阿里巴巴前端实习生在线笔试题
- 2015阿里巴巴前端实习生在线笔试题
- 2015阿里巴巴前端实习生在线笔试题
- 导航条的属性
- HDU5636 -- Shortest Path -- floyd
- cin.get(), cin.getline(), getline()简单区别
- 图的邻接矩阵实现
- #343Div2-629C Famil Door and Brackets动态规划
- 2016春季阿里游戏前端实习生笔试题
- 图像处理中的膨胀、腐蚀、细化
- GitHub Android Libraries Top 100 简介
- strcasecmp
- C++typede详解
- javascript 自定义事件
- LightOJ 1255 - Substring Frequency
- 蓝桥杯辅导视频学习-递归与循环
- 面向对象编程