zoukankan      html  css  js  c++  java
  • 前端vue 的面试总结 以及答案以及前端技术点面试

    一:先谈优化问题

          前端的优化方式

             初始化阶段:

                1:初始化阶段首页图片加载过多

                    1.1:图片懒加载

                     先将img标签中的src链接设为同一张图片,将其真正的图片地址存储在img标签的自定义属性。当js监听到该图片元素进入可视窗口时,再把src          的值替换为自定义属性,减少首屏加载的请求数量,达到懒加载的效果。

          其中的定义滚动事件,和计算是否进入可视窗口,就用到了后面说的防抖和缓存layout属性

        2: 初始化阶段http 请求过多

               1:资源压缩合并,减少http 请求, 为了减少http  请求多个 js 合并成一个js,css 也同理

               2: 谷歌浏览器最多只能支撑8 个并发量就是同一时间内只支持8 个htpp 请求,如果需要请求多个接口,可以把接口给合并

        3:  初始化阶段请求的静态资源过大

        

        4: 计算量大的处理,可以开启一个worker 线程来计算,worker 必须要了解同源策略

       

        5:js 脚本放到html 底部

        6: 浏览器缓冲

        7: 尽量的避免减少 iframe 嵌套,iframe  会加到http 请求的次数,会重新请求http 。

    二:一次完整的http 请求是什么样的

    二:vue 的问题

       1: 组件之间的传值方式,参考我写的博客大概说下有几种传值方式

             答:https://www.cnblogs.com/sunliyuan/articles/12188934.html

       2: 路由之间的跳转方式

       3:vuex 是什么,如何使用

       4:说出至少四种vue 的指令以及他的用法

       5:  vue 写组件的时候,什么时候使用key , 为啥要使用key

       6: v-model  的实现原理

       7 : 在使用过程中 有没有用到自定义指令,他是怎么定义的

      8: 你一般在使用vue 封装组件的时候,需要注意什么

      9:   vue中针对于比较复杂的对象不好监听到,如何自己写一个双向绑定的实现方式(加分项)

    三: 前端一些技术面试
       1: 改变this 指向的方式有几种,有什么区别 

       2:promise 是如何变成同步的, 以及promise 返回值是什么 (以及 es7 的async 与await 能说出来最好,这个就是一个异步等待的东西)

             promise 封装一个同步请求,

             promise 封装一个异步请求

           

    // 封装一个get 请求
    /**
      * get方法,对应get请求
      * @param {String} url [请求的url地址]
      * @param {Object} params [请求时携带的参数]
      */
    export function get(url, params) {
      return new Promise((resolve, reject) => {
        axios.get(url, {
          params,
        }).then((res) => {
          resolve(res.data);
        }).catch((err) => {
          reject(err.data);
        });
      });
    }
    
    //封装一个post 请求
    
    /**
      * post方法,对应post请求
      * @param {String} url [请求的url地址]
      * @param {Object} params [请求时携带的参数]
      */
    export function post(url, params1) {
      let params = params1;
      if (!(params instanceof FormData)) {
        params = QS.stringify(params);
      }
    
      return new Promise((resolve, reject) => {
        axios.post(url, params)
          .then((res) => {
            if (!res.data || res.data.length === 0) reject(res.data);
            resolve(res.data);
          })
          .catch((err) => {
            reject(err.data);
          });
      });
    }
    
    // 把异步请求换成同步一个个来执行,返回值是一个数组,把每个异步的返回值都放到一个数组里面
    export function all(axiosArray) {
      return new Promise((resolve, reject) => {
        axios.all(axiosArray)
          .then((res) => {
            resolve(res);
          })
          .catch((err) => {
            reject(err);
          });
      });
    }

             promise 不想用 .then, 直接return  给一个变量

       3:scss 使用过没,使用过的话怎么定义一个变量封装一个函数(参考我的博客 https://www.cnblogs.com/sunliyuan/p/14449120.html )

    四: webpack 打包的方式

      

      

        

  • 相关阅读:
    ScottGu: 宣布微软 AJAX CDN
    表格数据流协议TDS
    .NET 4 System.Threading.Barrier 类
    企业架构思考
    OpenSSL的托管项目
    WCF服务中操作FormsAuthentication的Cookie
    Silverlight相关博客收集20090927
    Sync Framework 2.0
    [中央电视台·见证]大学堂——兰州大学
    系统进程管理工具Process Explorer
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/14628885.html
Copyright © 2011-2022 走看看