@yacent
2016-07-22T01:48:59.000000Z
字数 1667
阅读 1063
面试题目
HTML & CSS
src与href的区别
href: 指向网络资源的位置,建立当前元素或当前文档之间的连接,主要用于超链接
src: 指向外部资源文件,指向的内容将会嵌入当前标签所在的位置
主要的区别就是!src会将请求的文件 引入 到当前文档当中,而href只是 引用
css hack
分为 条件hack、属性级hack和选择器hack,eg:
// 1、条件Hack<!--[if IE]><style>.test{color:red;}</style><![endif]-->// 2、属性Hack.test{color:#0909; /* For IE8+ */*color:#f00; /* For IE7 and earlier */_color:#ff0; /* For IE6 and earlier */}// 3、选择符Hack* html .test{color:#090;} /* For IE6 and earlier */* + html .test{color:#ff0;} /* For IE7 */
浏览器内核
IE: trident内核
Firefox:gecko内核
Safari:webkit内核
Opera:以前是presto内核,Opera现已改用Google Chrome的Blink内核
Chrome:Blink(基于webkit,Google与Opera Software共同开发)
JavaScript
实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制
function deepClone(obj) {var o;switch(typeof obj) {case 'undefined':break;case 'number':o = +obj;break;case 'string':o = obj + '';break;case 'boolean':o = obj;break;// object 需要判断 array 还是 Obejct, 并且要判断case 'object':if (Object.prototype.toString.call(obj) === '[object Array]') {o = [];for (var i = 0, l = obj.length; i < l; i++) {o.push(deepClone(obj[i]));}} else {o = {};for (var k in obj) {o[k] = deepClone(obj[k]);}}break;default:o = obj;break;}return o;}
在Javascript中什么是伪数组?如何将伪数组转化为标准数组
伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法来遍历它们。典型的是函数的argument参数,还有像调用getElementsByTagName,document.childNodes之类的,它们都返回NodeList对象都属于伪数组。可以使用 `Array.prototype.slice.call(fakeArray)` 将数组转化为真正的Array对象
手写数组快速排序
function quickSort(arr) {if (Object.prototype.toString.call(arr) != '[object Array]') {return;} else {if (arr.length <= 1) {return arr;}var middle = Math.floor(arr.length / 2);var pivot = arr.splice(middle, 1)[0];var left = [];var right = [];for (var i = 0; i < arr.length; i++) {if (arr[i] < pivot) {left.push(arr[i]);} else {right.push(arr[i]);}}return quickSort(left).concat([pivot], quickSort(right));}}