毕业一年妹纸 ~所有面试题目吐血整理!(持续更新)

爷,独闯天下 提交于 2020-08-14 07:29:38

一转眼已经毕业一年了这一年的工作经历真是有苦有甜,还是很坎坷的,还好所有的经验都整理了下来~ 分享给同一时期的伙伴们~ 大佬可以绕行🤣

css

  1. 盒子模型
    标准模型和怪异模型(重点在于width的计算)

  2. BFC
    1.BFC的作用

    1.清楚浮动  2.防止相邻BFC元素出现边距重叠
    复制代码

    2.BFC的触发条件

  3. 如何隐藏一个元素,只通过css方式

   1.display:none
   2.opacity:0
   3.visibility:hidden
复制代码
  1. 让一个元素水平居中(元素可能为定高或者不定高)

    <div class='parent'>
     <div class='children'></div>
    </div>
    -- 定高:--
    1.
    父级:position:relative
    子级:position:absolute;
         top:0;
         bottom:0;
         right:0;
         left:0;
         margin: 0 auto;
     2.
     父级:position:relative
     子级:position:absolute;
         top:50%;
         left:50%;
         margin-left:自身宽的一半;
         margin-top:自身高的一半;
     -- 不定高 --
    1.absolute + transform
    2.flex
    3.table
         display: table-cell;
         vertical-align: middle;
         text-align: center;
    复制代码
  2. 选择器优先级(选择器从右向左解析)

 !important > style > id > class > tag > * > 继承 > 默认
复制代码
  1. 浮动/如何清除浮动
    浮动缺点: 容易造成父容器高度坍塌
    解决办法:

    1.伪元素清除浮动
    :after {
        height:0;
        clear:both;
        content:'';
        display:block
    }
    2.父级设置overflow:hidden
    3.创建BFC
    复制代码
  2. css3新特性 多注意一下动画,canvas和svg的用法和区别

  3. 怎么实现单行文本溢出显示省略和多行文本省略

js

  1. js基本类型(要以MDN为标准)
    string、number、boolean、object、symbol、null、undefined
    复制代码

  2. 原型链(必考!重点中的重点!)
    原型链部分过多,改天我会单独写一份,网上也有很多大佬们优秀的总结,一句话,看懂这个图, 就说明你吃透了原型链

  1. 闭包(!必考重点!)
    闭包是指有权访问另外一个函数作用域中的变量函数
    MDN:致那些可以访问自由变量的函数(自由变量就为你访问的那个参数)
    特性:


    1.闭包可以访问当前函数以外的变量
    2.及时外部函数已经返回,闭包仍能访问外部函数定义的变量
    3.闭包可以更新外部变量的值
    复制代码

    闭包之所以能访问外部变量,是因为函数在创建的时候,基本类型变量都储存在堆当中,而不是栈

  2. script标签属性
    defer 异步加载,元素解析完成后执行
    async 异步加载,但执行时会阻塞元素渲染

  3. 深浅拷贝
    1.浅拷贝和深拷贝区别
    2.如何实现一个深拷贝


  4. new操作符做了什么
    参考我之前写过的文章如何实现一个new

  5. instanceof 和 Array.isArray 是如何实现的
    instanceof

    能在实例的原型对象链中找到改构造函数的prototype属性所指向的原型对象,返回true
    instance.[_proto_] === instance.constructor.prototype
    复制代码

    Array.isArray

    通过Object.prototype.toString.call()
    复制代码
  6. 防抖和节流实现方法(很多公司要求手写代码)

  7. 继承 我用的最多的就是类和原型继承,还有很多种类的继承,多说多加分!

  8. Es6/ES7

    1.const/let/var区别

    const/let之所以会出现暂时性死区,是因为执行上下文创建的时候,
    const、letc创建在词法环境内,未被初始化
    var创建在变量环境内,初始化为undefined

    const常用来声明常量,并且一旦定义不能被改变

    const声明引用类型时,是不能改变当前引用类型的地址,值是可以改变的 eg:

       const arr = ['12','3'];
       arr.push('44');
       console.log(arr)    //['12','3','44'] 无报错
    复制代码

    2.set/Map用法

    3.promise的状态和实现原理

    4.async/awit的实现原理
    自动执行器+gengerator

    5.generator异步函数实现
    generator使用和原理

    5.箭头函数
    1.特性 2.和普通函数区别

  9. url在地址栏输入到展示的过程

    1.DNS解析
      DNS查找
       1.本地DNS之间的查找  递归
       2.本地DNS与根域子域之间的查找 迭代查询
       
    2.Tcp三次握手
    
    3.Tcp四次挥手
    
    4.浏览器渲染
      1.构建DOM树
       (转码)     Html二进制数据  ---> Html字符串
       (Tokens化) Html字符串 ---> Tokens结构,每个Token都特殊的含义和规则
       (构建Nodes) Nodes节点和属性
       (都贱DOM树)
      2.样式计算
       css -->stylesheet
      3.页面布局
      4.生成分层树
        z-index,2d,3d....
      5.栅格化
       图块 ---->位图
    复制代码
  10. 执行上下文
    1.全局执行上下文 只有一个对象,windows对象
    2.函数执行上下文 无数个,函数被调用时就会创建
    3.Eval函数上下文 运用在eval函数中的代码


  11. 执行上下文创建过程
    1.确定this的值
    2.词法环境 组件创建
    3.变量环境 组件创建



  12. 垃圾回收方法
    1.引用计数法
    看一个对象是否有指向她的引用 ---> 循环引用判断不出来(缺点)


    2.标记清除(常用)
    不在使用的对象叫做[无法到达对象]。
    从JS对象全局出发,定时扫描内存中对象,凡是可以到达的,保留。无法到达的回收。

  13. null和undefined的区别和本质内存区别

     null表示‘无’,转为数值是0,空指针对象
     给全局变量赋值null,相当于将这个变量的指针对象和值清空。
     如果给对象属性和局部变量赋值null,给这个属性分配了空的内存,值为null
     > JS会回收值为null的对象
    复制代码
     undefined表示‘无的初始值’,变为数值为NaN
     给全局变量赋值undefined,相当于将这个值清空,但是对象仍旧存在。
     如果给对象属性和局部变量赋值undefined,说明这个值是空值。
    复制代码
  14. 常见的内存泄露
    1.全局变量

    未定义的变量会在全局创建一个新变量
    解决办法:用完指向null,减少全局变量使用
    2.闭包
    3.定时器
    4.脱离DOM引用



  15. call/apply/bind的区别和怎么实现它们

  16. let/const声明的变量在windows上面吗?为什么?

  17. 前端路由都是怎么实现的

  18. 怎么样实现一个indexOf方法

  19. webpack打包原理 webpack一般都是随机问的,loader和plugin问的多一些,可以多看一下

