其它面试总结

2020-04-15  本文已影响0人  懒羊羊3号

总结,又杂又多

crypto

1、事件循环

g(x) f(x) g(21)
start promise setTimeOut

2、选择排序 归并排序 快速排序
3、hooks
4、graphQL resful
5、深克隆,map,promise 手动实现
6、看过什么书
7、0 100 300 200 200 async/await实现

腾讯

头条

笔试

四个题型
单选:比较简单,有问etag不太了解
填空:一个事件循环,一个this指针
编程:数组深度,大数相加
问答:性能优化

一面

react diff算法

在开发过程中,尽量减少类似将最后一个节点移动到列表首部的操作,当节点数量过大或更新操作过于频繁时,会影响React的渲染性能。

在原型上手写map,reduce

前端缓存

service worker>memory cache>disk cache>请求
1.根据 Service Worker 中的 handler 决定是否存入 Cache Storage (额外的缓存位置)。
2.根据 HTTP 头部的相关字段(Cache-control, Pragma 等)决定是否存入 disk cache
3.memory cache 保存一份资源 的引用,以备下次使用。

cookies: HTML5之前本地储存的主要方式,大小只有4k,HTTP请求头会自动带上cookie,兼容性好
localStorage:HTML5新特性,持久性存储,即使页面关闭也不会被清除,以键值对的方式存储,大小为5M
sessionStorage:HTML5新特性,操作及大小同localStorage,和localStorage的区别在于sessionStorage在选项卡(页面)被关闭时即清除,且不同选项卡之间的sessionStorage不互通
IndexedDB: NoSQL型数据库,类比MongoDB,使用键值对进行储存,异步操作数据库,支持事务,储存空间可以在250MB以上,但是IndexedDB受同源策略限制
Web SQL:是在浏览器上模拟的关系型数据库,开发者可以通过SQL语句来操作Web SQL,是HTML5以外一套独立的规范,兼容性差

数组数学方法

map,reduce,filter,foreach,sort,reverse,slice,splice

网络安全,哪几种攻击方式

1、 XXS: 脚本注入攻击,用户输入可执行JS代码
输入框,URL,img,$.append嵌入<script>脚本,导致cookie信息泄露
防范方式:

2、 XSRF/CSRF:跨站脚本攻击,网站提交表单被利用,操作到其他网站
来源

3、网络劫持:网站的访问并非进入目标服务器,而是中间被转移到其他网站了
解决方法

5、中间人攻击:中间人攻击是攻击方同时与服务端和客户端建立起了连接,并让对方认为连接是安全的

哪几种设计模式

1、单例模式

var single = (function(){
    let instance;

    function getInstance(){
    // 如果该实例存在,则直接返回,否则就对其实例化
        if( instance=== undefined ){
            instance= new Construct();
        }
        return instance;
    }

    function Construct(){
        // ... 生成单例的构造函数的代码
    }

    return {
        getInstance : getInstance
    }
})();

2、工厂模式

//安全模式创建的工厂方法函数
let UserFactory = function(role) {
  if(this instanceof UserFactory) {
    var s = new this[role]();
    return s;
  } else {
    return new UserFactory(role);
  }
}

//工厂方法函数的原型中设置所有对象的构造函数
UserFactory.prototype = {
  SuperAdmin: function() {
    this.name = "超级管理员",
    this.viewPage = ['首页', '通讯录', '发现页', '应用数据', '权限管理']
  },
  Admin: function() {
    this.name = "管理员",
    this.viewPage = ['首页', '通讯录', '发现页', '应用数据']
  },
  NormalUser: function() {
    this.name = '普通用户',
    this.viewPage = ['首页', '通讯录', '发现页']
  }
}

//调用
let superAdmin = UserFactory('SuperAdmin');
let admin = UserFactory('Admin') 
let normalUser = UserFactory('NormalUser')

3、观察者模式
4、装饰器模式
5、适配器模式
6、代理模式

回流重绘

回流:长宽等发生变化,会引起布局变化
重绘:颜色,显示变化
1、使用transform代替
2、visibility代替display:none
3、避免table布局
4、css层级减少
5、动画用在position为absolute或fixed,复杂元素绝对定位脱离文档流
6、css3硬件加速,transform\opacity,filter不引起
7、js少操作dom,样式

原型继承

ip mac

虚拟(一个地址可以对应多个IP),物理(网卡)

位运算

加法,找出数组中唯一出现的数

二面

vue @click

jQuery 事件代理

rem如何实现

跨域

同源策略,协议域名端口都一致
1、后端加Access-Control-Allow等字段,不安全
2、脚手架webpack,node正向代理,proxy
3、nginx反向代理,proxy_pass
4、jsonp,script标签没有同源限制

上一篇 下一篇

猜你喜欢

热点阅读