0
点赞
收藏
分享

微信扫一扫

前端及nodejs后端面试经验

覃榜言 04-08 08:30 阅读 1

目录

前端

双向绑定如何实现

双向绑定是通过v-model指令来实现的。v-model指令可以将表单控件的值与Vue实例中的数据进行双向绑定。当表单控件的值发生变化时,Vue实例中对应的数据也会随之更新,反之亦然。这样就实现了数据的双向绑定。

自定义指令如何实现

全局:Vue.directive("focus",{})
局部:directives:{focus:{}}
何时使用自定义指令

promise的执行顺序

1.三种状态
Pending(待定):Promise对象初始状态为Pending(待定),表示异步操作尚未完成。

Fulfilled(已完成):当异步操作成功完成时,Promise状态变为Fulfilled(已完成),并调用then()方法中的回调函数来处理结果数据。

Rejected(已拒绝):当异步操作失败时,Promise状态变为Rejected(已拒绝),并调用catch()方法中的回调函数来处理错误信息。

父子组件的信息传递

cookies,session,webStorage

cookies:存在客户端,有两种,1.会话级的,2.持久性的,会话级的存在浏览器,不需要定时长,持久性的存在本地,需要定时长;

session:存在服务端,更安全;

webStorage:存在客户端;local永久的,session会话级的(关闭浏览器就没了)

session是通过cookies来工作的,因为一般用cookies存储会话标识符

vuex

mutation:同步
action:异步,但不能修改state

vuex和全局变量的区别:
vuex是响应式的

vuex和localStorage的区别:
localStorage存在本地,也就是磁盘里
vuex存在内存里,读取速度更快

回流和重绘

回流:比较严重,有大小属性等变化的时候导致整个页面或者部分页面重新渲染
重绘:只对某个元素的重新渲染

如何减少出现这两种情况:
减少css表达式(只要有事件就会触发计算)
减少dom操作
脱离文档流,用flex或者absolute或者fixed

指令

v-for和v-if优先级:先循环再判断,所以用template套在外面进行判断是否显示,节约时间

watch和watchEffect的区别

watch是用来检测固定的参数是否发生变化
watchEffect可以检测回调函数的所使用的响应式的依赖是否发生变化(也就是函数里用到的响应式变量)

watch和computed的区别

  1. 缓存:computed有缓存,所以只有在数据和之前不一样的时候才会执行;
    watch无缓存,所以改变这个监听的数据哪怕是没有变化,也会执行回调函数;

  2. 异步:computed不支持异步;watch支持异步监听(异步监听:也就是回调函数里有异步操作。)
    原因:
    因为computed是靠对比缓存的数据执行回调的,所以执行完函数后要存回缓存,所以不能异步;
    但是watch只要改变就能执行,不需要等上一次watch的异步结束,所以可以异步监听)

  3. watch的特殊性:
    watch可以设置immediate和deep两个参数
    immediate可以设置为true和false,表示第一次加载组件的时候会不会执行回调;
    deep表示是否开启深度监听,比如一些对象,数组等复杂数据结构,能靠deep监听具体内部数据有没有改变,比如深度监听obj,如果obj里面的某个属性变了,或者某个属性的某个属性(多层的情况)变了都会执行回调

  4. computed的特殊性:computed可以自动监听函数的依赖项是否与缓存有变化然后进行回调;

vue3新功能

Composition API

用setup代替了vue2中的data,methods等选项式api

proxy和defineProperty

Teleport

一般在弹窗的时候让弹窗绑定到body下,这样就不用考虑有多少父级、怎么设zindex了
(elementplus的模态窗的append-to-body就是用的这个)

请求

post和put的区别

如果两个put请求相同,后一个请求会把第一个请求覆盖掉;而post不会
put主要用于更新

head和get

head不含有呈现数据,而仅仅是HTTP头信息,欲判断某个资源是否存在,我们通常使用GET

前端做过哪些优化

cdn、懒加载、减少回流和重绘(减少css表达式等)、雪碧图、节流和防抖

nodejs后端

cron语法

秒 分 时 日 月 星期 年(年可以为省略)

* * 0 * * * * // 表示每天零点执行
*/30 * * * * * * // 表示每30s执行一次
* 30 0,12 * * * * // 表示每天的零点半和十二点半执行
* * 3/5 1-20 * * * // 表示每月1到20号从3点开始每个五个小时执行一次

确保信息不被冒用

简历上写做了一个消息转发,所以面试被问到了这个问题,没答上来,现在想想可能是用token?有没有懂的大哥告知一下

举报

相关推荐

0 条评论