春招遇到的前端面试问答汇总(字节、腾讯、阿里、美团)——自己总结,建议保存

***http 和 https 区别

1.https协议需要到ca(电子认证服务,是指为电子签名相关各方提供真实性、可靠性验证的活动。)申请证书,一般免费证书较少,因而需要一定费用。

2.http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。(非对称加密)

3.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4.http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

***非对称加密和对称加密的区别

1、加密和解密过程不同

对称加密过程和解密过程使用的同一个密钥,加密过程相当于用原文+密钥可以传输出密文,同时解密过程用密文-密钥可以推导出原文。但非对称加密采用了两个密钥,一般使用公钥进行加密,使用私钥进行解密。

2、加密解密速度不同

对称加密解密的速度比较快,适合数据比较长时的使用。非对称加密和解密花费的时间长、速度相对较慢,只适合对少量数据的使用。

3、传输的安全性不同

对称加密的过程中无法确保密钥被安全传递,密文在传输过程中是可能被第三方截获的,如果密码本也被第三方截获,则传输的密码信息将被第三方破获,安全性相对较低。

非对称加密算法中私钥是基于不同的算法生成不同的随机数,私钥通过一定的加密算法推导出公钥,但私钥到公钥的推导过程是单向的,也就是说公钥无法反推导出私钥。所以安全性较高。

***实现一定时间内事件只触发一次
$(function(){

var timeoutflag = null;

$('#inputAddress1').click(function() {

if(timeoutflag != null){

clearTimeout(timeoutflag);

}

timeoutflag=setTimeout(function(){

dosomething();//此处是一个会请求远程的ajax 异步操作;

},500);

});

function dosomething(){

alert(1);

}

});

***输入 url 到网页显示的具体过程

  • 1、输入网址
  • 2、DNS解析
  • 3、建立tcp连接
  • 4、客户端发送HTPP请求
  • 5、服务器处理请求
  • 6、服务器响应请求
  • 7、浏览器展示HTML
  • 8、浏览器发送请求获取其他在HTML中的资源。

***js 怎么解析的

1 : 全局检索。查看是否有语法错误--->语言分析

2:创建全局对象GO(global)--->预编译

3:执行每行代码 对变量进行赋值 等操作 --->解析执行 ---> 变量一旦创建;不能删除,除非关闭程序。(window对象在打开页面时候创建;先创建window在语言分析)

***3 次握手

第一次

第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。 

第二次

第二次握手:服务器收到syn包,必须确认客户端的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。 

第三次

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。 

完成三次握手,客户端与服务器开始传送数据

***data-name、data-age 等 HTML5 自定义属性

data-*实际上上就是data-前缀加上自定义的属性名,使用这样的结构可以进行数据存放。使用data-*可以解决自定义属性混乱无管理的现状。

data-*有两种设置方式,可以直接在HTML元素标签上书写

<div id="test" data-age="24">

        Click Here

    </div>

data-age就是一种自定义属性,当然我们也可以通过JavaScript来对其进行操作,HTML5中元素都会有一个dataset的属性,这是一个DOMStringMap类型的键值对集合

var test = document.getElementById('test');

        test.dataset.my = 'Byron';

***script 是什么(脚本)

短小的、用来让计算机自动化完成一系列工作的程序

在网站前端编程的语境下,脚本通常是指在浏览器里运行的小程序,就像剧本一样,它可以用来控制网页上的各种图文该怎么表演给你看

***defer 和 async 的区别

没有 defer 或 async,浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行。

1.有 async,加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行(异步)。

2.有 defer,加载后续文档元素的过程将和 script.js 的加载并行进行(异步),但是 script.js 的执行要在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成。

***DOM 事件流的顺序

DOM事件流包括三个阶段。

事件捕获阶段

处于目标阶段

事件冒泡阶段

事件冒泡即事件开始时,由最具体的元素接收(也就是事件发生所在的节点),然后逐级传播到较为不具体的节点。 

事件捕获的概念,与事件冒泡正好相反。它认为当某个事件发生时,父元素应该更早接收到事件,具体元素则最后接收到事件。 

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>Event Bubbling</title>

</head>

<body>

  <button id="clickMe">Click Me</button>

</body>

</html>

然后,我们给button和它的父元素,加入点击事件

var button = document.getElementById('clickMe');

button.onclick = function() {

  console.log('1. You click Button');

};

document.body.onclick = function() {

  console.log('2. You click body');

};

document.onclick = function() {

  console.log('3. You click document');

};

window.onclick = function() {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摆烂第一名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值