前端面试题整理

1.css样式的优先级和优先级如何计算

优先级:
!important > 内联样式 > 内嵌样式或者引入的外部样式文件
内嵌样式或者引入的外部样式文件:通过权重计算优先级,权重高的优先级高。如果权重相同,按加载顺序判断,先加载的会被覆盖(就近原则)
选择器优先级:id选择器>class选择器>标签>*通用选择器>继承
权重:

  • id选择器 100
  • class选择器 10
  • 标签 1
  • 10个class选择器的权重不会大于1个id选择器

2.块级元素和行内元素的区别

  1. 块级元素会独占一行,垂直方向排列;行内元素会和其他行内元素在水平方向排列
  2. 块级元素可以设置宽高和margin、padding;行内元素不可以设置宽高。行内元素的margin和padding都是左右有效,上下无效。padding会扩大元素范围,对页面布局没有影响

补充:
1.“a不允许嵌套div”这种约束属于语义约束,与之区别的约束还有严格约束,比如“a不允许嵌套a”。
严格约束在所有的浏览器下都不被允许;而语义约束,浏览器大多会容错处理,生成的文档树可能相互不太一样(由于标准没有定义容错行为)。
2.行内块级元素:可以设置宽高,默认不换行

3.实现一个布局:header固定,content高度自适应,footer当高度不足一屏时,固定到底部,否则跟随屏幕滚动

核心:设置content的最小高度
前端面试题整理_第1张图片

补充:

  • clientWidth 水平方向 width + 左右padding
  • offsetWidth 水平方向 width + 左右padding + 左右border-width

4.js中new一个对象的过程

  1. 创建一个空对象obj
  2. 让构造函数中的this指向obj,并执行构造函数
  3. 将obj的__proto__指向构造函数的原型对象
  4. 判断构造函数的返回值类型,如果是值类型,则返回obj;如果是引用类型,则返回引用类型的对象

5.关于同步/异步的输出值
1.同步代码
2.微任务
3.宏任务
注意点:promise中resolve()/reject()后面的代码还会执行。

6.let、const、var的区别

关键点:作用域,变量提升,重复声明,初始化,window

1.let存在块级作用域
2.var存在变量提升,let,const声明的变量在声明之前不可用
3.let,const不可以重复声明变量
4.const声明的变量必须经过初始化,并且不可以被再次赋值
5.var声明的全局变量是全局对象的属性

7.const arr=[[1,2,3],4,[5,[6,[7,8]]]]
写一个函数展开数组
前端面试题整理_第2张图片

现在几分钟能写出这个函数,面试的时候脑袋空空。多练习吧~加油~

你可能感兴趣的:(前端,面试,css,javascript)