序
本文主要介绍一下面试题,部分答案写的不会非常详细,主要提供一些思路、方向,该是八股文的大家自行百度或者论坛搜索,咱就不废话了。
前言
金三银四,来波面试蹭个热度。
本次面试的是厦门天阳宏业科技,
项目:主要是做建行外包项目
福利待遇:一般,其中缴税起征点是15k,因为公司注册在拉萨,算是一个优势
面试岗位:高级前端
面试方式:视频面试、2次面试
主要考核技术栈:React
废话不多说,咱就开始
1、自我介绍
这个因人而异,把自我情况介绍一遍、项目介绍一遍,介绍一下自己的项目经验和优势。。。
2、面试题
1、虚拟DOM的优势
这里谈及2点:带来性能的提升,服务器端渲染(SSR)渲染的优势
个人理解:第二点一般人应该不是很清楚,毕竟做ssr 渲染的人不多了
2、Diff算法的原理
- 同一层级的节点互相比较
- 类型是否相同,不同替换整个组件
- 通过 key 来区分是否需要创建,删除,或者是移动
3、React和Vue之间Diff算法的不同
react 会自顶向下全diff。vue会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树。
具体再展开
react 是基于fiber架构的,2次循环比较
vue是组件间比较
4、什么是受控组件、非受控组件
标签被 state 接管的就是受控组件。举例 input框。。。
setState是同步的还是异步的
setState与调用时的环境相关
- 在合成事件 和 生命周期钩子(除componentDidUpdate) 中,setState是异步的;
因为他的调用顺序在组件更新之前,没法拿到新的数据,造成异步现象
- 在 原生事件 和setTimeout 中,setState是同步的,可以马上获取更新后的值;
5 类组件的生命周期
把下面这张表讲清楚,常用的讲出来,不常用的可讲可不讲
6、类组件和函数组件的区别
相同点
都是返回要在页面中渲染 React 元素
不同点
- 设计思想不同,函数式组件的根基是函数式编程,更符合React团队的编程思维
- 函数式组件不需要this,避免this指向的心智负担
- 函数式组件 能够更合理的代码拆分
- 能够优雅的复用组件代码,避免嵌套过深
7、redux的三个原则
-
单一数据源
- 所有的 state 存在一个 store 中
-
State是只读的
- 唯一改变 state 的方法就是触发 action
-
使用纯函数来进行修改
- 为了描述 action 如何改变 state tree ,你需要编写 reducers。
8、 a.b.c 和a['b']['c'] 哪个性能高
a.b.c 高
9、for、forEach、map 哪个性能高
for > forEach > map
因为for原生,forEach 有入参,map有入参有返回值
10、什么是防抖节流
防抖:n秒后才执行 节流:n秒内执行一次
11、前端怎么实现跨域
网上有9种方案,常用的有这几种
- 代理跨域,本地起一个服务器,与远程服务器通信,服务器之间通信不存在跨域。本地页面与本地服务器也不存在跨域
- websocket 不存在跨域
- iframe 不会跨域
12、Echarts的核心是什么
通过配置dataset的映射规则,
让dataset里source数据映射到类目轴和各个系列之间。
dataset(数据集)
使用dataset使 数据与配置 进一步分离,数据可以被单独管理,被多个series复用。
谢谢!