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,分别是: once,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