第三场:
1.TCP三次握手,DNS是什么
建立连接需要三个过程(三次握手):
1.主机向服务器发送一个建立连接的请求
2.服务器接到请求后发送同意连接的信号
3.主机接到同意连接的信号后,再次向服务器发送了确认信号
DNS是域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
2.Ref的用法
Ref可以获取本页面的DOM元素,还可以拿到子组件中的data和去调用子组件中的方法,如用于父子间传值。
3.祖孙组件传参
在 vue 中,祖孙组件之间是不能直接通信的,需要通过父组件作为 中间组件。实际上祖父的关系就是两个 父与子 的关系。
1 $props 链 既然是两个父与子之间的关系,那就可以 祖传父 再由 父传子。而 props 可以用来接收来自父组件的值,那就可以通过 props 实现链式传递了。这种方式虽然是比较容易理解,但也是比较繁琐的。中间组件需要接收所有的 props 等。
2 $attrs vue 在 2.4.0 版本中新增了 $attrs 属性。根据前面的理解 $attrs 就是没有在 props 中声明要接收的一些属性。此外,还可以通过 v-bind="$attrs" 把来自父组件的一些属性直接传递到子组件中。在 父组件 中使用 v-on="$listeners" 把祖父组件的事件绑定到孙组件;
在孙组件中触发来自祖父组件的自定义事件就可以了,有两种方式。
① this.$ listeners.eventName(param)
② this.$emit(eventName, param)传递次序:GrandFather → Father → GrandSon
4.自定义UI组件原组件方法如何处理
使用props,引入原组件,lg:props:{...Table.props}或者mixins: [Table]
通过v-bind=”$attrs”和v-on=”$listeners”接受父级传递的属性传递给子组件
5.promise与async await优缺点
async/await是写异步代码的新方式,以前的方法有回调函数和Promise。
async/await是基于Promise实现的,它不能用于普通的回调函数。
async/await与Promise一样,是非阻塞的。
async/await使得异步代码看起来像同步代码
区别:
- async/await函数前面多了一个async关键字。await关键字只能用在async定义的函数内。async函数会隐式地返回一个promise,该promise的reosolve值就是函数return的值。
2)我们不能在最外层代码中使用await,因为不在async函数内。
3)使用async函数可以让代码简洁很多,不需要像Promise一样需要些then,不需要写匿名函数处理Promise的resolve值,也不需要定义多余的data变量,还避免了嵌套代码。
4) 错误处理:Async/Await 让 try/catch 可以同时处理同步和异步错误。
6.js模拟多线程
JavaScript是单线程执行的。也就是说,在任何时间点,有且只有一个线程在运行JavaScript程序,无法同一时候运行多段代码。
实现一:用setTimeout制造异步执行的假象
实现二:Concurrent.Thread.js
实现三:WebWork
第四场:
1.vue相邻组件传参
- .使用中间件eventBus
- 使用状态管理工具vueX
2.event Bus如何传值,为啥要写成组件,可不可以对象
在main.js文件中暴露出一个实例,export const eventBus = new Vue()
1).变量通过eventBus.$emit传过去;eventBus.$on传过来的变量
2).新建个bus.js 以组件形式调用
3.vueX如何传值,actions如何异步操作
This.$store.state.xx(变量名) 取值
this.$store.commit(‘xx’, obj) 传值; 第一个参数是mutaions中定义的方法名,第二个参数是赋值对象
Actions异步操作:
在actions中提交mutation,并且可以包含任何的异步操作
一个方法中可以执行多个同步函数 ;store.dispatch在不同模块中可以触发多个action函数
4.路由传参有哪些方式,params为啥一定要配name
常用的有三种:
1).在路径中显示参数,刷新页面参数不丢失 /path/:id
2).通过path匹配路由;在路径中显示参数,刷新页面参数不丢失
3).通过name匹配路由,不在路径中显示参数,刷新页面参数丢失
5.js执行机制
javascript是一门单线程语言,所有任务需要排队,前一个任务结束,才会执行后一个任务。
1、同步和异步任务分别进入不同的执行"场所",同步的进入主线程,异步的进入Event Table并注册函数。
2、当Event Table中指定的事情完成时,会将这个函数移入Event Queue。
3、主线程内的任务执行完毕为空,会去Event Queue读取对应的函数,进入主线程执行。
4、上述过程会不断重复,也就是常说的Event Loop(事件循环)。
6.原型和原型链
原型:
①所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象
②所有函数都有一个prototype(原型)属性,属性值是一个普通的对象
③所有引用类型的__proto__属性指向它构造函数的prototype
原型链:
当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链。
小结: 此次问题大都不难,简单总结下,与以往也有很多重复的内容被我砍掉了,运气不错面了一个电商公司幸运拿到满意的offer,也祝各位旗开得胜,武运昌隆!