当前位置: 首页 > news >正文

面试题(五)

40、. 给定01字符串如01010011110,找出0和1个数相等的最长子串

要找出一个给定的 01 字符串中,0 和 1 个数相等的最长子串,可以使用以下算法:

方法
使用哈希表:我们可以使用哈希表来记录每个前缀和出现的位置,利用前缀和的差值来判断子串中 0 和 1 的数量是否相等。
前缀和定义:将字符串中的 ‘0’ 视为 -1,‘1’ 视为 +1。这样,如果某个子串的前缀和为 0,说明该子串中 0 和 1 的数量相等。
具体步骤
初始化一个哈希表 map,用于存储前缀和和其出现的最小索引。
遍历字符串,计算前缀和:
遇到 ‘0’,前缀和减 1。
遇到 ‘1’,前缀和加 1。
在遍历过程中:
如果当前前缀和为 0,更新最长子串的长度。
如果前缀和已经存在于哈希表中,计算当前索引和该前缀和的最小索引之间的距离,并更新最长子串的长度。
如果前缀和不在哈希表中,将其和当前索引存入哈希表。

41、https握手过程

42、https能否防住DNS攻击

HTTPS(超文本传输安全协议)主要用于加密数据传输,确保数据在客户端和服务器之间的安全性,但它并不能直接防御所有类型的 DNS 攻击。以下是 HTTPS 和 DNS 攻击之间的关系以及 HTTPS 能够提供的保护:

1. DNS 攻击类型

  • DNS 欺骗(DNS Spoofing):攻击者伪造 DNS 响应,将用户导向恶意网站。
  • DNS 劫持:攻击者劫持 DNS 查询,改变用户请求的目标地址。
  • 分布式拒绝服务攻击(DDoS):通过大量请求淹没 DNS 服务器,使其无法正常工作。

2. HTTPS 的保护

  • 数据加密:HTTPS 加密了传输的数据,保护了数据在传输过程中的机密性和完整性。即使用户被导向了恶意网站,HTTPS 也会加密与该网站的通信。
  • 服务器身份验证:HTTPS 使用 SSL/TLS 证书来验证服务器的身份,确保用户连接的是合法的服务器。这可以防止某些类型的钓鱼攻击。

3. HTTPS 的局限性

  • 无法防止 DNS 攻击:HTTPS 本身无法防止 DNS 欺骗或劫持攻击,因为这些攻击发生在用户解析域名到 IP 地址的过程中。用户仍然可能被引导到恶意网站。
  • 信任问题:如果攻击者能够成功实施 DNS 欺骗,用户可能仍然连接到一个看似合法的服务器,即使该服务器使用 HTTPS。攻击者可以使用合法的证书(通过某些手段)来伪装成合法网站。

4. 防御措施

为了增强对 DNS 攻击的防护,可以采取以下措施:

  • 使用 DNSSEC:DNS 安全扩展(DNSSEC)可以防止 DNS 欺骗,通过数字签名验证 DNS 响应的真实性。
  • 使用安全 DNS 服务:使用支持 DNSSEC 的公共 DNS 服务器(如 Google DNS 或 Cloudflare DNS)。
  • 实现 HSTS(HTTP Strict Transport Security):强制客户端仅通过 HTTPS 访问网站,减少通过 HTTP 访问的风险。
  • 启用 DoH 或 DoT:DNS over HTTPS(DoH)和 DNS over TLS(DoT)可以加密 DNS 查询,防止中间人攻击和监听。

总结

虽然 HTTPS 在数据加密和身份验证方面提供了重要的保护,但它并不能直接防止 DNS 攻击。为了全面防护,结合 DNSSEC 和安全 DNS 服务等措施可以有效提高安全性。

43、https能否防止中间人攻击

44、TCP和UDP的区别

45、死锁的条件

46、static的变量存在哪,内存模型

47、线程和进程


http://www.mrgr.cn/news/33748.html

相关文章:

  • 使用python-Spark使用的场景案例具体代码分析
  • Spring Validation参数校验
  • opencv常用api
  • 项目技术栈-解决方案-web3去中心化
  • 力扣 LeetCode 206. 反转链表(Day2:链表)
  • 【leetcode练习·二叉树】用「分解问题」思维解题 II
  • 110. 平衡二叉树
  • 高等数学——微分学
  • Linux:终端(terminal)与终端管理器(agetty)
  • 学习记录:js算法(四十一): 基于时间的键值存储
  • 鸿蒙OpenHarmony【轻量系统内核扩展组件(CPU占用率)】子系统开发
  • sftp登录ipv6用中括号 `sftp x@[ipv6]`
  • 2D目标检测常用loss
  • [Excel VBA]如何使用VBA自动生成图表
  • iOS 中 KVC 与 KVO 底层原理
  • 面试题(二)
  • Java--File
  • 【详细解答】指出下面指令的错误:IN AL,300H
  • 2024年 5 个优秀的Flutter图标库
  • CSS 选择器的分类与使用要点二
  • linux中vim编辑器的应用实例
  • 在Spring Boot中实现多环境配置
  • weak_from_this
  • 信息安全技术基础知识
  • vscode 顶部 Command Center,minimap
  • RuntimeError: Maximum Recursion Depth Exceeded - 递归深度超限的完美解决方案