前端面试基础整理

  1. 行内元素与块级元素的区别
    行内元素设置width、height无效,margin、padding仅左右有效,上下无效。
  2. 前端的三层结构
    结构层html,表示层css,行为层js
  3. CSS的引入方式,区别是什么
    link和@import
  • 从属关系:link是HTML提供的标签,@import是CSS提供的语法规则
  • 加载顺序:link在页面加载过程中会和内容同时加载出来,@import引入会在页面加载完成后才被加载。
  • 需要js控制DOM改变演示时只能使用link,DOM不能控制@import
  • link无兼容性问题,@import只在IE5以上才能识别
  • link样式权重高于@import
  1. CSS选择器有哪些
    id选择器( # myid)
    类选择器(.myclassname)
    标签选择器(div, h1, p)
    相邻选择器(h1 + p)
    子选择器(ul > li)
    后代选择器(li a)
    通配符选择器( * )
    属性选择器
    伪类选择器
  2. display:none和visibility:hidden的区别
    display:none隐藏对应元素,在文档布局中不给它分配空间,相当于不存在
    visibility:hidden隐藏对应元素,但在文档布局中仍保留原来的空间
  3. position的absolute与fixed共同点与不同点
    共同点:改变行内元素的呈现方式,让元素脱离普通流,不占据空间
    不同点:absolute是根元素可以设置的,fixed的根元素固定为浏览器窗口
  4. 显示
    block:像块类型元素一样显示
    inline:像行内元素一样显示
    inline-block:像行内元素一样显示,但内容像块类元素一样显示
    list-item:像块类元素一样显示,并添加样式列表标记
  5. absolute、fixed、relative、static
    absolute:绝对定位,相对static以外的第一个祖先元素
    fixed:绝对定位,相对浏览器窗口
    relative:相对定位,相对普通流中 的位置
    static:默认值,没有定位,处于正常流中
  6. CSS3中的新特性
    圆角border-radius
    阴影box-shadow
    文字阴影text-shadow
    线性渐变gradient
    旋转transform
  7. 清除浮动技巧
  • 使用空标签定义css clear:both;缺点添加了无意义的标签
  • overflow:hidden;
  1. 减少页面加载时间的方法
    压缩CSS、JS文件
    优化图片
    图片格式选择
    优化CSS
    标明宽高
    减少http请求
    减少DOM操作
  2. undefined和null的区别
    undefined表示无,null表示尚未存在
  • 变量声明未赋值为undefined
  • 调用函数,函数参数未提供为undefined
  • 函数没返回值,默认返回undefined
  • null系统会回收,可用于释放内存
  1. 优雅降级和渐进增强
    优雅降级:最开始针对新式浏览器进行完整功能构建,再对低版本浏览器进行兼容。
    渐进增强:针对低版本浏览器进行构建,逐步添加新式浏览器才支持的功能,当浏览器支持时自动呈现并发挥作用。
  2. 下面三条语句的区别
    function show(){}
    var show=function(){}
    var show=new Function()
    函数,函数表达式,函数对象
  3. JS输出数据的方式
    使用 window.alert() 弹出警告框
    使用 document.write() 方法将内容写到 HTML 文档中
    使用 innerHTML 写入到 HTML 元素
    使用 console.log() 写入到浏览器的控制台
  4. 下面的代码输出什么
var y = 1;
if (function f(){}) {
    y += typeof f;
}
console.log(y);//1undefined
var k = 1;
if (1) {
    eval(function f(){});
    k += typeof f;
}
console.log(k); //1undefined
var k = 1;
if (1) {
    function f(){};
    k += typeof f;
}
console.log(k); //1function
  1. JavaScript 中 undefined 和 not defined 的区别
    未声明的变量直接使用会抛出异常var name is not defined,如果没有异常处理,代码就会停止运行。
    但是使用typeof并不会产生异常,会直接返回 undefined。
var x;// 声明 x
console.log(x); //undefined 
console.log(typeof y); //undefined
console.log(z); //抛出异常:ReferenceError: z is not defined
  1. JavaScript怎么清空数组
var arr=['a','b','c']
//方法1
arr=[]
//方法2
arr.length = 0;
//方法3
arr.splice(0,arr.length)
  1. 判断一个object是否是数组(array)
    方法1:使用 Object.prototype.toString精确判断对象类型
function isArray(obj){
    return Object.prototype.toString.call( obj ) === '[object Array]';
}
console.log(Object.prototype.toString.call(123)) //[object Number]
console.log(Object.prototype.toString.call('123')) //[object String]
console.log(Object.prototype.toString.call(undefined)) //[object Undefined]
console.log(Object.prototype.toString.call(true)) //[object Boolean]
console.log(Object.prototype.toString.call({})) //[object Object]
console.log(Object.prototype.toString.call([])) //[object Array]
console.log(Object.prototype.toString.call(function(){})) //[object Function]

方法2:使用原型链

function isArray(obj){
    return obj.__proto__ === Array.prototype;
}
  1. JavaScript中如何检测一个变量是否是String类型
typeof(obj) === "string"
typeof obj === "string"
obj.constructor === String

21.列举ES6的新特性

  • 类的支持,引入class关键字
  • 字符串模板``
  • 解构
  • 默认参数,不定参数,拓展参数
  • let关键字
  • for of
  1. 不同浏览器的兼容性区别
    1.标签默认外边界和内填充不同
    解决办法:margin:0;padding:0;
    2.块属性float+横向margin在IE6中margin显示比设置的大
    解决办法:display:inline;
    3.标签高度设置较小(<10px)在IE6、7中高度显示比设置的大
    解决办法:overflow:hidden;或者设置line-height 4.多个图片标签设置在一起,某些浏览器默认有间距
    解决办法:为图片使用float
    5.火狐不支持hand,ie支持pointer
    解决办法:统一使用cursor:pointer;
    6.small字体大小不同
    解决办法:使用指定的字体大小
  2. JavaScript数组反转
var arr = [5,1,4,7,2];
console.log(arr.reverse())//[ 2, 7, 4, 1, 5 ]
  1. JavaScript数组的排序
var arr = [5,1,4,7,2];
console.log(arr.sort())//[ 1, 2, 4, 5, 7 ]
var arr = [5,1,4,7,2];
console.log(arr.sort().reverse())//[ 7, 5, 4, 2, 1 ]
  1. JavaScript的基本类型
    字符串、数字、布尔、数组、对象、Null、Undefined
  2. let和const的区别
  • 都只在声明所在的块级作用域内有效
  • let声明的变量可以改变值/类型等,const声明的变量不可改变值,const声明同时必须初始化
  1. relative、absolute、fixed 定位原点
  • absolute:相对不是static的 第一个父元素
  • relative:相对其正常位置
  • fixed :相对浏览器窗口

你可能感兴趣的:(前端面试基础整理)