"面经"
面试经验分享涉及到多个技术知识点,包括WebSocket与HTTP的区别、WebSocket与HTTP的联系、HTTP与HTTPS的区别、JavaScript中的async与await以及CSS中的rem与em单位。
1. WebSocket与HTTP的区别:
- 含义:WebSocket是一种在单一TCP连接上建立全双工通信的协议,而HTTP是一个基于TCP的简单传输-响应协议,通常是单向通信。
- 连接方式:WebSocket需要浏览器和服务器通过握手协议建立连接,而HTTP由浏览器发起连接请求,服务器被动响应。
- 连接长度:WebSocket保持持久连接,而HTTP是短连接,尽管可以通过Ajax和长轮询模拟长连接,但本质上仍是短连接。
- 连接状态:WebSocket是双向有状态的连接,而HTTP是无状态的单向连接。
- 协议标识:WebSocket的URL以ws或wss开头,HTTP则对应http或https。
2. WebSocket与HTTP的联系:
- 基础:两者都基于TCP协议,具有良好的兼容性。
- 错误处理:在连接建立过程中,它们对错误的处理方式相似。
- 连接模型:它们都采用Request/Response模型建立连接,但WebSocket在建立连接后能持续双向通信。
3. HTTP与HTTPS的区别:
- 安全性:HTTPS是HTTP的安全版本,使用SSL/TLS加密,提供数据传输的安全保障,而HTTP不加密,数据传输可能存在被窃取的风险。
- 协议标识:HTTP的URL以http开头,HTTPS的URL以https开头。
4. JavaScript中的async与await:
- `async`关键字用于定义一个函数为异步函数,它返回一个Promise对象。这使得异步操作可以被封装在函数内部,便于管理。
- `await`关键字用于在异步函数中等待Promise的解决。当Promise解决时,`await`表达式的结果就是Promise的结果,随后函数会继续执行。
5. CSS中的rem与em单位:
- `rem`(root em)是相对于根元素(通常是html元素)的字体大小单位,用于创建统一的布局。
- `em`是相对于父元素的字体大小单位,这可能导致元素的大小随着其父元素大小的变化而变化,有时会导致计算复杂。
这些面试中的知识点涵盖了网络协议、前端开发和CSS布局,是现代Web开发中不可或缺的基础知识。理解和掌握这些概念对于开发高效、安全且用户体验良好的Web应用至关重要。