思路2

106 阅读6分钟
  • css如何实现垂直居中
    7种方法:1.单行文本元素,vertical-align;2.块级行内元素:display:inline-block,vertica-align,和父元素的伪元素来实现;4.flex布局,align-item:center;5.对于不定高元素,采用top: 50%,transform:translate(-50%, -50%);6.对于定高元素:采用top: 50%;margin-top: -1/2height;7.定高元素:position:absolute,height固定,top: 0; bottom: 0,margin: auto 0.
  • 前端性能优化如何做
  • 数组实现一个队列
  • js字符串实现倒序
  • js原型链
    每一个构造函数都有一个原型对象,这个原型对象包含一个指向构造函数的指针,实例都包含一个指向原型对象的指针。如果试图引用某个实例对象的属性,会首先在对象内部寻找该属性,如果找不到,就去这个对象的原型中去找这个属性。如果让这个原型对象指向另一个构造函数的实例,假设这个原型对象为Son,另一个实例为Father,那么就构成了一层一层对象查找的的原型链
  • web安全相关知识 跨站伪造等
  • service worker相关,pwa相关知识
  • http状态码 3开头的,4开头的,5开头的
  • get post 区别
  • 跨域出现的原因,以及如何解决跨域问题
  • function A 父类,function B子类,如何通过原型链实现继承
    原型继承:子类不能向父类传递参数
    构造函数继承:子类不能访问到父类原型对象
    组合继承:父类构造函数将被调用2次
    寄生组合式继承:解决父类被调用2次的问题
    son(){ father.call(this)}
    extend(son, father)
    extend(son, father) {
    var F = function() {}
    F.prototype = father.prototype
    son.prototype = new F()
    son.prototype.constructor = son
    son.father = son.prototype
    }
  • css盒模型相关
  • 箭头函数和普通函数的区别
    1.this指向:箭头函数的this指向定义时所在的对象
    2.箭头函数没有arguments,可以用rest参数替代
    3.箭头函数不能用作构造函数,和new一起用会抛出错误
    4.箭头函数没有原型属性
    5.不可以使用yield命令,不能用作generator函数
  • 讲url后面的query参数,通过一个函数解析成对象,用正则如何写
  • 讲讲es6里面的const, const声明的数组,可以朝里面插入元素嘛,为什么
    可以,const实际上是变量指向的那个内存地址所保存的数据不能改动。
    const常量声明必须立刻赋值,如果声明的是简单数类型,那么不能改变其值,如果是复杂数据类型,那么不能改变其指针指向的地址,但内部的值可以改变
  • js的事件分为哪几个生命周期,事件的传递方式
  • knex连接数据库响应回调
  • 介绍异步方案
    • 1.回调函数;2.Promise;3.Generator函数;4.Async函数
  • 如何处理异常捕获
  • 项目如何管理模块
  • 前端性能优化
    • 1.减少HTTP请求:css/js合并打包;小图标用iconfont代替;使用base64格式的图片,针对一些小图;避免src属性为空字符串,浏览器仍会向服务器发起http请求;
    • 2.减少静态资源的体积:压缩静态资源;编写高效率css;服务端开启gzip压缩
    • 3.使用缓存:设置HTTP Header里缓存相关的字段。静态内容可以将expires相应头设置为将来很远的时间,动态内容设置合适的cache-control响应头,让浏览器有条件的发起请求;设置Etag通过文件版本标识方便服务器判断请求的内容是否有更新;使用CDN。
    • 4.代码层面:减少DOm操作;使用高效和事件处理;使用外部js和css文件,便于被浏览器缓存,在不同页面间可以重用;
  • JS继承方案
  • 如何判断一个变量是不是数组
    • 1.Array.isArray(),为true;2.arr instanceOf Array是否是true;3.Object.prototype.toString.call(arr)是否是[object Array];4/用constructor来判断,arr.constructor === Array(不一定对)
  • 变量a和b,如何交换
    • a = a+b; b = a-b; a = a-b;
  • 事件委托

  • 多个标签生成的Dom结构是一个类数组
  • 类数组和数组的区别
    • 类数组是一个普通对象,不具备数组的方法
  • dom的类数组如何转成数组
    • 1.使用Array.prototype.slice.call(argument)方法
    • 2.使用Array.from(argument)方法
    • 3.使用拓展运算符 参数 [...arguents]
  • 介绍单页面应用和多页面应用
    • 多页面应用由一个外壳页面和多个页面片段组成,可实现资源公用,页面实现局部刷新和更改,更容易实现转场动画,数据间传递变得更加容易,在代码层面即可实现,维护相对容易。缺点是不利于SEO检索,需要单独的方案,实现较为困难。
  • redux状态树的管理
  • 介绍localstorage的API
  • localStorage和cookie有什么区别
  • CSS选择器有哪些
  • 盒子模型,以及标准情况和IE下的区别
  • 如何实现高度自适应
  • prototype和——proto——区别
  • _construct是什么
  • new是怎么实现的
    • 1创建一个空对象;2将空对象的__proto__指向构造函数prototype,绑定原型;3调用参数函数,改变构造函数this指向新建对象;4返回对象
  • promise的精髓,以及优缺点
  • 如何实现H5手机端的适配
  • remflex的区别(root em)
  • empx的区别
  • React声明周期
  • 如何去除url中的#号
  • Redux状态管理器和变量挂载到window中有什么区别
  • webpack和gulp的优缺点
  • 如何实现异步加载'
  • 如何实现分模块打包(多入口)
  • 前端性能优化(1js css;2 图片;3 缓存预加载; 4 SSR; 5 多域名加载;6 负载均衡)
  • 并发请求资源数上限(6个)
  • base64为什么能提升性能,缺点
  • 介绍webp这个图片文件格式
  • 介绍koa2
  • Promise如何实现的
  • 异步请求,低版本fetch如何低版本适配
  • ajax如何处理跨域
    • JSONP和CORS和WebSocket
  • CORS如何设置
    • 请求头里加上origin,响应头返回Access-Control-Allow-Origin字段即可。分简单请求和复杂请求,复杂请求需要预检
  • jsonp为什么不支持post方法
    • 通过创建一个 script 标签,将 src 设置为目标请求,插入到 dom 中,服务器接受该请求并返回数据,数据通常被包裹在回调钩子中;
    • 看过支持 post 请求的 script 么
  • 介绍同源策略
    • 协议、端口、域三者都要相同,缺一不可。
  • React使用过的一些组件
  • 介绍Immuable
  • 介绍下Vuex整个流程原理
  • 介绍原型链
  • 如何继承