前端一面面试题

145 阅读4分钟

css

1,解决css全局污染

  • vue scoped
    Scope CSS 的本质是基于 HTML 和 CSS 属性选择器,即分别给 HTML 标签和 CSS 选择器添加 data-v-xxx;
  • react moudle.css
    模块化css文件。限定作用域。将原始类名编译成一个哈希字符串。

2,prefetch和preload 都是预加载方案

  • preload告诉浏览器这个资源是这个页面必须要的
  • prefetch 告诉浏览器这个资源是这个页面可能要的

3,回流和重绘

  • 回流 dom的变化会影响到元素的几何属性 ,浏览器需要重新渲染dom树
  • 元素的样式发生变化,但是不会影响其在文档流中的位置时,浏览器就会对元素进行重新绘制,这个过程就是重绘

4,盒子模型

  • 标准盒模型 box-sizing:content-box
  • 怪异(IE)盒模型 box-sizing:border-box

5,less和sass

6,清除浮动

  • 給父级添加高度
  • 給浮动元素最后一元素后面添加一个空元素,设置clear:both
    消除旁边的浮动元素对该元素的影响
  • 給父级设置overflow:hidden或者overflow:auto

7,position

  • releative 绝对定位
  • absolute 相对定位
  • fixed 固定定位

8,设置小于12px字体

  • chrome私有css属性-webkit-text-size-adjust:none; 字体大小就不受限制了 27版本后不支持
  • 使用css3 transform缩放属性-webkit-transform:scale(0.5);
  • 使用图片

9,flex:1哪些缩写

  • flex-grow:0
  • flex-shrink:1
  • flex-basis:auto

10,用css如何实现一个三角形

  • border

11,超出省略...

  1. 单行文本溢出:
  • overflow: hidden; // 溢出隐藏
  • text-overflow: ellipsis; // 溢出用省略号显示
  • white-space: nowrap; // 规定段落中的文本不进行换行
  1. 多行文本溢出:
  • overflow: hidden; // 溢出隐藏
  • text-overflow: ellipsis; // 溢出用省略号显示
  • display:-webkit-box; // 作为弹性伸缩盒子模型显示。
  • -webkit-box-orient:vertical; // 设置伸缩盒子的子元素排列方式:从上到下垂直排列
  • -webkit-line-clamp:3; // 显示的行数

12,实现一个宽高自适应的正方形

  1. 第一种方式
{
    width:20%;
    height:20vw
}
  1. 第二种方式
{
    width:20%;
    height:0px;
    padding-top:20%
}

13,画一条0.5px的线

  • 采用transform: scale()的方式,该方法用来定义元素的2D 缩放转换:transform: scale(0.5,0.5);
  • hr border等

14,如何解决1px问题

15,三栏布局

  • 定位
left{
    width:200px;
    height:200px;
    position:absolute
}
right{
    width:200px;
    position:absolute
    top:0;
    right:0;
    height:200px;
}
middle{
    height:200px;
    margin-left:200px;
    margin-right:200px;
    
}
  • 浮动
left{
    float:left;
    width:200px;
    height:100px
}
right{
    float:right;
    height:100px;
    width:200px
}
center{
    heigth:100px;
    margin-left:100px;
    margin-right:100px;
}
  • flex
father{
    display:flex
    height:100px
}
left{
    width:200px;
}
right{
    width:200px
}
center{
    flex:1
}

16,margin重叠问题

js

1,原型链

  • js中除了基本类型就只有对象类型,因为js没有class类的概念,所以就有了原型和原型链的概念。 每一个实例对象都有一个私有属性__proto__指向他的构造函数的原型对象prototype,该原型对象也有一个自己的原型对象proto,层层向上直到一个对象的原型对象为null

2,前端的继承方式

3,instanceOf原理

  • 判断构造函数的prototype属性是否出现在原型链中的任何位置

4,es6的新特性 Set Map方法

5,箭头函数

6,symbol

  • 私有变量,如果对象的key用symbol,则变成私有变量,无法遍历到。

7,promise

8,async await 同步的方式去写异步 async函数的返回是一个promise

9,闭包

10,垃圾回收机制

11,apply和call,bind。

12,js的加载会阻塞dom的渲染吗?怎么解决呢?async 和defer区别

13,HTML解析工作流程

14,Dom树是怎么生成的

15,深拷贝和浅拷贝

16,解决数组扁平化的方法

17, requestAnimationFrame和requestIdleCallback

18,DNS解析原理

19,现在浏览器我都是用多进程架构,你了解吗?线程和技程有什么区别

20,浏览器的缓存策略

21,前端模块化的机制

22,一般解决跨域都有哪些方案

23, common js和 es6 区别

24,前端缓存

25,一般解决跨域都有哪些方案?

26,XSS和CSRF是什么?攻击原理、攻击流程、防御策略