[关闭]
@yacent 2016-07-22T09:48:59.000000Z 字数 1667 阅读 911

面试题目归纳

面试题目


HTML & CSS

src与href的区别

href: 指向网络资源的位置,建立当前元素或当前文档之间的连接,主要用于超链接
src: 指向外部资源文件,指向的内容将会嵌入当前标签所在的位置
主要的区别就是!src会将请求的文件 引入 到当前文档当中,而href只是 引用

css hack
分为 条件hack、属性级hack和选择器hack,eg:

  1. // 1、条件Hack
  2. <!--[if IE]>
  3. <style>
  4. .test{color:red;}
  5. </style>
  6. <![endif]-->
  7. // 2、属性Hack
  8. .test{
  9. color:#0909; /* For IE8+ */
  10. *color:#f00; /* For IE7 and earlier */
  11. _color:#ff0; /* For IE6 and earlier */
  12. }
  13. // 3、选择符Hack
  14. * html .test{color:#090;} /* For IE6 and earlier */
  15. * + 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)进行值复制

  1. function deepClone(obj) {
  2. var o;
  3. switch(typeof obj) {
  4. case 'undefined':
  5. break;
  6. case 'number':
  7. o = +obj;
  8. break;
  9. case 'string':
  10. o = obj + '';
  11. break;
  12. case 'boolean':
  13. o = obj;
  14. break;
  15. // object 需要判断 array 还是 Obejct, 并且要判断
  16. case 'object':
  17. if (Object.prototype.toString.call(obj) === '[object Array]') {
  18. o = [];
  19. for (var i = 0, l = obj.length; i < l; i++) {
  20. o.push(deepClone(obj[i]));
  21. }
  22. } else {
  23. o = {};
  24. for (var k in obj) {
  25. o[k] = deepClone(obj[k]);
  26. }
  27. }
  28. break;
  29. default:
  30. o = obj;
  31. break;
  32. }
  33. return o;
  34. }

在Javascript中什么是伪数组?如何将伪数组转化为标准数组

伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法来遍历它们。典型的是函数的argument参数,还有像调用getElementsByTagName,document.childNodes之类的,它们都返回NodeList对象都属于伪数组。可以使用 `Array.prototype.slice.call(fakeArray)` 将数组转化为真正的Array对象

手写数组快速排序

  1. function quickSort(arr) {
  2. if (Object.prototype.toString.call(arr) != '[object Array]') {
  3. return;
  4. } else {
  5. if (arr.length <= 1) {
  6. return arr;
  7. }
  8. var middle = Math.floor(arr.length / 2);
  9. var pivot = arr.splice(middle, 1)[0];
  10. var left = [];
  11. var right = [];
  12. for (var i = 0; i < arr.length; i++) {
  13. if (arr[i] < pivot) {
  14. left.push(arr[i]);
  15. } else {
  16. right.push(arr[i]);
  17. }
  18. }
  19. return quickSort(left).concat([pivot], quickSort(right));
  20. }
  21. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注