恒生面试准备

2023-05-16

目录

1、flex布局

2、vue的特性有哪些?

3、Vue中父子组件的传值的方式有几种?它们有什么数据上的限制

4、项目中用了vue组件传值的方式有哪些

5、项目中用到的组件

6、浏览器输入url到渲染网页的过程

7、Vue数据双向绑定

8、Vue-Router

9、移动端响应式布局


1、flex布局

在flex容器中有两条轴,水平主轴和垂直的交叉轴,在容器中的每个默认单元块被称之为flex-items占据的主轴空间为main size,交叉轴空间为cross size

任何一个容器都可以被指定为flex布局,这样容器内部的元素就可以用flex来进行布局,如果使用块元素,就使用display:flex,如果使用行内元素,就使用display:inline-flex

在容器上可以设置六种属性:

1、flex-direction:决定主轴方向,即项目的排列方向,默认值row,水平方向,起点为左端

2、flex-wrap:决定容器内项目是否可以换行,默认情况下不换行,flex空间不足时,项目尺寸随之调整并不会被挤到下一行

3、flex-flow,flexdirection和flex-wrap的简写形式

4、justify-content,定义了项目在主轴上的对齐方式

5、align-items定义了项目在交叉轴上的对齐方式

6、align-content定义了多跟轴线的对齐方式,如果只有一根轴线,那么该属性不起作用,即flex-wrap为nowrap的时候,项目不换行,不会产生多条轴线

有六种属性可以用在item项目上

1、order:定义了项目在容器中的排列顺序,数值越小,越靠前

2、flex-basis:定义了在分配多余空间之前,项目占据的主轴空间,浏览器根据这个属性,计算主轴是否有多余空间,默认值auto,即项目本来的大小,这时候item的宽高度取决于width和height的值,当主轴为水平方向的时候,设置了flex-basis,项目宽度的设置值就会失效,flexbasis需要跟flexgrow和flex-shrink配合使用才能发挥效果

当flex-basis为0%时,是把该项目视为0尺寸的,即使声明该尺寸为140px也没什么用

当flex-basis为auto时,则根据尺寸的设定值(假设为100px),则这100px不会纳入剩余空间

3、flex-grow:定义项目的放大比例

4、flex-shrink:定义了缩小比例

5、flex:简写

6、align-self:允许单个项目有与其他项目不一样的对齐方式

2、vue的特性有哪些?

Vue有什么特性,相对于其他框架都有那些优势! - 达达前端 - 博客园 (cnblogs.com)

表单操作,自定义指令,计算属性,过滤器,侦听器,生命周期

表单操作用于用户的交互,通过表单来进行数据的交互

基于Vue的表单操作,input单行文本,textarea多行文本,select下拉多选,radio单选框,checkbox多选框,表单操作,双向数据绑定v-model

自定义指令是因为内置指令不满足需要

计算属性,表达式的计算逻辑可能会比较复杂,使用计算属性可以使模板内容更加简洁

计算属性和方法的区别:方法不存在缓存,计算属性是基于它们的依赖进行缓存的。只要值不变就不重新计算。方法不存在缓存的机制。

computed: {
 msgDa: function() {
  return this.msg.split('').reverse().join('')
 }
}


<div>{{msgDa}}</div>
// 直接调用函数名

侦听器,是用来侦听数据的变化,数据一旦发生变化就会通知侦听器所绑定的方法,侦听器绑定方法,数据变化时执行一步或开销较大的操作,计算属性只能用于一些简单的操作

watch: {
 firstName: function(val) {
  // val表示变化之后的值
  this.fullName = val + this.lastName;
 },
 lastName: function(val) {
  this.fullName = this.firstName + val; 
 }
}

过滤器,用来格式化数据,比如将字符串格式变成大写,将日期格式变化为指定的格式等

Vue.filter('过滤器名称', function(value) {
 // 过滤器业务逻辑
})


// 过滤器的使用
<div> {{msg | upper}} </div>
Vue.filter('upper', function(val) {
 return val.chatAt(0).toUpperCase() + val.slice(1);
})

生命周期,一个Vue实例从创建、运行到销毁期间总是伴随着各种各样的事件,这些事件,就是Vue实例的生命周期

常见的生命周期函数:创建前,此时还没有初始化好data和methods属性

创建后,此时data和methods已经在内存中创建完成,但是还没有开始编译模板

