2015阿里巴巴秋季校園招聘前端 在線筆試題我的參考答案

昨天是阿里巴巴秋季校園招聘在線筆試的第一天,本着學習和共享的精神,本人上網百度了其中一份前端在線筆試題,而且寫出了本身的答案,發上來,供你們參考。javascript

  總的來講,這一次的題目相比之前的題目,最大的特色是新,竟然直接考了nodejs,這是出乎不少人的意料的。廢話很少說,接下來上題目。css

一、 下面哪些是NodeJS官方模塊?html

  A . Querystring    B. Request    C .Async   D. Dns前端

  這一題我以爲有點蛋疼,什麼就叫作官方模塊?在nodejs裏面,模塊通常分紅核心模塊、用戶自定義的文件模塊。因此我理解這裏的官方模塊爲核心模塊,可是即使是如此,  這一題仍是比較蛋疼的,誰記得那麼多。不過我在stackoverflow找到了一個比較合理的解釋:http://stackoverflow.com/questions/11364151/which-modules-does-  node-js-require-automatically.因此這一題我選了  A D。java

二、 經常使用的git操做有node

  A .Add  B.Push  C.Mkdir  D.Fetch  E.Mv  F.Merge  G.Taggit

對於這裏的關鍵詞「經常使用」,也是沒有一個明顯的界限的,你要是用的多,就叫經常使用。下面非別分析:github

  A: add:將當前工做目錄中更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示記入了版本歷史中,這也是提交以前所須要執行的一步。 ajax

  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

三、 下面說法正確的有

  A.P元素不能包含div  B.Li元素的祖先元素多是li,但氟元素不多是li

  C.Domtree的根節點是body元素  D.Body內的元素的offsetparent必定存在

四、在文件/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地址

  https://github.com/yuanzm

九、請使用原生js實現一個div可拖拽,須要考慮瀏覽器兼容性。

  如代碼所示:

複製代碼
 1 <html>
 2 <head>
 3     <title>test</title>
 4 </head>
 5 <style type="text/css">
 6 #drag1 {
 7     width: 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 ")
}
複製代碼

  雖然勉強寫了出來,可是本人還不肯定對於題目的理解是否是正確,但願路過的大神指導。

  轉載地址:http://www.cnblogs.com/yuanzm/p/3936376.html

相關文章
相關標籤/搜索