Http

  1. http报文结构
    起始行 + 头部 + 空行(区分头部和实体)+ 实体

  2. Get和post区别

  3. http状态码

  4. http1.0/http1.1/http2.0区别

  5. 定长和不定长数据http是如何设置的

    content-length
    transfer-encoding:chunked

  6. http怎么处理大文件传输的

    accept-ranges

  7. http1.1如何结局对头阻塞的
    1.并发连接 (chrome可以并发6个) 2.域名分片

  8. 说一下cookie和怎么预防xss和CSRF攻击

  9. http缓存

  10. 说下http代理

  11. http2.0是如何实现多路复用的

  12. websocket和http/tcp有什么关系

Vue

  1. 虚拟DOM实现原理

  2. vue的computed是怎么实现的

  3. 谈谈nexttrick的原理

  4. 知道vue3.0嘛,谈谈object.prototype和proxy

  5. vue和react的区别是什么

  6. 说说keep-alive的用处,如果缓存很多是如何处理的

React

  1. 类组件和函数组件的区别
    类:有生命周期,可使用其他特性,如state,有自己的this
    函数:接受props渲染,是无状态组件,无生命周期,无this

  2. 高阶组件 高阶组件是接受一个组件并返回一个新组件的函数(具体见官网介绍)

  3. 类和函数的区别

 class是function.prototype的语法糖
 类实质就是一个函数。类本身的指向就是构造函数
复制代码
  1. constructor和super
    constructor方法是类的构造函数的默认方法。通过new生成对象实例时,自动调用该方法。
    constructor中定义的属性为实例属性(this对象上) constructor外声明的属性都是定义在原型上面,可以称为原型属性(class上) 调用super()对父类进行初始化 这个两种调用和不调用的区别:


    1、如果不需要 在 constructor里面使用 this.props ,是可以不用给super传props的
    2、如果不要在constructor写逻辑,仅仅是写一个super(props),实际上整个constructor都没有写的必要
    复制代码
  2. 生命周期(新的旧的对比)

  3. this.setState更新机制
    众所周知,setState不会立即更新,会把要更新的state放到[队列机制]里面,不会立即更新 之后会判断是否处于batchUpdate状态, true -> 保存到dityComponents里面 false ->遍历所有的dityComponents调用updateComponent进行更新

  4. React fiber 实现原理

  5. React diff算法是如何优化的,o(n3)和o(n)是如何计算出来的

  6. React路由懒加载和实现原理

    就是在问react-loadable的实现原理

  7. jsx是如何转化为浏览器可识别的js的

    官网很清晰babel过程

  8. redux实现方式

  9. redux-saga作用是什么

    处理redux的副作用

  10. React为什么把reducer设置成纯函数

总结

最后一大块就是leetcode上面的算法题了,面得大厂的算法题基本都是从这个上面出的,刷题必不可少!加油吧~ 🤘

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!