美文网首页
面试题集六

面试题集六

作者: 月半女那 | 来源:发表于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