@yacent
2016-07-22T09:48:59.000000Z
字数 1667
阅读 911
面试题目
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));
}
}