挂载前,此时已经完成了模板的编译,但是还没有挂载到页面中显示

挂载,此时将已经编译好的模板,挂载到了页面指定的容器中显示

更新前,数据更新前,此时data中的状态值是最新的,但是页面上显示的数据还是旧的,因为此时还没有开始重新渲染DOM节点

更新后,data中的状态值和界面上显示的数据,都已经完成了更新,界面已经被重新渲染好了

销毁前,实例仍完全可用

销毁后,事件监听被移除,子实例也会被销毁

3、Vue中父子组件的传值的方式有几种?它们有什么数据上的限制

父组件向子组件,props,子组件向父组件,emit

4、项目中用了vue组件传值的方式有哪些

props、emit

依赖注入,provide,inject,在祖先组件中增加provide,在子组件中增加inject,这种方法允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深

通过父链/子链进行数据传递(parent,children)

5、项目中用到的组件

elementUi echarts

6、浏览器输入url到渲染网页的过程

7、Vue数据双向绑定

Vue是采用数据劫持结合发布/订阅者模式的方式,通过Object.defineproperty()来劫持各个属性的setter和getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

首先要对数据进行劫持监听,我们需要设置一个监听器Observer来监听所有的属性,如果属性发生变化了,就需要告诉订阅者Watcher看是否需要更新。因为订阅者有很多个,所以需要一个消息订阅器Dep来专门收集这些订阅者,然后再监听器和订阅者之间进行统一管理。接着我们还需要一个指令解析器COmpiler,对每个节点元素进行扫描和解析,将相关指令(如v-model,v-on)对应初始化为一个订阅者Watcher,并替换模板数据或者绑定相应的函数,此时当订阅者Watcher接收到相应属性的变化,就会执行对应的更新函数,从而更新视图。

Vue2.0响应式数据存在缺陷

无法监听对象属性的动态添加和删除,无法监听到数组下标和length长度的变化,解决方法$get,$get,$delete

什么数组下标复制和对象新增属性不会被拦截到。为什么vue3中换proxy实现了。

实际上Object.defineProperty本身是可以监控到数组下标的变化的,只是在Vue的实现中,从性能体验的性价比考虑,就放弃了这个特性

object.defineProperty只是劫持静态对象的属性,而Proxy是直接代理对象,由于Object.definProperty只能对属性进行劫持,需要遍历对象的每个属性,如果属性也是对象的话,则需要深度遍历,而Proxy直接代理对象,不需要遍历操作

Object.defineProperty对新增属性需要手动进行observe,

由于 Object.defineProperty劫持的是对象的属性,所以新增属性时,需要重新遍历对象,
    对其新增属性再使用 Object.defineProperty 进行劫持。

也正是因为这个原因,使用 Vue 给 data 中的数组或对象新增属性时,
需要使用 vm.$set 才能保证新增的属性也是响应式的。
如果采用 proxy 实现,Proxy 通过 set(target, propKey, value, receiver) 拦截对象属性的设置,是可以拦截到对象的新增属性的。

8、Vue-Router

vue的单页面应用是基于路由和组件的。路由用于设定访问路径,并将路径和组件映射起来,传统的页面应用是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,实际上就是组件的切换。不能像原来一样直接使用a标签呢?因为我们一般用vue做的都是单页面应用,只有一个主页面index.html,所以a标签时不起作用的。

路由传参可分为两种

query和params来实现

query如何实现传参

通过在router-link或者this.$router.push()传递。在地址栏传递拼接?传递参数

然后再页面通过this.$router.query.id来接收

优点,通用性比较好,刷新数据不会消失

params如何实现传参

也是通过router-link里面或者this.$router.push()传递

在地址栏传递使用/来进行拼接

然后在页面通过this.$route.params.id 接收
router-link、this.roter.push、this.router.go()、this.router.replace

路由守卫是什么?

导航路由守卫就是路由跳转前、中、后过程中的一些钩子函数,这个函数能让你操作一些其他的事情,这就是路由守卫

导航守卫分为:全局的、组件内的、单个路由共享三种

全局的特点是所有配置路由的组件都会触发

全局路由的钩子函数包括beforeEach(),在路由跳转前触发,参数包括to,from,next三个,这个钩子函数主要用于登录验证,跳转前触发

afterEach()也是路由跳转后触发

路由独享的,指单个路由配置的时候也可以配置钩子函数

