2015阿里校招前端笔试题

转自:http://www.cnblogs.com/yuanzm/p/3936376.html

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原型链或者作用域链的方式很相似。根据网友的反馈,博主查阅了《深入浅出nodejs》这本书,书籍18页提到:

  (1):首先,Node在当前目录下查找package.json(CommonJS包规范定义的包描述文件),通过JSON.parse()解析出包描述对象,从中取出main属性指定的文件名进行定位。如果文件缺少扩展名,将会进入扩展名分析的步骤。

  (2):而如果main属性制定的文件名错误,或者压根没有package.json文件,Node会将index当做默认文件名,然后依次查找index.js、index.node、index.json.

  (3):如果在目录分析的过程中没有定位成功任何文件,则自定义模块进入下一个模块路径进行查找。如果模块路径数组都被遍历完毕,依然没有查找到目标文件,则会抛出查找失败异常。

  按照上面的思路,首先应该查找package.json文件,看看里面有没有核心模块,应该是C最先,othermodule不是核心模块,那么接着应该进入扩展名分析的步骤,就应该是查找othermodule. js,对应B,紧接着就是以index为默认文件名,也就是A,再接下来就是上一个文件目录D了,所以博主给出的答案是: C B A D

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

9、请使用原生js实现一个div可拖拽,需要考虑浏览器兼容性。

  如代码所示:

<html>
<head>
    <title>test</title>
</head>
<style type="text/css">
#drag1 {
    width: 50px;
    height: 50px;
    background-color: #404040;
    cursor: pointer;
}
</style>
<body>
    <div id = "drag1"></div>
</body>
<script type="text/javascript">
window.onload = function() {
    function Drag(obj) {
        this.obj = obj;
    }
    Drag.prototype = {
        constructor: Drag,
        getInitPosition: function(e) {
            e = e || window.event;
            var eX,eY;
            if(e.pageX || e.pageY){
                eX = e.pageX;
                eY = e.pageY;
            }
            eX = e.clientX;
            eY = e.clientY;
            var positionX = eX- this.obj.offsetLeft;
            var positionY = eY - this.obj.offsetTop;
            return {
                x: positionX,
                y: positionY
            }
        },
        getmouseCoordinate:function(e) {
            e = e || window.event;
            if(e.pageX || e.pageY){
                  return {x:e.pageX, y:e.pageY};
            }
            return {
                  x:e.clientX + document.body.scrollLeft - document.body.clientLeft,
                  y:e.clientY + document.body.scrollTop  - document.body.clientTop
             };
        },
        initDrag:function() {
            var tempThis = this;
            this.obj.onmousedown = function(e) {
                var initP = tempThis.getInitPosition();
                document.onmousemove = function(e) {
                    var moveP = tempThis.getmouseCoordinate();
                    tempThis.obj.style.marginTop = moveP.y - initP.y + "px";
                    tempThis.obj.style.marginLeft = moveP.x - initP.x + "px";
                }
                document.onmouseup = function(){
                    document.onmousemove = null;
                    document.onmouseup = null;
                }
            }
        }
    }
    var drag = document.getElementById("drag1");
    var dragElement = new Drag(drag);
    dragElement.initDrag();
}
</script>
</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 ")
}
时间: 2024-09-30 04:25:52

2015阿里校招前端笔试题的相关文章

js+html+css实现简单页面交互功能(2015知乎前端笔试题)http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html?from=y1.7-1.2

js+html+css实现简单页面交互功能(2015知乎前端笔试题) http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html?from=y1.7-1.2 密码:hellozhihu

阿里校招在线笔试题。。。感觉被虐了

1.按照CommonJS规范,在任何模块代码的作用域下内置了以下哪些变量? module context require exports 2.一下方法中哪些存在兼容性问题? spilt indexof trim Date.parse 3.下面哪些技术可用于优化 CSS 图片加载 ? ·       CSSSprite ·       SVGSprite ·       Iconfont ·       Base64 4.有一道选择题问哪些是html5的新特性. 5.从前端工程师的角度如何提高页面

2015阿里校招前端在线题目

5.淘宝首页须要实现这样一个功能.对于页面上非taobao.com域名下的链接.在用户点击时,须要在链接处弹出提示框,提示用户此链接非淘宝域名下的链接.并给与用户选择是否继续訪问.假设用户确认继续訪问,则在新窗体打开链接.请写出对应的代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <

58同城2018校招前端笔试题总结

1. 用js实现一个随机打乱数组顺序的函数,要求可以设定数组中任意1个字符的位置不变,其他位置的元素位置随机变化 思路:函数接受两个参数:第一个参数是原数组,第二个参数是指定的位置不变的元素的下标.当数组中需要比较额两个元素中,任意一个不是指定的位置不变的元素时,就可以随机交换两个元素的位置. function randomSort(arr,n){ var newarr = arr.sort(function(v1,v2){ if(arr.indexOf(v1)!==n && arr.in

2015小米校招技术类笔试题

一. 问答题 1. 大家对回文串不陌生吧?一个字符串从前看和从后看如果一样的话,就是回文串.比如"上海自来水来自海上"就是一个回文串.现在我们的问题来了,把一个数字看成字符串,问它是不是一个回文数?这么简单的题目对想要成为小米工程师的你来说肯定不是问题.不过提醒一下哦:时间复杂度和空间复杂度越低的算法,得分越高. C++: bool isPalindromeNumber(long num) Java: boolean isPalindromeNumber(long num) 示例:12

2015美团校招部分笔试题

美团笔试全部都是算法题,一共8题,前面4道想对偏简单,后面4道偏难,前面4题就不贴出来了,大部分都会,下面给出后面四题的题目. 求斜率最大值:平面上N个点,每两个点都确定一条直线,求出斜率最大的那条直线所通过的两个点(斜率不存在的情况不考虑).时间效率越高越好.已知了一个排序算法. 提示:假设有(Ax,Ay).(Bx, By)两点(不相邻)画出的直线斜率为K,则点(Cx, Cy)(在AB之间Cx > Ax, Cx < Bx)则ABC三点组成三角形(若组成不了三角形说明在一条直线上)则直线AC或

阿里2道前端笔试题+堆糖2道前端笔试题

阿里前端笔试题 1.一个表格HTML代码如下 <table id="table1"> <tbody> <tr><td>1</td><td><button>Delete</button></td></tr> <tr><td>2</td><td><button>Delete</button></

经典的阿里前端笔试题

1 请说明下面各种情况的执行结果,并注明产生对应结果的理由. function doSomething() { alert(this); } ① element.onclick = doSomething,点击element元素后. ② element.onclick = function() {doSomething()}, 点击element元素后. ③ 直接执行doSomething(). 参考答案: 1.element:调用执行时直接指向事件元素. 2.window:函数调用中的 thi

&lt;转&gt;网易2016实习生前端笔试题部分总结

网易2016实习生前端笔试题部分总结 原文地址:http://www.cnblogs.com/venoral/p/5325202.html 这只是部分题,答案为个人观点如有错误欢迎指出,感觉考点都挺基础,但是很注重考细节方面,通过整理也知道自己在CSS3和HTML5,网络知识等方面的不足还是得多学多练多思考.攒rp,希望自己在明天360笔试中能轻松答过~ css 1.多选 //HTML <p>很长的一段文字,很长的一段文字,很长的一段文字,特别长的文字</p> //CSS p{ w