高级前端研发工程师需要掌握的知识点

204 阅读6分钟

html,css 是基础,暂且忽略

JS基础   

1.js的语言类型

a:7种,undefined, null, boolean, string, number, symbol, object

2.js中的变量在内存中的具体存储形式

a:js的变量分为基本类型和引用类型

基本类型是保存在栈内存中的简单数据段,值固定大小,保存在栈空间,通过按值访问
引用类型是保存在堆内存中的对象,值大小不固定,栈内存中存放的该对象的访问地址指向堆内存中的对象,js不允许直接访问堆内存中的位置,因此操作对象时,实际操作对象的引用

3.null和undefined的区别

a:undefined和null 都只有一个值,undefined表示当声明的变量还未被初始化时,变量的默认值为undefined,null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象

1.原型和原型链

原型模式:创建一个共享的原型,并通过拷贝这些原型创建新的对象.用于创建重复的对象,这种类型的设计模式属于创建行模式,题提供了一种创建对象的不错选择

如:Object.create()

2.instanceof的底层实现原理

a:instanceof 运算符是用来测试一个对象是否在其原型链原型构造函数的属性,其语法是object instanceof constructor

同样判断类型的方法还有:prototype jsuert.type

prototype的用法: Object.prototype.toString.call('11') == '[Object String]' true

jquery.type的用法: jQuery.type(undefined) === 'undefined'  true

node

1.express 和 koa 的区别

2.node 的底层原理,和浏览器的异同

3.node 事件驱动,非阻塞机制的实现原理

ts

1.ts 的好处和基础语法

2.ts 的规则检测原理

3.理解泛型,接口,等面向对象的相关概念,ts 对面向对象理念的实现

react

1.react 与 vue 选型,优缺点,核心架构的区别

    1.均为轻量级

    2.虚拟dom 快速渲染

    3.响应式组件

    4.服务器端渲染

    不同点:

    1.vue 双向绑定, react 单项数据流

    2.vue使用teplate模版,  react使用jsx

    3.生态上,react更加完善,可以适用于web 端和原生app

    4.构建一个大型应用程序,请使用react

    redux:

    redux 使用一个对象存储整个应用的状态,当状态发生变化 时,状态树从树形结构的最顶端往下传递,每一级都会去进行比较,从而达到更新

     action: 应用向store传递的数据信息

     reducer: 不存储state, reducer返回新的state 对象

    异步action:

        但页面充斥着大量的异步请求,dispatch是异步的,如果要处理异步action,需要使用一些中间件,redux-thunks, redux-promise 分别是使用异步回掉和promise 来解决异步action问题

   VUEX:

    由于vue 自动重新渲染的特性,无需订阅重新渲染函数,只要生成新的state 即可,

    所以,vuex 的数据流顺序是:view 调用store.commit 提交对应的请求到store 对应的mutation函数->store 改变

2.react 中setstate 的执行机制,如何有效的管理状态

    react本身会进行一个递归传递调用,将上一次的函数执行后的state传给下一个函数,因此每次执行setstate后能读取到更新后的state值

    setstate的缺点:

       1.有可能会循环

       2.可能会引发不必要的渲染

       3. 并不是总能有效的管理组件中的所有状态

3.react 的事件底层实现机制

      采用类似DOMO的事件绑定的方式进行处理,他会收到一个合成事件对象,该对象集成了原生事件对象的所有特性,而且还是事件冒泡机制,并且支持stopPropagation 和 preventDefault 两种方法

    原生事件和合成事件的区别:

        1.原生事件绑定是采用小写onclick,而react 则是采用大写onClick

        2.原生事件绑定的是一个js字符串,而react采用的是一个函数指针

4.react 的虚拟dom 和 diff 算法的内部实现

      diff算法比较新旧节点的时候,比较只会在同层级进行,不会跨层级比较

      虚拟dom 和真实dom 的区别

      虚拟dom 是将真实dom的数据抽取出来,以对象的形式模拟树形结构

5.react 的fiber 工作原理,解决了什么问题

      由于fiber的使用,componentWillMount, componentWillReceiveProps, componentWillUpdate 这几个生命周期不再安全,所以进行替换

    原理: 通过对象记录组件上需要做或者已经完成的更新,一个组件可以对应多个fiber

6.react router 和 vue router 的底层实现原理,动态加载实现原理

    react-router是利用react 的context 进行组件间通信, 其实就是URL和组件的匹配

    vue-router 是通过hash 和 history 两种方式实现前端路由, 更新路由但不重新请求页面是前端路由原理的核心之一

7.react 生命周期,可使用HOC,render props,hooks 等高阶组件用法

HOC: 本质依旧是组件,只是他返回另外一个组件,产生新的组件可以对属性进行包装,也可以重写部分生命周期

8.基于react 的特性和原理,手动实现一个简单的raect

vue

1.vue 的生命周期,钩子函数

    a:自行理解吧

2.mvvm 框架设计理念

    a:将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开

    优点: 低耦合,可重用, 独立开发, 可测试

3.vue 的双向绑定原理, diff 算法内部实现

    a: 数据变化更新视图,视图变化更新数据

   diff算法比较新旧节点的时候,比较只会在同层级进行,不会跨层级比较

    虚拟dom 和真实dom 的区别

    虚拟dom 是将真实dom的数据抽取出来,以对象的形式模拟树形结构

4.vue 的事件机制

    vue 事件机制,有四个事件api,分别是: on,on, once,off,off,emit    

5.从template转换成真实dom的实现机制

多端开发

1.em.rem的原理和用法

    a: rem 根据跟元素来的

       em 是根据父元素来确定大小

2.单页面的原理和优缺点

    a: 用户操作方便,页面渲染更快

       但是不利于seo

3.移动端适配解决方案,不同机型适配方案

    a: rem

4.TARO, WEEX掌握一种

前端安全

1.xss的原理,如何防御

a:xss是一种代码注入攻击,本质是恶意代码未经过过滤,与网站正常代码混在一起,浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行

防御方案:利用模版引擎, 避免内联事件, 避免拼接HTML, 输入过滤

2.CSRF攻击的原理,处理方案

a: csrf: 跨站点请求伪造

防御手段:

(1)尽量使用POST,限制GET
(2)浏览器cookie策略
(3)加验证码
(4) Anti CSRF Token

3.HTTP劫持,防御措施

这个不好描述啊,自行理解吧

性能优化

1.常见的web,app性能优化方案

分为代码,请求,缓存三个方面吧

2.webpack 打包优化

分包:配置webpack.config.js

使用cdn

3.SSR实现方案及优缺点

优点:利用seo,页面渲染时间短,服务器压力过大

4.React.vue性能优化方案

react: 

       避免重复渲染

       避免冲突

vue: 

       路由懒加载

       服务端渲染

       骨架屏

       菊花loading