组件内的,指在组件内执行的钩子函数,类似于组件内的生命周期,组件内的钩子函数,beforeRouterEnter,路由进入组件之前调用,beforeRouterUpdate,路由改变时,beforeRouterLeave离开时

9、EventLoop,在nodejs中的EventLoop是如何什么样的。

js单线程

步骤一、从script代码开始,到script代码结束,按顺序执行所有代码

步骤二、在步骤一顺序执行代码的过程中,如果遇到同步任务,立即执行,然后继续执行后续代码,如果遇到异步任务,将异步任务交给对应的模块处理(事件交给事件处理线程,ajax交给异步HTTP请求线程),当异步任务到达触发条件以后将异步任务的回调函数推入任务队列(宏任务推入宏任务队列,微任务推入微任务队列)。

步骤三、步骤一结束后,说明同步代码执行完毕。此时读取并执行微任务队列中保存的所有微任务

步骤四、步骤三完成后读取并执行宏任务队列中的宏任务,每执行完一个宏任务,就去查看微任务队列中是否有新增的微任务,如果存在则重复执行步骤三;如果不存在继续执行下一个宏任务,

宏任务:settimeout、settimerval

微任务:promise await


10为什么要使用less、sass,其与css3相比有哪些优势

为了提示开发效率,使得css编写更加灵活

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

恒生面试准备 的相关文章

  • iOS图片的填充方式UIImageView(contentMode)有什么不同

    UIViewContentModeScaleAspectFit 这个图片都会在view里面显示 xff0c 并且比例不变 这就是说 如果图片和view的比例不一样 就会有留白如下图1 图1 UIViewContentModeScaleAsp
  • windows 下包管理工具vcpkg安装

    主要参考博文 xff1a vcpkg安装及使用 我叫电池的博客 CSDN博客 vcpkg安装 由于需要在离线环境下面搭建开发环境 xff0c 所有的包只能离线安装了 xff0c 包括这个管理工具vcpkg的安装 xff0c 也必须是离线安装
  • 【Python】如何发布编写好的Python应用程序之Python Release for Windows(附踩坑经验)

    运筹优化博士 xff0c 只做原创博文 更多关于运筹学 xff0c 优化理论 xff0c 数据科学领域的内容 xff0c 欢迎关注我的知乎账号 xff1a https www zhihu com people wen yu zhi 37 最
  • ubuntu 下更改docker的默认位置

    首先查看docker位置 xff1a docker info 原先的位置默认应该都在 var lib docker 停止docker服务 systemctl stop docker 查看量大容的位置 xff0c 然后在上面创建转移目录文件夹
  • 编译 NDK 编译 freerdp 转载:测试成功

    最近著名的开源rdp客户端freerdp的android版本终于出来了 xff0c 经过9个月的跳票终于release了第一版 下面简单说说编译的过程 这个是需要用到cmake来编译 xff0c 所以系统推荐用ubuntu或者mac xff
  • 1.VMWare-Ubuntu-内存不足处理办法 2.VMWare-Ubuntu-扩展内存后黑屏解决办法

    问题描述 xff1a 1 VMWare Ubuntu 内存不足 2 VMWare Ubuntu 扩展内存后黑屏 解决办法 xff1a 详情参考文章https www cnblogs com codingdog p 14879313 html
  • Linux目录解释

    bin bin是binary 二进制 的缩写 这个目录是对UNIX系统习惯的沿袭 xff0c 存放着使用者最经常使用的命令 例如 xff1a cp ls cat boot 这里存放的是启动LINUX时使用的一些核心文件 dev dev是de
  • 数据库的插入更新语句

    目的 xff1a 实现在数据库插入数据的时候 xff0c 只对重复的数据进行更新 xff1b 实现方式 xff1a 1 在表中建立一个唯一索引 xff0c 主键 xff08 已有唯一索引的特性 xff09 2 在插入数据 sql语句 xff
  • Linux安装Yapi

    需求 xff1a 按公司需求 xff0c 前后端开发 xff0c 由于过往开发都是后端先进行 xff0c 前端须等后端开发玩接口 xff0c 依照开发文档才能进行接口调试 xff0c 大大增加了项目时间 xff0c 故采用YAPI来作为解决
  • mysql8.0 安装 修改密码 允许远程连接

    mysql从5 7一下子跳跃到了8 0 xff0c 其中的改变还是很大 xff0c 有点这里就不说了 xff0c 小伙伴们自己去百度了解一下 xff0c 这里重点说一下 xff0c 安装的事 1 解压后 xff0c 文件下下面是没有my i
  • IOS开发入门之二——第一个App

    如果你对怎么开始IOS开发都不懂的话 xff0c 请看点下面的链接 xff0c 先学习关于IOS开发环境的配置以及Swift语言入门 xff1a IOS开发入门之一 Swift语言基础 本章将教大家创建一个标准的苹果手机应用并让它在手机模拟
  • IOS开发入门之五——storyboard的使用(上)

    需要iOS开发视频资料可以加我微信 1914532832 验证信息请注明 xff1a IOS开发 上节介绍了纯代码开发 xff0c 就是所有页面全部用代码来写 xff0c 纯代码开发缺点就是比较慢的 xff0c 而且很不直观 xff0c 需
  • UILabel文字内容自动换行

    UILabel视图其实是可以显示多行文本的 xff0c 但是如果不做设置 xff0c UILabel默认是显示一行的 xff0c 并且如果文字内容太多 xff0c 超过屏幕的部分就显示不出来了 其实UILabel设置多行文本很简单 xff0
  • 谈谈android的动画

    android动画为app提供更丰富 更绚丽的视觉效果 xff0c 因此app或多或少都会添加动画效果 在此总结一下 xff0c 本人android开发过程中 xff0c 有关动画的内容 一 android动画种类和区别 android动画
  • android好用的第三方库2018使用总结

    需要android开发视频资料可以加我微信 1914532832 验证信息请注明 xff1a android开发 不知不觉2018年已经过了大半 xff0c 来总结一下今年用到的一些好用的框架和第三方库 xff0c 包括App架构 异步通信
  • Linux(debian7)操作基础(四)之CPU频率调整

    在Linux中 xff0c 内核的开发者定义了一套框架模型来完成CPU频率动态调整这一目的 xff0c 它就是CPU Freq系统 如下为CPU的几种模式 xff08 governor参数 xff09 xff1a ondemand xff1
  • ubuntu oh-my-zsh

    简单说明下shell bash zsh sh shell是一个用C语言编写的程序 xff0c 是一种脚本编程语言 xff0c 是一个连接内核和用户的软件 xff0c 是用户使用Linux的桥梁 shell是指一种应用程序 xff0c 这个应
  • 获取携程机票信息(爬虫)

    仅供个人学习使用 xff01 2022 01 01 版 span class token comment 64 author AIslandX span span class token comment 64 date 2022 01 01
  • Ubuntu下~/.bashrc文件的恢复方法

    问题描述 如果不小心在更改环境变量文件 bashrc时出现将文件内容覆盖的情况 xff0c 比如echo hello world gt bashrc没有使用添加模式而是覆盖模式 xff0e NOTE xff1a 非覆盖情况下 xff0c 不

