面试进阶

公司目前的组织架构、项目组成、技术方向、客户群体

es6; css3; 闭包;原型链;事件委派;作用域;作用域链

面试

  • axios(请求机制)

    是基于promise,用于浏览器和node.js的一个http客户端

    主要用于向后台发起请求,在请求中做更多的控制

    支持promise、提供一些并发的方法、提供拦截器、支持csrf(跨站请求伪造)

  • axios、fetch、ajax的区别

    前两者支持promise、后面是使用的callback方式

    fetch、本质上脱离xhr、、默认不传cookie、不能监听请求的进度。

  • vuex(并发上来看适不适合)

    一个专门为vue构建的状态集管理(目的:解耦,集中式管理)

    • 主要是解决组件间状态共享的问题,原本是组件与组件之间的交流,转变为组件与仓库之间的交流

    方便调用一些共用的数据、方便日后的维护、数据流更加清晰、代码更方便管理

    vuex的核心

    state、存放数据

    mutations、变更状态

    getters、相当于computed

    actions、动作-----mutations

    modules、对仓库拆分,方便对数据取(state中数据越存越多,进行拆分)

    弹窗为form表单,关闭再打开保持状态(使用vuex)

  • computed:在vue中动态渲染的一个函数
  • v-show:给dom对象添加display:none;

    v-if:将dom对象移除

    v-model:表单的数据双向绑定

    • 等同于 v-bind绑定了一个value的属性, 用v-on把当前的元素绑定到了一个事件上
  • 路由

    全局的钩子函数

    beforeEach:在路由切换开始时调用

    afterEach:在路由切换离开时调用

    局部到单个路由

    beforeEnter

    组件的钩子函数

    beforeRouterEnter

    beforeRouterUpdate

    beforeRouterLeave

  • 关于vue

    vue是由饿了么团队开发并维护的一个渐进式js框架

    使用了mvvm框架,数据驱动、双向绑定、组件

  • vue生命周期
  • vue组件封装

    目的:复用性高,便于解耦

    1.采用ES6的import ... from ...语法或CommonJS的require()方法引入组件
    2.对组件进行注册,代码如下

    // 注册
    Vue.component('my-component', {
      template: '
    A custom component!
    ' })

    3.使用组件

    • 制作组件时,组件为中data为函数形象,主要是防止组件与组件之间的变量互相影响。
  • nextTick 解决dom异步操作,解决数据异步加载、后置型,初始化数据先执行

  • 路由懒加载 延迟加载、按需加载

    return ()=> import(`@/components/${view}.vue`)
    
    
    
    
    
  • vue-loader:

    加载器、把vue组件转化为javaScript模块

    • 动态渲染一些数据
    • 三个标签都做了相对应优化,style可以直接使用es6、style也可以默认使用sass、提供了作用域的选择
    • 开发阶段,提供热加载(实时更新)
  • 插槽(slot)占位的(公交车占位),使组件的复用性更高

    默认插槽(匿名)

    具名插槽

    作用域插槽(slot-scope)只作用于当前的solt

    • 借助组件来实现,封装好的组件中加一个slot标签,在使用它的组件中标签对内添加内容
    • 匿名只能添加一个,具名可以添加多个(可以添加名称,name属性),顺序问题
    • 提供组件复用,提高效率
  • 虚拟dom以js对象形式出现

    真实dom以dom树的形式出现

    优化了diff算法

    更适合批量的修改dom,

    设置key,可以最大程度的去利用节点

    • 不设置key值,没有复用,再次重新追加
    • 可以进行相关复用,减少消耗,对应索引

    采用了新旧dom的对比,比较节点,获取你差异的dom,一次性更新到你真实的dom上

  • mvvm

    MVC模式 m(模型) v(视图) c(控制器) 反馈不及时

    MVVM模式 数据双向绑定 (三层)

    view视图 model 数据, view与model与viewmodel都是双向的,而model与view之间没有任何关系,通过viewmodel中间这个媒介来进行相关的交互,以至于view与model可以更专注于做自己事情。

    vue是专注于vue与viewmodel的框架,对应model的处理比较弱化,不过提出一个vuex来进行补充增强

  • keep-alive(保持我活着)

    让不活动的组件活着

    提供了include与exclude 两个属性 ,允许组件有条件的缓存

    在生命周期created的时候,把需要缓存的node节点给保持到cache,需要的时候,在render中,根据name再进行取出来

    vue中路由meta,meta中可以设置一些状态(路由元信息

  • 节流和防抖都是减少触发频率
    节流:固定的单位时间内就能触发一次(不执行下一个事件)
    防抖:固定的时间内反复触发,触发多次,只有最后一次生效。(删除前一个事件)

    滚动条滚动
    搜索框输入(快慢的搜索)

  • node常用的模块

    path:处理文件路径模块

    fs:操作文件系统

    http:提供http服务器功能

    url:用来解析url

    querystring:解析url中的查询字符串

    zlib:压缩

    • 切换node版本----nvm use/install

js与jquery

  • 面向过程

    先干什么,后干什么,顺序的来

  • 面向对象

    不同异步谁先谁后(找到角色,确定职责)

  • this指向

    • this总是指向函数的直接调用者
    • 如果有new关键字,this指向new出来的那个对象
    • 在事件中,this指向触发这个事件的对象
    • 函数预编译过程中,指向window;全局作用域中this指向window
    • 函数.bind(obj),会生成一个新函数,新函数的this,会永久的指向obj,因此,this被绑定了
  • 箭头函数

    不能当构造函数来使用,不能使用构造函数,没有自己的this

    当箭头函数不存在,来去寻找this,父级上下文的this

    不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替

  • 垃圾回收机制

    引用计数法

    标记清除法

    复制整理法

    闭包----外面的执行函数上有计数,不会被清0;

你可能感兴趣的:(面试进阶)