关于货拉拉的评价

(1条评价)
  • 笔试难度: 一般
  • 面试难度: 一般
  • 工作感受:
  • 头像
    拉拉货 前端 | 社招
    • 笔试难度:
    • 面试难度:
    • 工作感受: 很好
    自我介绍、工作经历 问题: HTML5有哪些更新 1、新增语义化标签: header:定义文档的页眉(头部); nav:定义导航链接的部分; footer:定义文档或节的页脚(底部); article:定义文章内容; section:定义文档中的节(section、区段); aside:定义其所处内容之外的内容(侧边); 音频、视频标签:audio、video 数据存储:localStorage、sessionStorage canvas(画布)、Geolocation(地理定位)、websocket(通信协议) input标签新增属性:placeholder、autocomplete、autofocus、required history API:go、forward、back、pushstate 2、script标签中defer和async的区别 defer 和 async属性都是去异步加载外部的JS脚本文件,它们都不会阻塞页面的解析,其区别如下: 执行顺序:多个带async属性的标签,不能保证加载的顺序;多个带defer属性的标签,按照加载顺序执行; 脚本是否并行执行:async属性,表示后续文档的加载和执行与js脚本的加载和执行是并行进行的,即异步执行;defer属性,加载后续文档的过程和js脚本的加载(此时仅加载不执行)是并行进行的(异步),js脚本需要等到文档所有元素解析完成之后才执行,DOMContentLoaded事件触发执行之前。 使用 async 标志的脚本文件一旦加载完成,会立即执行;而使用了 defer 标记的脚本文件,需要在 DOMContentLoaded 事件之前执行。 3、CSS中display:none与visibility:hidden的区别 这两个属性都是让元素隐藏,不可见。两者区别如下: 在渲染树中 display:none会让元素完全从渲染树中消失,渲染时不会占据任何空间; visibility:hidden不会让元素从渲染树中消失,渲染的元素还会占据相应的空间,只是内容不可见。 是否是继承属性 display:none是非继承属性,子孙节点会随着父节点从渲染树消失,通过修改子孙节点的属性也无法显示; visibility:hidden是继承属性,子孙节点消失是由于继承了hidden,通过设置visibility:visible可以让子孙节点显示; 修改常规文档流中元素的 display 通常会造成文档的重排,但是修改visibility属性只会造成本元素的重绘; 4、var、let、const 区别 所谓的变量提升,是指在 JavaScript 代码执行过程中,JavaScript 引擎把变量的声明部分和函数的声明部分提升到代码开头的“行为”。变量被提升后,会给变量设置默认值,这个默认值就是我们熟悉的 undefined。 var的创建和初始化被提升,赋值不会被提升。 let的创建被提升,初始化和赋值不会被提升。 function的创建、初始化和赋值均会被提升。 5、new的时候都做了哪些操作 new操作符的执行过程: 首先创建了一个新的空对象 设置原型,将对象的原型设置为函数的 prototype 对象。 让函数的 this 指向这个对象,执行构造函数的代码(为这个新对象添加属性) 判断函数的返回值类型,如果是值类型,返回创建的对象。如果是引用类型,就返回这个引用类型的对象。 6、JS中数据经常不准确,比如:为什么0.1+0.2 ! == 0.3,如何让其相等? let n1 = 0.1, n2 = 0.2 console.log(n1 + n2) // 0.30000000000000004 要想等于0.3,就要把它进行转化: (n1 + n2).toFixed(2) // 注意,toFixed为四舍五入 toFixed(num) 方法可把 Number 四舍五入为指定小数位数的数字。那为什么会出现这样的结果呢? 对于这个问题,一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3 function numberepsilon(arg1,arg2){ return Math.abs(arg1 - arg2) < Number.EPSILON; } 7、HTTP、HTTPS的区别 HTTPS协议需要CA证书,费用较高;而HTTP协议不需要; HTTP协议是超文本传输协议,信息是明文传输的,HTTPS则是具有安全性的SSL加密传输协议; 使用不同的连接方式,端口也不同,HTTP协议端口是80,HTTPS协议端口是443; HTTP协议连接很简单,是无状态的;HTTPS协议是有SSL和HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP更加安全。 8、HTTPS通信(握手)过程 客户端向服务器发起请求,请求中包含使用的协议版本号、生成的一个随机数、以及客户端支持的加密方法。 服务器端接收到请求后,确认双方使用的加密方法、并给出服务器的证书、以及一个服务器生成的随机数。 客户端确认服务器证书有效后,生成一个新的随机数,并使用数字证书中的公钥,加密这个随机数,然后发给服 务器。并且还会提供一个前面所有内容的 hash 的值,用来供服务器检验。 服务器使用自己的私钥,来解密客户端发送过来的随机数。并提供前面所有内容的 hash 值来供客户端检验。 客户端和服务器端根据约定的加密方法使用前面的三个随机数,生成对话秘钥,以后的对话过程都使用这个秘钥来加密信息。 9、安全、讲一下CSRF CSRF 攻击指的是跨站请求伪造攻击,攻击者诱导用户进入一个第三方网站,然后该网站向被攻击网站发送跨站请求。如果用户在被攻击网站中保存了登录状态,那么攻击者就可以利用这个登录状态,绕过后台的用户验证,冒充用户向服务器执行一些操作。 CSRF 攻击的本质是利用 cookie 会在同源请求中携带发送给服务器的特点,以此来实现用户的冒充。 防范 : 加验证码,手机验证码等等
    发表于 2021-09-01 19:16:23 赞 (0)