2014年3月31日晚,我怀着略微忐忑的心情(第一次在线笔试^_^!!)进行了笔试,阿里巴巴的笔试题共有10道,几乎包含了Web前端开发的各个方面,有程序题、有叙述题,时间非常紧张,只完成了大概6道题。下面把遇到的题目跟大家分享一下!
1、
<!doctype html> <html> <head> <style type="text/css"> div:not(.outer) p { color: purple; } div.outer p { color: orange; } </style> </head> <body> <div class="outer"> <p> 我是 outer 里面的字 </p> <div class="inner"> <p> 我是 inner 里面的字 </p> </div> </div> </body> </html>
问:为什么以上两个<p> 标签中的文字颜色都是橙色的?
2、请实现一个Event类,继承自此类的对象都会拥有两个方法on和trigger,类声明如下,请写出完整代码:
function Event() {} Event.prototype.on = function(eventName, callback) { //注册事件监听 } Event.prototype.trigger = function(eventName, data) { //触发事件 }
3、
要求实现一个多行文本输入框,固定宽度。可根据用户输入的内容多少进行高度自适应变化。如,用户输入了1行文字,则输入框显示为1行,而有2行文字,就显示2行。如微博的评论回复。
4、
编写一个JavasSript函数,给定一个DOM节点node和一个正整数n,返回node的所有第n代后代节点(直接子节点为第1代)
function getDescendants(node, n) { // return an Array }
5、有2个int型已经去重的数组a和b,都是已经从小到大排序好的。要求遍历b数组的数字,如果这个数字出现在a中,就将其从a删去;反之将其插入到a的适当位置,使a保持排序状态。
6、请描述一下从用户输入网址开始,到网页最后呈现出来的全过程,越详细越好,包括各种事件等。
if (window.addEventListener) {? var addListener = function (el, type, listener, useCapture) {? el.addEventListener(type, listener, useCapture); }; } else if (document.all) { addListener = function (el, type, listener) { el.attachEvent("on" + type, function () { listener.apply(el); }); }; }
9、你最近看的前端相关技术书是什么?常关注的博客是哪些?你觉着哪个网站的交互做的好,为什么?
10、阅读如下代码:
问:1、为什么最终小狗叫了200声汪?请详细说明为什么。2、修改代码setTimeout部分代码,实现每隔1秒调用i(从1到10递增)次dog()。var dog = function () { return ‘汪‘; }; var cat = function () { return ‘喵‘; }; (function () { if (cat() === ‘喵喵‘) { dog = function () { return ‘汪汪‘; } } function cat() { return ‘喵喵‘; } })(); for (var i = 0; i < 10; i++) { setTimeout(function () { for (var j = 1; j <= i; j++) { console.log(dog()); } }, 1000 * i); }