前端面试题2021

html

  • 浏览器渲染过程
    ①解析html文件生成DOM树
    ②处理css标记生成CSSOM树
    ③DOM树和CSSOM合并生成渲染树
    ④布局渲染树
    ⑤绘制在屏幕上
  • 输入网址、按下回车,这个过程发生了什么
    ①域名解析
    ②发起TCP三次握手
    ③建立TCP连接后发起http请求
    ④服务器端响应http请求,浏览器得到html代码
    ⑤解析html代码,并请求html代码中的资源
    ⑥对页面进行渲染呈现给用户
  • http 和 https的区别
    http:默认端口号80;超文本传输协议;协议以明文的方式发送;不加密
    https: 默认端口号是443;是建构在ssl/tls之上的http协议;需要申请CA证书
  • TCP三次握手
    ①客户端向服务发送SYN包,客户端进入SYN_SEND状态
    ②服务器收到客户端的SYN包并确认,同时向客户端发送一个SYN包,服务器进入SYN_RECV状态
    ③客户端收到SYN_ACK包,向服务器发送确认包ACK,客户端和服务器进入ESTABLISHED状态
  • cookie、localStorage和sessionStorage的区别
    cookie: 大小不能超过4k
    localStorage 和 sessionStorage 大小可以达到5M或者更大
    localStorage:长期存储,浏览器关闭数据不会丢失,除非手动清除
    sessionStorage: 临时存储,会话结束自动回收
  • http 状态码
    ①1XX:信息状态码
    ②2XX:请求成功
    ③3XX:重定向
    ④4XX:请求失败
    ⑤5XX:服务器错误
  • 浏览器兼容
    ①:css中添加通配符*
    ②:使用float为img布局,解决图片默认边距

css

  • 盒模型
    ① W3C标准盒模型 = content
    ② IE盒模型 = content + border + padding
  • 清除浮动的方法
    ①clear:both; ②父级div定义伪类:after和zoom
    ③ class = ‘clear’ ④ overflow: hidden;
  • 水平居中的方法
    ①margin:0 auto; ②text-align:center; ③flex布局
  • 垂直居中的方法
    ①position+transform ②flex布局 ③line-height:height;
    ④display:table-cell;
  • rem和em的区别
    rem是根据根元素的字体大小进行适配
    em是根据父元素的字体大小进行适配

js

  • 面向对象
    基本特征:封装、继承、多态
  • 闭包
    函数可以访问另一个函数作用域中的变量,始终保持在内存中
    优点:不会清除,避免全局污染
    缺点:增大内存使用,内存溢出
  • 原型链
    每个被实例对象都有一个_proto_对象,它指向了构造该对象的构造函数的prototype属性,同时该对象可以通过_proto_对象来寻找不属于自身的属性
  • new操作符具体步骤
    ①创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型
    ②属性和方法被加入到this引用的对象中
    ③新创建的对象由this引用,最后返回this
  • Ajax
    ①创建一个xmlHttpRequest对象
    ②设置回调函数
    ③配置请求信息,使用open方法与服务器建立连接,get请求参数在url之后,post方式发送数据需要设置请求头
    ④向服务器发送数据
    ⑤在回调函数中对不同的响应状态进行处理

jQuery

  • jQuery选择器
    id选择器 类名选择器 标签选择器

Vue

  • MVVM
    view 和model 通过viewmodel进行通信
  • Vue的优点
    轻量级框架,大小只有几十kb,双向数据绑定操作更加简单,组件化开发,运行速度更快
  • Vue响应式原理
    采用数据劫持和发布者–订阅者模式的方式,通过Object.defineProperty劫持各个属性的getter/setter方法,在数据变动时发布消息给订阅者,触发相应的监听回调
  • Vue组件之间的传值
    ① 父组件向子组件:props
    ②子组件向父组件:$emit
    ③eventbus
    ④vuex
    ⑤缓存机制
  • Vue中的data为何是个函数
    组件被服用的时候数据相互隔离互不影响
  • Vue生命周期
    beforeCreate, created, beforeMount, mounted,
    beforeUpdate, updatad, beforeDistory, distoryed
  • created 和 mounted 的区别
    created: 在模板渲染成html或者模板编译路由前调用
    mounted: 已完成模板,已经渲染或el对应html渲染后调用
  • computed 和 watch 的区别
    computed: 当一个属性收到多个属性影响时
    watch: 当一条数据影响多条数据时
  • v-if 和 v-show 的区别
    v-if控制DOM元素的增加或删除(适用于运行时条件很少改变的情况)
    v-show控制DOM元素的display样式(切换比较频繁时使用)
  • get 和 post 的区别
    get的传参方式是通过地址栏url传递,可以看到参数;post参数不可见
    get传参长度有限制,2048个字符之内;post传参没有限制;
    get会被缓存,post不会被缓存;
    get只能进行url编码,post支持多种编码方式
  • n e x t T i c k 的 使 用 使 用 nextTick的使用 使用 nextTick的使用使用nextTick这个回调,让修改后的data值渲染更新到dom元素之后在获取

v-router

上一篇:TCP的三次握手与四次挥手理解及面试题


下一篇:计算机网络杂谈