java面试总结
原创1、说一下对MVVM的理解
- MVVM 是 Model-View-ViewModel 的缩写。
- Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。
- View 代表UI 组件,它负责将数据模型转化成UI 展现出来。
- ViewModel 监听模型数据的改变和控制视图行为、处理用户交互,简单理解就是一个同步View 和Model的对象,连接Model和View。
- 在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。
ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM,不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。
2、vue路由的钩子函数
首页可以控制导航跳转,beforeEach,afterEach等,一般用于页面title的修改。一些需要登录才能调整页面的重定向功能。
beforeEach主要有3个参数to,from,next:
to:route即将进入的目标路由对象,
from:route当前导航正要离开的路由
next:function一定要调用该方法resolve这个钩子。执行效果依赖next方法的调用参数。可以控制网页的跳转。
3、vuex是什么?怎么使用?哪种功能场景使用它?
只用来读取的状态集中放在store中; 改变状态的方式是提交mutations,这是个同步的事物; 异步逻辑应该封装在action中。
state
Vuex 使用单一状态树,即每个应用将仅仅包含一个store 实例,但单一状态树和模块化并不冲突。存放的数据状态,不可以直接修改里面的数据。
mutations
mutations定义的方法动态修改Vuex 的 store 中的状态或数据。
getters
类似vue的计算属性,主要用来过滤一些数据。
action
actions可以理解为通过将mutations里面处里数据的方法变成可异步的处理数据的方法,简单的说就是异步操作数据。view 层通过 store.dispath 来分发 action。
4、v-if 和 v-show 区别
答:v-if按照条件是否渲染,v-show是display的block或none;
频繁切换使用v-show
5、Vue组件封装过程
● 首先,使用Vue.extend()创建一个组件
● 然后,使用Vue.component()方法注册组件
● 接着,如果子组件需要数据,可以在props中接受定义
● 最后,子组件修改好数据之后,想把数据传递给父组件,可以使用emit()方法
6、v-model
v-model是:value=“msg”@input="msg= $event.target.value
"的语法糖,其中:value="msg"是绑定了数据,value就是input输入框里的值;@input="msg=$event.target.value"就是监听input输入框里值的变化,然后改变值。一句话概括就是,绑定数据并且监听数据改变
7、闭包
- javascript允许使用内部函数—即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。
- 在函数内部创建一个函数访问该函数的私有变量,该变量不会在该函数执行之后被释放。
8、 微信小程序登陆授权获取到哪些信息?
rawData
不包括敏感信息的原始数据字符串,用于计算签名。signature
使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息。encryptedData
包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法。iv
加密算法的初始向量,详细见加密数据解密算法。errMsg
描述信息userInfo
用户信息对象
nickName
String 用户昵称
openId
String 该服务商唯一用户标识 App
avatarUrl
String 用户头像
说明:
调用 wx.login()
获取 临时登录凭证code ,并回传到开发者服务器。
调用 auth.code2Session
接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key。
之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。
注意:
会话密钥 session_key 是对用户数据进行 加密签名 的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥。
临时登录凭证 code 只能使用一次
用户登录凭证(有效期五分钟)。开发者需要在开发者服务器后台调用auth.code2Session,使用 code 换取 openid 和 session_key 等信息
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
请求参数
属性 类型 默认值 必填 说明
appid
string 是 小程序 appId
secret
string 是 小程序 appSecret
js_code
string 是 登录时获取的 code
grant_type
string 是 授权类型,此处只需填写 authorization_code
返回值
Object
返回的 JSON 数据包
属性 类型 说明
openid
string 用户唯一标识
session_key
string 会话密钥
unionid
string 用户在开放平台的唯一标识符,在满足 UnionID 下发条件的情况下会返回,详见 UnionID 机制说明。
errcode
number 错误码
errmsg
string 错误信息
9、怎么定义 vue-router 的动态路由? 怎么获取传过来的值
答:在 router 目录下的 index.js 文件中,对 path 属性加上 /:id,使用 router 对象的 params.id 获取。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除