面试常见基础问题(前后端通用)

1. 状态存储:

  • token:
    令牌,是用户身份的验证方式。
    最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)
  • session:
    会话,代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续。
    cookie中存放着一个sessionID,请求时会发送这个ID;
    session因为请求(request对象)而产生;
    session是一个容器,可以存放会话过程中的任何对象;
    session的创建与使用总是在服务端,浏览器从来都没有得到过session对象;
    session是一种http存储机制,目的是为武装的http提供持久机制。
  • cookie:
    储存在用户本地终端上的数据,服务器生成,发送给浏览器,下次请求统一网站给服务器。

2. 同源策略:

所谓同源是指"协议+域名+端口" 三者相同,即便两个不同的域名指向同一个 ip 地址,也非同源。
它是浏览器最核心也最基本的安全功能,现在所有支持 JavaScript 的浏览器都会使用这个策略。如果缺少了同源策略,浏览器很容易受到 XSS、 CSFR 等攻击。


3. 跨域:

当一个请求在浏览器端发送出去后,服务端是会收到的并且也会处理和响应,只不过浏览器在解析这个请求的响应之后,发现不属于浏览器的同源策略(地址里面的协议、域名和端口号均相同)也没有包含正确的 CORS 响应头,返回结果被浏览器给拦截了。

CORS 将请求分为了两类:简单请求(不发送OPTIONS)和非简单请求(如果请求头的 Content-Type 为 application/json 就会触发 CORS 预检请求,这里也会称为 “非简单请求”)

预检请求是在发送实际的请求之前,客户端会先发送一个 OPTIONS 方法的请求向服务器确认,如果通过之后,浏览器才会发起真正的请求,这样可以避免跨域请求对服务器的用户数据造成影响。


4. HTTP和HTTPS的基本概念:

HTTP请求报文由3部分组成: 请求行+请求头+请求体
header: 主要存放Cookie,token,Content-Type文件类型,User-Agent浏览器标识
body: 主要存放post表单数据,json数据
HTTP:端口80,是互联网上应用最为广泛的一种网络协议 ,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:端口443,简单讲就是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详情内容就需要SSL;主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。
区别

1. HTTPS协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2. HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
3. HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输,
身份认证的网络协议,比HTTP协议安全。

在这里插入图片描述


5. tcp udp区别:

1. TCP面向连接,UDP无连接;
2. TCP可靠传输,使用流量控制和拥塞控制,UDP不可靠传输;
3. TCP只能一对一通信,UDP支持一对一,一对多,多对多
4. TCP面向字节流,UDP面向报文
5. TCP首部最小20字节最大60字节,UDP首部仅8字节
6. TCP可靠传输的应用,如:文件传输,UDP适用于实时应用,如:IP电话、视频会议、直播

6. websocket:

1.默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽。
2.可以发送文本,也可以发送二进制数据。
3.没有同源限制,客户端可以与任意服务器通信。

7. docker和普通虚拟机的区别:

1. 虚拟机更擅长于彻底隔离整个运行环境。
2. Docker通常用于隔离不同的应用。

8. *内核态和用户态:

用户态到内核态切换可以通过三种方式:

1. 系统调用,如:库函数, shell脚本。其实系统调用本身就是中断,但是软件中断,跟硬中断不同。
2. 异常:如果当前进程运行在用户态,如果这个时候发生了异常事件,就会触发切换。
例如:缺页异常。
3. 外设中断:当外设完成用户的请求时,会向CPU发送中断信号。

9. *IO多路复用:

select poll 找代理,轮询询问代理。
select: 1. 单线程, 轮询检查IO是否有事件, 效率较低;
        2. 用户空间和内核空间的复制非常消耗资源;
        3. fd_set(监听的端口个数):32位机默认是1024个,64位机默认是2048。

poll: 1. 将读、写、异常分开检测; 
      2. 采用链表的方式替换原有fd_set数据结构,而使其没有连接数的限制。

epoll 找代理,代理接收到主动询问(事件驱动)。
epoll: 将读、写、异常在一个阻塞操作中执行
epoll的两种工作方式:1.水平触发(LT)2.边缘触发(ET) 
LT模式:若就绪的事件一次没有处理完要做的事件,就会一直去处理。即就会将没有处理完的事件继续放回到就绪队列之中(即那个内核中的链表),一直进行处理。 
ET模式:就绪的事件只能处理一次,若没有处理完会在下次的其它事件就绪时再进行处理。而若以后再也没有就绪的事件,那么剩余的那部分数据也会随之而丢失。 
由此可见:ET模式的效率比LT模式的效率要高很多。只是如果使用ET模式,就要保证每次进行数据处理时,要将其处理完,不能造成数据丢失,这样对编写代码的人要求就比较高。 
注意:ET模式只支持非阻塞的读写:为了保证数据的完整性。

10. *为什么需要TIME_WAIT:

1. 防止被动关闭方的延迟数据被人窃取
2. 防止被动关闭方没有收到最后的ACK

11. *进程的调度算法有哪些:

先来先去服务
时间片轮转法
短作业优先
多级反馈队列调度算法
优先级调度

12. 虚拟内存和物理内存的关系是什么:

1. 虚拟内存使得应用程序认为它拥有一个连续的地址空间,而实际上,它通常是被分隔成多个物理内存碎片,
还有一部分存储在外部磁盘存储器上,在需要时进行数据交换。
2. 虚拟内存可以让程序可以拥有超过系统物理内存大小的可用内存空间。
虚拟内存让每个进程拥有一 片连续完整的内存空间。

13. 操作系统的内存管理机制:

1. 块式管理: 将内存分为几个固定大小的块,每个块中只包含一个进程。
2. 页式管理: 把主存分为大小相等且固定的一页一页的形式
3. 段式管理: 
4. 段页式管理: 

14. 对称加密算法和非对称加密算法:

1. 对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,
典型的对称 加密算法有DES、AES等;
2. 非对称密钥加密:加密和解密使用不同的密钥,运算速度慢,
典型的非对称加密算法有RSA、DSA等
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值