随机推荐

  • Debian11 普通用户启动Wireshark没有权限

    普通用户启动 wireshark 报错 xff0c 没有权限 可以在终端使用 sudo wireshark 启动 解决方法如下 xff1a 1 添加wireshark用户组 sudo groupadd wireshark 2 将dumpca
  • 批量创建txt文本

    最近在进行html学习时 xff0c 用的编辑器是txt文本 xff0c 但每次都要新建文本 xff0c 比较麻烦 xff0c 所以打算创建多个文本 批量创建文件方法 xff1a 1 打开Excel表格 输入以下内容 可以利用excel的特
  • 文本相似度计算工具类

    package com xxxx xclouddesk utils import cn hutool core collection CollUtil import cn hutool extra tokenizer Result impo
  • c++20 ranges库

    ranges库在对元素进行逐一操作或者判断时可以省掉很多循环体 xff0c 使代码的可读性提高 例如 xff0c 要从一个vector中拿出所有的偶数并求平方并逆序排列 xff0c 生成一个新的vector xff0c 以前这样写 xff1
  • Linux : nano: command not found

    nano command not found 这是因为在Linux中没有安装nano而已 我们只需要安装一下就好了 安装命令 yum install nano 遇到选择 一路Y就行了
  • 【Shotcut】用最短路径编辑一个视频

    目录 一 图解最短路径二 新建工程三 导入素材四 编辑视频4 1 图片素材拖入时间线 xff0c 自动添加V1视频轨道4 2 视频素材拖入图片素材后面4 3 时间线添加音频轨道4 4 音频素材拖入音频轨道 xff0c 和视频素材左端对齐4
  • 【Shotcut】画中画_调整大小位置

    目录 一 大小画中画1 1 新建工程1 2 导入素材1 3 将一个视频拖入时间线 xff0c 自动创建V1轨道1 4 Ctrl 43 I 新建V2轨道 xff0c 将另一个视频拖入1 5 将两段视频剪齐1 6 对上面的V2轨道添加Size
  • Docker安装mysql 8 忽略表名大小写,通过命令修改my.cnf配置文件,无需进容器重新初始化数据库

    看了很多博客都是需要先启动容器再进容器内部修改my cnf 重新初始化数据库 xff0c 然而DockerHub直接就对容器启动时设置了my cnf的修改方式 xff0c 具体步骤简单如下 xff1a 官方参考链接 xff1a https
  • 解决 Windows 10 自带虚拟机运行 Ubuntu 18.04 卡顿的问题

    来源 xff1a A guide how to run Ubuntu 18 04 in Enhanced Mode in Hyper V 系统要求 控制端 xff1a Windows 10 xff0c 1803以及之后 受控端 xff1a
  • linux常用命令command not found的解决方案(自己整理)

    1 ifconfig command not found 是因为没有安装此命令包 xff0c 安装方法 xff1a yum install net tools2 sz和rz文件上传命令command not found 执行 xff1a w
  • Window7升级 PowerShell

    一 查看当前PowerShell版本 1 命令行输入powershell 2 命令行输入get host 二 下载新版PowerShell xff08 下载说明 xff1a https docs microsoft com zh cn po
  • MSE(均方误差)函数和RMSE函数

    本文链接 xff1a https blog csdn net qq 36512295 article details 86526799 MSE xff08 均方误差 xff09 函数一般用来检测模型的预测值和真实值之间的偏差 训练集 xff
  • PSNR-峰值信噪比(原理及Python代码实现)

    本文链接 xff1a https blog csdn net leviopku article details 84586446 PSNR的全称为 Peak Signal to Noise Ratio xff0c 直译为中文就是峰值信噪比
  • matlab向量的模

    向量 v 中的元素 v1 v2 v3 vn xff0c 下式给出其幅度 xff1a v 61 v12 43 v22 43 v32 43 43 vn2 MATLAB中需要采按照下述步骤进行向量的模的计算 xff1a 采取的矢量及自身的积 xf
  • 图像阶梯效应

    图像阶梯效应现象产生原因 在利用二阶偏微分方程进行平滑图像过程中 xff0c 有时会出现 阶梯效应 或者是 块效应 即图像处理后某些区域内灰度相同 区域内灰度相同 xff0c 表示该区域任意一点其灰度值的一阶导数为0 这说明随着迭代次数增加
  • 邻接矩阵

    逻辑结构分为两部分 xff1a V和E集合 xff0c 其中 xff0c V是顶点 xff0c E是边 因此 xff0c 用一个一维数组存放图中所有顶点数据 xff1b 用一个二维数组存放顶点间关系 xff08 边或弧 xff09 的数据
  • JavaScript

    1 a 任何数值除以0都会导致错误而终止程序执行 但是在JavaScript中 xff0c 会返回特殊的值 xff0c 因此不会影响程序的执行 比0大的数除以0 xff0c 会得到无穷大 xff0c 所以js用infinity来x显示出来
  • -操作系统

    1进程同步的引入背景 xff1a 在多道程序环境下 xff0c 进程是并发执行的 xff0c 不同进程之间存在这不同的相互制约关系 为了协调进程之间的相互制约关系 xff0c 引入了进程同步的概念 2在有n个进程共享一个互斥段 xff0c
  • -网络基础

    1 物理层 xff1a RJ45 CLOCK IEEE802 3 xff08 中继器 集线器 网关 xff09 数据链路 xff1a PPP FR HDLC VLAN MAC xff08 网桥 xff0c 交换机 xff09 网络层 xff
  • 恒生面试准备

    目录 1 flex布局 2 vue的特性有哪些 xff1f 3 Vue中父子组件的传值的方式有几种 xff1f 它们有什么数据上的限制 4 项目中用了vue组件传值的方式有哪些 5 项目中用到的组件 6 浏览器输入url到渲染网页的过程 7