高频面试题

简介: 高频面试题

animation 和 transition 的定义动画的区别?

animation 可以用 name 设置动画的名称,用 duration 设置动画完成的周期,用 timing-function 设置动画的速度曲线,delay 设置动画什么时候开始,iteration-count 设置动画播放的次数,direction 规定下一个周期是否逆向的播放,play-state 动画是否正在进行或者暂停,fill-mode 设置动画停了之后位置什么状态

transition 用 property 去设置过渡效果的属性名称,duration 设置过渡效果的周期,timing-function 规定速度效果的速度曲线,delay 设定过渡效果什么时候开始

区别:

1、transition 是过渡,是样式值的变化的过程,只有开始和结束;animation 其实也叫关键帧,通过和 keyframe 结合可以设置中间帧的一个状态;

2、animation 配合 @keyframe 可以不触发时间就触发这个过程,而 transition 需要通过 hover 或者 js 事件来配合触发;

3、animation 可以设置很多的属性,可设置 循环次数,动画结束的状态等等,transition 只能触发一次;

4、animation 可以结合 keyframe 设置每一帧,但是 transition 只有两帧

5、在性能方面:浏览器有一个主线程和排版线程;主线程一般是对 js 运行的、页面布局、生成位图等等,然后把生成好的位图传递给排版线程,而排版线程会通过 GPU 将位图绘制到页面上,也会向主线程请求位图等等;我们在用使用 aniamtion 的时候这样就可以改变很多属性,像我们改变了 width、height、postion 等等这些改变文档流的属性的时候就会引起,页面的回流和重绘,对性能影响就比较大,但是我们用 transition 的时候一般会结合 tansfrom 来进行旋转和缩放等不会生成新的位图,当然也就不会引起页面的重排了

canvas和svg有什么区别?

Canvas和SVG是html5中支持2种可视化技术,都是可以在画布上绘制图形和放入图片。

什么是 Canvas

Canvas 是H5新出来的标签,利用JavaScript在网页绘制图像

在标签中给上宽高: 不用加单位

如果在css中给宽高 会对图像造成拉伸 (默认宽高300px*150px)

通过获取绘制工具getContext(“2d”) 来在画布中绘制图形。

什么是SVG?

SVG 可缩放矢量图形(Scalable Vector Graphics),基于可扩展标记语言XML 出来的时间比较老

SVG 用来定义用于网格的基于矢量的图形。

Canvas 和 SVG 区别?

  • 绘制的图片格式不同
Canvas 的工具getContext 绘制出来的图形或传入的图片都依赖分辨率,能够以 .png 和 .jpg格式保存存储图像,
 可以说是位图,SVG 可以在H5中直接绘制,但绘制的是矢量图。由于位图依赖分辨率,矢量图不依赖分辨率,
 所以Canvas和SVG的图片格式的不同实际上是他们绘制出来的图片的格式不同造成的。
  • Canvas不支持事件处理器,SVG支持事件处理器
Canvas 绘制的图像 都在Canvas这个画布里面,是Canvas的一部分,不能用js获取已经绘制好的图形元素

  • 在控制台中可以看到canvas标签里面是没有单独的长方形存在的
  • Canvas就像动画,每次显示全部的一帧的内容,想改变里面某个元素的位置或者变化需要在下一帧中全部重新显示。
    而SVG绘图时,每个图形都是以DOM节点的形式插入到页面中,可以用js或其他方法直接操作。

微信小程序的支付流程?

主要就是以下几个方面

线下支付
公众号支付
小程序支付
pc网站支付
手机app支付
企业内部使用微信资金流动

支付流程的理解

  • 第一步——进入小程序,下单
这一步是用户通过客户端中的按钮实现的,当用户点击支付按钮后,就会向后台发送一个“请求下单的支付”的请求。
  • 第二部——请求下单的支付
这一步是后台接“收到请求下单的支付”向微信服务器发送小程序登录的api请求,微信小程序后台收到请求之后。返回
 给后台一个openid
  • 第三步——生成 商户订单
在后台生成商户订单后,这个商户订单包括了支付类型,金额,识别用户,和商户信息,
 后台又将订单作为参数,调用微信后台的调用支付统一下单api方法,微信服务器处理后返回给后台预付单的信息。

第四步——将组合数据进行签名

后台接收到了返回的预付单的信息对这些信息进行再次加密返回给前端,前端这时候监听到了后端返回的数据后,利用这些数据调用wx.pay()
的方法,然后再用用户页面弹出确认支付的弹框。

第五步——用户确认支付

接下来的一些操作就都是由用户来操作的包括微信支付密码、指纹验证,确认支付之后执行鉴权调起支付服务。

第六步——鉴权调起支付

