昨天是阿里巴巴秋季校园招聘在线笔试的第一天,本着学习和共享的精神,本人上网百度了其中一份前端在线笔试题,并且写出了自己的答案,发上来,供大家参考。
总的来说,这一次的题目相比以前的题目,最大的特点是新,居然直接考了nodejs,这是出乎很多人的意料的。废话不多说,接下来上题目。
1、 下面哪些是NodeJS官方模块?
A . Querystring B. Request C .Async D. Dns
这一题我觉得有点蛋疼,什么就叫做官方模块?在nodejs里面,模块一般分成核心模块、用户自定义的文件模块。所以我理解这里的官方模块为核心模块,但是即便是如此, 这一题还是比较蛋疼的,谁记得那么多。不过我在stackoverflow找到了一个比较合理的解释:http://stackoverflow.com/questions/11364151/which-modules-does- node-js-require-automatically.所以这一题我选了 A D。
2、 常用的git操作有
A .Add B.Push C.Mkdir D.Fetch E.Mv F.Merge G.Tag
对于这里的关键词“常用”,也是没有一个明显的界限的,你要是用的多,就叫常用。下面非别分析:
A: add:将当前工作目录中更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示记入了版本历史中,这也是提交之前所需要执行的一步。
B: push:将本地commit的代码更新到远程版本库中,例如 “git push origin”就会将本地的代码更新到名为orgin的远程版本库中。
C:mkdir:应该不属于git常用操作的范围。
D:fetch:从服务器的仓库中下载代码。(与服务器交互,从服务器上下载最新代码)
E: mv: 重命名一个文件、目录或者链接。
F:merge:把服务器上下载下来的代码和本地代码合并。或者进行分支合并。
G:tag: 创建、列出、删除或者验证一个标签对象(使用GPG签名的)。
所以这一题应该是选:A B C E F G
3、 下面说法正确的有
A.P元素不能包含div B.Li元素的祖先元素可能是li,但氟元素不可能是li
C.Domtree的根节点是body元素 D.Body内的元素的offsetparent一定存在
4、在文件/home/somebody/workspace/somemodule.js中第一行引用了一个模块:require(‘othermodule‘),请问required 的查找模块的顺序
A. /home/somebody/workspace/mode_modules/othermodule/index.js
B. /home/somebody/workspace/mode_modules/othermodule. Js
C.CORE MODULES named othermodule
D./home/somebody/mode_modules/othermodule/index.js
首先,nodejs查找模块的方式与Javascript原型链或者作用域链的方式很相似。本人选的答案是:A B D C (很不确定)
5. 请填充代码,使mySort()能使传入的参数按照从小到大的顺序显示出来。
function mySort() {
var tags = new Array();//使用数组作为参数存储容器
请补充你的代码
return tags;//返回已经排序的数组
}
var result = mySort(50,11,16,32,24,99,57,100);/传入参数个数不确定
console.info(result);//显示结果
这一题相对简单,是一道水题,直接上代码:
function mySort() {
var tags = new Array();
for(var i = 0;i < arguments.length;i++) {
tags.push(arguments[i]);
}
tags.sort(function(compare1,compare2) {
return compare1- compare2;
});
return tags;
}
var result = mySort(50,11,16,32,24,99,57,100);
console.info(result);
8. 请写出个人github地址
9、请使用原生js实现一个div可拖拽,需要考虑浏览器兼容性。
如代码所示:
1 <html>
2 <head>
3 <title>test</title>
4 </head>
5 <style type="text/css">
6 #drag1 {
7 50px;
8 height: 50px;
9 padding: 0px; line-height: 1.5 !important;">;
10 cursor: pointer;
11 }
12 </style>
13 <body>
14 <div id = "drag1"></div>
15 </body>
16 <script type="text/javascript">
17 window.onload = function() {
18 function Drag(obj) {
19 this.obj = obj;
20 }
21 Drag.prototype = {
22 constructor: Drag,
23 getInitPosition: function(e) {
24 e = e || window.event;
25 var eX,eY;
26 if(e.pageX || e.pageY){
27 eX = e.pageX;
28 eY = e.pageY;
29 }
30 eX = e.clientX;
31 eY = e.clientY;
32 var positionX = eX- this.obj.offsetLeft;
33 var positionY = eY - this.obj.offsetTop;
34 return {
35 x: positionX,
36 y: positionY
37 }
38 },
39 getmouseCoordinate:function(e) {
40 e = e || window.event;
41 if(e.pageX || e.pageY){
42 return {x:e.pageX, y:e.pageY};
43 }
44 return {
45 x:e.clientX + document.body.scrollLeft - document.body.clientLeft,
46 y:e.clientY + document.body.scrollTop - document.body.clientTop
47 };
48 },
49 initDrag:function() {
50 var tempThis = this;
51 this.obj.onmousedown = function(e) {
52 var initP = tempThis.getInitPosition();
53 document.onmousemove = function(e) {
54 var moveP = tempThis.getmouseCoordinate();
55 tempThis.obj.style.marginTop = moveP.y - initP.y + "px";
56 tempThis.obj.style.marginLeft = moveP.x - initP.x + "px";
57 }
58 document.onmouseup = function(){
59 document.onmousemove = null;
60 document.onmouseup = null;
61 }
62 }
63 }
64 }
65 var drag = document.getElementById("drag1");
66 var dragElement = new Drag(drag);
67 dragElement.initDrag();
68 }
69 </script>
70 </html>
10. 如何判断浏览器是IE还是火狐,用ajax实现。
要想通过Ajax来判断是ie浏览器还是firefox浏览器,就应该通过XMLHttpRequest 对象。
首先简单介绍一下这个对象:
(1)所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。
(2)所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。
因此作者对于这题的理解是写一个基于XMLHttpRequest的js脚本,在ie或者火狐浏览器下面判断到底处于哪一种浏览器环境,代码如下所示:
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
alert("your brower is not IE ");
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
alert("your brower is IE ")
}
虽然勉强写了出来,但是本人还不确定对于题目的理解是不是正确,希望路过的大神指导。