知识点梳理

101 阅读3分钟

1.for循环和forEach的区别?

  • for循环本质是一种循环机制,只能通过循环遍历数组;foreach其实是一个迭代器(使用next()方法返回对象),负责遍历可迭代的对象;
  • for循环中可使用contine,break进行循环中断,foreach会报错;
  • foreach循环内部删除自身元素,index不可被重置
  • for循环可以控制循环的起点
  • 性能方面for>foreach,for循环没有额外的函数调用栈和上下文,所以它的实现最为简单。forEach它的函数签名中包含了参数和上下文,所以性能会低于for循环。

2. Java迭代器Iterator和Iterable有什么区别?

  • Iterable是一个的接口,实现该接口的集合能够使用for-each循环遍历对象,此接口只有一个方法:iterator(),该方法返回在当前集合元素上进行迭代的迭代器,通过迭代器的hasNext()和next()方法判断是否存在对象和获取存在的对象。

3. 什么是jwt?

  • JWT , 全写JSON Web Token, 是开放的行业标准RFC7591,用来实现端到端安全验证.简单来说, 就是通过一些算法对加密字符串和JSON对象之间进行加解密。JWT加密JSON,保存在客户端,不需要在服务端保存会话信息,可以应用在前后端分离的用户验证上,后端对前端输入的用户信息进行加密产生一个令牌字符串, 前端再次请求时附加此字符串,后端再使用算法解密。

4. 谈谈为什么要限流,限流的方案有哪些?

  • 限流是一种常见的应用程序保护机制,用于控制对系统或接口的访问速率,主要作用:保护系统稳定性、防止恶意攻击、提供公平的网络环境等。

实现限流的方式:

  • 判断是否有相同的请求,可以通过自身缓存挡住相同请求
  • 用负载均衡,比如nginx
  • 用缓存数据库,把热点数据get到缓存中,redis,ES

5.HTTPS 是如何保证传输安全的?

  • HTTP 协议是一种基于文本的传输协议,它位于 OSI 网络模型中的应用层,HTTP 协议中的报文都是以明文的方式进行传输,不做任何加密,所以是非常的不安全的。既然内容是明文那我使用对称加密的方式将报文加密,但其实在通讯过程中还是会以明文的方式暴露加密方式和秘钥,如果第一次通信被拦截到了,那么秘钥就会泄露给中间人,可以采用非对称加密,将秘钥进行加密不让中间人看到。
  • HTTPS 其实是SSL+HTTP的简称,其实SSL协议使用非对称加密,握手的过程中主要也是为了交换秘钥,然后再通讯过程中使用对称加密进行通讯,大概流程如下:

图片 使用CA 认证体系,防止中间人攻击的。

6.WebSocket 和 Socket 及 Http 的区别?

  • TPC/IP协议是传输层协议,主要解决数据如何在网络中传输;
  • Socket是对TCP/IP协议的封装和应用(程序员层面上);
  • 而HTTP是应用层协议,主要解决如何包装数据。

7.ElasticSearch是什么?应用场景是什么?

ElasticSearch是一个分布式,高性能、高可用、可伸缩的搜索和分析系统,可以进行全文检索、全文检索,结构化检索,数据分析,对海量数据进行近实时的处理。

8.ElasticSearch是什么?应用场景是什么?