美文网首页
面试题集六

面试题集六

作者: 月半女那 | 来源:发表于2019-11-28 00:00 被阅读0次

    typescript是js类型的超集

    1. interface定义:

    在面向对象语言中,interface是对行为的抽象,具体实现则是由class去实现(implements),在ts中接口的作用类型检查

    2. object.defineProperty与proxy的区别

    • proxy直接劫持整个对象返回一个新对象可以直接监听数组变化,我们可以只操作新的对象达到目的,而object.defineProperty只能便利对象属性直接修改
    • proxy缺点:浏览器兼容问题使用polyfill无法适配,
    • object.defineProperty无法简体数组变化,vue2对数组的push/pop/shift/unshift/splice/sort/reverse进行hock,其他的数组方法时无法识别的

    3. angular2的双向绑定原理

    脏值检查(存储所有变量的值,每当变量发生变化的时候需要检测,将旧值和新值进行比较,不相等则更新对应的视图)
    在ng2+中优势:

    • 单向数据流只会从父->子
    • 以组件为单位维度单独检测
    • 生产环境只进行一次检查
    • 可自定义的变化检测策略: Default 和 onPush

    4. cookie

    cookie在浏览器中,可以在下次访问的时候附带它发送给服务器,服务器可以通过识别cookies来判断是哪个用户,然后判断用户是否登录,然后返回对应的想要一般每条cookie的长度不超过4kb,每个domain下最多20条,cookie弥补了HTTP协议的无状态

    5. resetful api

    用url定位资源,用http method描述操作

    1. 原则:
      协议 / 域名 / 版本 / 路径 (使用名词不可以使用动词)
      / HTTP {(GET / POST (新建一个资源 ) / PUT (修改整个资源)/ PATCH (修改单个属性) / DELECT / OPTIONS (获取信息)) }
      / 过滤信息 (api提供参数,过滤返回结果,例如排序,分页,选择 ?pageNumber=2&perSize=100)
      / 状态码 (204: no content ;403 : forbidden ; 404 : not found ; 500:服务器内部错误 ; 406 Not caaeptable )
      / 错误处理
      / 返回结果
      / 使用HATEOAS的Hypermedia api
      / 认证

    6. 序列化和反序列化

    • node 使用自带的json.stringfy 和json.parse;
      querystring 自带模块 querystring.stringfy / querystring.parse
    • node 优点:单线程 / v8虚拟机 / 非阻塞IO / 事件驱动 / RESTful API

    7. promise / async await

    1. promise
    • reject后,一定会进入到then中的第二个回调,如果then中没有写第二个回调,则进入catch
     var p1=new Promise((resolve,rej) => {
        console.log('没有resolve')
        //throw new Error('手动返回错误')
        rej('失败了')
    
     })
    
     p1.then(data =>{
        console.log('data::',data);
     },err=> {
        console.log('err::',err)
     }).catch(
        res => {
        console.log('catch data::', res)
     })
    
    // 没有resolve
    // err:: 失败了
    
     p1.then(data =>{
        console.log('data::',data);
     }).catch(
        res => {
        console.log('catch data::', res)
     })
    // 没有resolve
    // catch data::失败了
    
    • resolve的东西以但进入then的第一个回调,一定不会进入catch
    • promise 无法捕捉一部一场异步异常需要手动调用reject才会被.catch捕捉到
    1. async await
      async await 让异步代码开起来表现起来像同步代码
      await 是让出线程的标志,

    8. class 中的super

    • this关键字指向当前对象,而es6中的super指向当前对象的原型对象,

    • super在普通方法中指向父类的原型对象,在静态方法中,指向父类

    • 通过super调用父类的方法时,super会绑定子类的this

    • 在普通方法中,指向父类的原型对象,在静态方法中,指向父类。

    • super 作为函数调用时,代表父类的构造函数,es6中,要求子类的构造函数必须执行一次super()函数。子类调用super继承父类的this对象然后再用子类的构造函数对this进行加工。作为函数时,super()只能在子类的构造函数中使用。
      https://www.cnblogs.com/wenxuehai/p/10361653.html
      https://blog.csdn.net/a419419/article/details/82772412

    • es6中constructor时用来创建和初始化class类创建的对象的特殊方法。

    9. 箭头函数什么情况下不能用

    1. 定义对象方法
      1.1. 定义字面量方法的时候,由于箭头函数中this永远指向window
      1.2. 定义原型方法的时候,箭头函数会导致运行时执行上下文错误
    2. 定义事件回调
    3. 定义构造函数
      https://www.cnblogs.com/huyanluanyu/p/9958676.html

    10. 闭包

    • 定义在一个函数内部的函数,本质是将函数内部和函数外部连接起来的一座桥梁
    • 作用:可以读取函数内部的变量,让这些值始终保持在内存里;父函数将仔函数作为返回值,再将子涵赋值给一个变量,所以子函数会存在于内存中,而子函数依赖于父函数存在,所以父函数也会存在于内存中,这样就不会被垃圾回收机制回收
    • 缺点:由于函数中的变量会被保存在内存中,内存消耗很大,所以如果滥用,会造成网页性能问题,导致内存泄漏,解决方案:在推出函数之祈安,把不使用的局部变量删除

    相关文章

      网友评论

          本文标题:面试题集六

          本文链接:https://www.haomeiwen.com/subject/whucwctx.html