面试的时候,一般面试官会问vue react哪个用的多,再针对你用的多的进行提问
就我个人而言,我觉得网上讲解vue源码的博客比较多,vue的相关面试题整理的也比较多,面试时可能更好回答一些
react用的没有vue多,源码还没开始读,reactHook出现后慢慢替代了class组件,逐渐趋于主流,可以结合公司的项目针对react16.8版本之后的reactHook进行准备
angular2+,上份公司是用angular2,但是快4年没写了,加上招聘JD主流还是vue react,考虑到精力和时间有限,就不整理了
如果简历写了小程序的话,需要针对小程序优化点,setData,小程序登录机制,小程序订阅等进行准备
接下来列一些vue react 小程序常见的面试题和考察重点
vue官方文档就不说了,必读 Vue官方文档
面试常考察点,生命周期,new Vue过程,数据响应式如何实现,双向绑定如何实现,为何vue2的defineProperty无法监听新增对象改变,和vue3的proxy区别,AST语法,虚拟dom如何渲染到页面,diff算法介绍,nexttick原理 Vuex 是什么等
MVVM是 Model-View-ViewModel 的缩写,MVVM 是一种设计思想。Model 层代表数据模式,也可以在 Model 中定义数据修改和操作的业务逻辑;View 代表 UI 组件,它负责将数据模型转化为 UI 展现出来,ViewModel 是一个同步 View 和 Model 的对象。
父子组件传值,父-> 子: props,子-> 父: on+emit,父<>子: on.sync(语法糖)来的,兄弟 : event bus | vuex
生命周期,8个就不写了
css的scoped
常用指令 v-if v-show v-for v-model
v-if v-show的区别
v-if和v-for同级使用的问题
v-for为什么要加key
$refs
看了很多博客,理解初始化的过程,理清observer dep watcher的关系,最绕的我觉得就是dep,dep.target
new Vue() ,过程非常复杂 ,步骤很多
Vue.prototype._init
方法,进行了一系列处理,合并options配置,初始化各种方法,initLifecycle,initRender,callHook(vm,'beforeCreate')
,initState
,callHook(vm,'created')
initData
initComputed initWatchedobserve
方法 new Observer()进行proxy代理,数据劫持new Observer()
--> 调用walk()
--> 调用defineReactive(),var dep = new Dep()建立独立的Dep对象 --> 调用Object.defineProperty()
修改data的get setdep.depend()
存储需要响应更新的方法,dep.target.addDep() --> dep.addSub --> this.subs.push()dep.notify()
通知订阅的方法挨个更新,遍历subs执行subs[i].update(),更新方法参考博客
图解 Vue 响应式原理
Vue源码窥探之new Vue之后发生了什么?
vue 双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的, 也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变;
核心:关于VUE双向数据绑定,其核心是 Object.defineProperty()方法
对象内部通过 defineReactive 方法,使用 Object.defineProperty 将属性进行劫持(只会劫持已经存在的属性),数组则是通过重写数组方法来实现。当页面使用对应属性时,每个属性都拥有自己的 dep 属性,存放他所依赖的 watcher(依赖收集),当属性变化后会通知自己对应的 watcher 去更新(派发更新)。
push();pop();shift();unshift();splice(); sort();reverse()
Vuex 是专门为 Vue.js 设计的状态管理模式,它采用集中式储存管理 Vue 应用中所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化
由于在浏览器中操作 DOM 是很昂贵的。频繁的操作 DOM,会产生一定的性能问题。这就是虚拟 Dom 的产生原因。Vue2 的 Virtual DOM 借鉴了开源库 snabbdom 的实现。Virtual DOM 本质就是用一个原生的 JS 对象去描述一个 DOM 节点,是对真实 DOM 的一层抽象。
Vue 虚拟 DOM 搞不懂?这篇文章帮你彻底搞定虚拟 DOM
AST 抽象语法树
手写Vue2.0源码(五)-异步更新原理
手写Vue2.0源码(六)-diff算法原理
最全的 Vue 面试题+详解答案
react用的相对不多,加上上手比vue吃力些,一开始用的时候,语法不适应,render return html标签,有点像以前的ejs或者freemarker,各个生命周期名称又长,redux也没有vuex用着省心,不过开发用起来还是没太大问题,接下来的目标是熟练使用+理解react各种原理
去年接触reactHook,FunctionComponent写起来要比ClassComponent简洁很多,加上生命周期换成了useEffect等来实现,hook应该是趋势,大厂貌似更喜欢用react,大佬们貌似也是
整理一些面试题,毕竟没有读过源码,太深入的也搞不了,下面好多题我表示都太难了,直接贴博客地址吧
推荐阅读,卡颂 React技术揭秘
React之diff算法
今天让你彻底搞懂setState是同步还是异步
React setState 整理总结
彻底搞懂React源码调度原理(Concurrent模式)React Fiber是什么
React探索-React Fiber的架构、调度原理
理解 React Fiber & Concurrent Mode
react事件系统原理
深入理解React:事件机制原理
React 中组件间通信的几种方式
react 高阶组件 HOC 的个人理解和使用场景(易懂)
浅谈React中组件逻辑复用的那些事儿
React v16.3之后的组件生命周期函数
详解React生命周期(包括react16最新版)
为什么废弃react生命周期函数?
理解React:Fiber架构和新旧生命周期
react的一些性能优化
React性能优化总结
React 性能优化技巧(纯干货)
React 虚拟 DOM 浅析
useEffect使用指南
全面了解 React 新功能: Suspense 和 Hooks
React 中执行 setState 时怎么保证你取到的上一次state是正确的?
React Hook的用法: memo + useCallback (四)
React三大属性和通信(组件间&组件内)
Redux
properties中接收传值,observe对比newValue,oldValue
小程序分为两个部分webview和appService,webview用来展现UI,appService用来处理业务逻辑、数据及接口调用,它们在两个进程中运行,通过系统层JSBridge实现通信,完成UI渲染、事件处理
微信小程序底层原理与运行机制类文章学习
官方文档
官方文档
wx.requestPayment(Object object)
我知道的就一个,src携带参数传给vebView
webView向小程序传值可以用wx.miniProgram.postMessage 向小程序发送消息,会在特定时机(小程序后退、组件销毁、分享)触发组件的message事件
首先,需要在你的html页面中引用一个js文件。
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.0.js"></script>
wx.miniProgram.redirectTo({url: '/pages/indexTwo/indexTwo'})
//跳转到tabbar
wx.miniProgram.switchTab({
url: '/pages/index/index'
})
这里的redirectTo跟小程序中的wx.redirectTo()跳转页面是一样的,会关闭当前页跳转到页面。
你也可以替换成navigateTo,跳转页面不会关闭当前页。
15个高频微信小程序面试题
面试题(2020)微信小程序常见面试题
微信小程序面试题,附答案
未完待续,持续补充…