一面挂,四十五分钟。
- ✔ 编程题:URL combo - 字符串分割
- ✔ 编程题:统计网页中出现了几种HTML元素
- ❌ Array如何转化为Set
- ✔ 自我介绍,说一下学习和项目经历
- ✔ 为什么学习Flutter?Flutter优势何在?
- ✔ Flutter三棵树分别起什么作用?
- ❌ Flutter状态管理相关,子组件如何与父组件通信?
- ❌ Flutter如何与底层原生通信,如image_picker调用系统相机的原理?
- ❌ 说一下MQTT协议?有什么特性?为什么物联网用MQTT?MQTT是基于TCP还是UDP?
- ❌ 说一下 HTTP1.0 和 HTTP2.0 的区别
- ❌ 说一下前端工程化?Vite有什么优势?
- ✔ 为什么没有选择客户端开发?
- ✔ 未来规划读研还是就业?
编程题:URL combo - 字符串分割
1 | // 以下是天猫首页一个经过 combo 的 js 资源 url,请找出 combo 规律并用 js 写一个可复用的函数来解该 url,得到每个 combo 前的 url 地址。 |
编程题:统计网页中出现了几种HTML元素
一开始没写出来,因为我没法用DOM操作提取出HTML标签,后来面试官改成字符串:
1 | // 在一个网页中,用尽可能少的代码,计算出当前网页用了多少种 HTML 元素。 |
HTTP1.0 和 HTTP2.0的区别:
HTTP1.0:
- 单一请求-响应模式:每次请求-响应都需要建立一个新的TCP连接,这个过程包括三次握手,增加了延迟
- 无状态连接:每个请求都是独立的,服务器不维护客户端的状态
- 请求头和响应头冗余:每次请求都会发送完整的头部信息,导致数据冗余和效率低下
- 文本协议:所有的请求和响应都是基于文本的,解析速度相对较慢
- 有限的并发:因为每个请求都需要一个单独的TCP连接,浏览器通常限制同一域名下的并发连接数,通常是4到6个
HTTP2.0:
- 多路复用:实现了多路复用,允许在单个TCP连接上并发多个请求-响应对,从而减少了连接的数量和延迟
- 二进制协议:相对于HTTP/1.0的文本协议,HTTP/2.0采用二进制格式,解析更高效
- 头部压缩:使用HPACK压缩算法来减少头部信息的大小,从而减少带宽消耗
- 服务器推送:服务器可以主动向客户端推送资源,而无需客户端明确请求,这样可以减少延迟并提高性能
- 流优先级:客户端和服务器可以通过设置流优先级来优化资源的传输顺序
- 连接管理:更有效的连接管理机制,通过单个连接处理多个并发请求,减少了连接建立和维护的开销
- 改进的安全性:虽然HTTP/2.0可以在明文(HTTP)和加密(HTTPS)下工作,但通常与TLS(传输层安全协议)结合使用,以提供更好的安全性