阿里巴巴2015秋季校園招聘前端開發工程師線上筆試題及答案
前幾天是阿里巴巴秋季校園招聘線上筆試的第一天,本著學習和共享的精神,本人上網百度了其中一份前端線上筆試題,並且寫出了自己的答案,發上來,供大家參考。
總的來說,這一次的題目相比以前的題目,最大的特點是新,居然直接考了nodejs,這是出乎很多人的意料的。廢話不多說,接下來上題目。
1、 下面哪些是NodeJS官方模組?
A . Querystring B. Request C .Async D. Dns
這一題我覺得有點蛋疼,什麼就叫做官方模組?在nodejs裡面,模組一般分成核心模組、使用者自定義的檔案模組。所以我理解這裡的官方模組為核心模組,但是即便是如此, 這一題還是比較蛋疼的,誰記得那麼多。不過我在stackoverflow找到了一個比較合理的解釋: http://stackoverflow.com/questions/11364151/which-modules-does-
node-
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); }
-
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
9、請使用原生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 background-color: #404040;
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 ")}