没有与后台进行交互,直接在微信后台进行鉴权,微信后台直接返回给前端支付结果,前端收到返回数据后对支付结果进行展示。

第七步——推送支付结果

微信后台在给前端返回支付的结果后,会向后台也返回一个支付结果,后台通过这个支付结果来更新订单的状态

.history模式和hash的区别?

.history模式

history模式利用了HTML5 History lnteface中新增的pushState和replaceState(方法,MDN相关介绍(需要特定浏览器支持)。这两方法应用于浏览器的历史记录栈,提供了对历史记录进行修改的功能。只是当他们进行修改时,虽然修改了url,但浏览器不会立即向后端发送请求当使用histoy模式时,url就像正常的url 例htp:/abc.com/userid相比hash模式更加好看,特别注意,history模式需要后台配置支持,如后台没有正确配置,访问时会返回404.

通过history api,我们丢弃了丑陋的#,但是有一个缺点,当刷新时,如果服务器中相应的资源,会分分钟刷出一个404来(刷新需要请求服务器)。所以history模式不怕前进,不怕后退,就怕刷新。

hash模式和history模式相比较

pushstate() 设置新的ur可以是和当前url同源的任意url;hash只可修改#后面的部分,只能设置当前url同文档的ur.

pushstate()设置的新ur可与当前ur一致,这样也会把记录添加到栈中; hash必须设置与当前ur不同的ur的,才会触发动作将记录济加到栈中。

pushstate() 通过stateObiect参数可以添加任意类型的数据到记录中; hash只可添加短字符串

pushstate() 可额外设置title属性供后续使用。不过,hash模式也有比history模式优势的地方

hash 模式下,仅hash符号之前的u会被包含在请求中,后端如果没有做到对路由的全覆盖,也不会返回404错误.

history 模式下,前端的ur必须和实际向后端发起请求的ur一致,如htp://abc.com/userid,后端如果没有对user/id的路由处理,将返

回404错误。


相关文章
|
算法 Java 数据安全/隐私保护
App逆向百例|12|某电商App Sign分析
App逆向百例|12|某电商App Sign分析
1487 0
|
机器学习/深度学习 TensorFlow 算法框架/工具
YOLOv11改进策略【注意力机制篇】| 引入MobileNetv4中的Mobile MQA,轻量化注意力模块 提高模型效率
YOLOv11改进策略【注意力机制篇】| 引入MobileNetv4中的Mobile MQA,轻量化注意力模块 提高模型效率
794 0
|
算法 安全 网络安全
Diffie-Hellman (DH) 算法的工作原理
【8月更文挑战第23天】
3008 0
|
API C++
exosip 和 pjsip 简介
oSIP  oSIP的开发开始于2000年7月,第一个版本在2001年5月发 布,到现在已经发展到3.x了。它采用ANSI C编写,而且结 构简单小巧,所以速度特别快,它并不提供高层的SIP会话 控制API,它主要提供一些解析SIP/SDP消息的API和事务处理 的状态机,oSIP的作者还开发了基于oSIP的UA lib:exosip和 proxy server lib:partysip.
4544 0
|
存储 安全 Linux
Linux存储安全:深入实践与案例分析
【8月更文挑战第18天】Linux存储安全是一个多层次、多维度的问题,需要从物理安全、访问控制、数据加密、审计监控、系统更新、备份策略等多个方面综合考虑。通过本文介绍的具体措施和案例代码,读者可以更好地理解如何在Linux系统中实施存储安全措施。安全是一个持续的过程,需要不断地评估、更新和改进策略。
361 0
|
传感器 物联网 SoC
嵌入式系统中I2C总线通信基本方法(上)
嵌入式系统中I2C总线通信基本方法(上)
825 0
EasyExcel读取文件的问题:Convert excel format exception.You can try specifying the ‘excelType‘ yourself
EasyExcel读取文件的问题:Convert excel format exception.You can try specifying the ‘excelType‘ yourself
|
Java API
Java中常用API总结(4)—— Object类(含实例解读和源码阅读)
Object类所在包是java.lang包,Object 是类层次结构的根,每个类都可以将 Object 作为超类。所有类都直接或者间接的继承自该类;换句话说,该类所具备的方法,其他所有类都继承了。
385 0
Java中常用API总结(4)—— Object类(含实例解读和源码阅读)
|
机器学习/深度学习 人工智能 自然语言处理
年度回顾 | 从九大国际AI顶会接收论文一窥ML算法趋势(上)
本文节选自机器之心《2021-2022年度 AI科技发展趋势报告 · 研究篇》,详细数据及分析过程在完整报告中进行收录。报告将于2022年开春正式发布,点击阅读原文获得免费获取报告机会。
622 0
年度回顾 | 从九大国际AI顶会接收论文一窥ML算法趋势(上)

热门文章

最新文章