面试题(五)

devtools/2024/9/23 8:25:56/
http://www.w3.org/2000/svg" style="display: none;">

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

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

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

https_16">41、https握手过程

httpsDNS_18">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 服务等措施可以有效提高安全性。

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

44、TCP和UDP的区别

45、死锁的条件

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

47、线程和进程


http://www.ppmy.cn/devtools/115911.html

相关文章

【C++】继承(上)

个人主页~ 继承 一、继承的概念以及定义1、继承的概念2、继承的定义(1)定义格式(2)继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承中的作用域 一、继承的概念以及定义 1、继承的概念 继承机制是面向对象程序…

使用git命令

git add . git commit -m "commit message" 拉取 git pull origin <branch-name> 推送 git push origin <branch-name> 创建新分支 git branch <new-branch-name> # 切换到新分支 git checkout <new-branch-name> 合并分支 git mer…

react + antDesign封装图片预览组件(支持多张图片)

需求场景&#xff1a;最近在开发后台系统时经常遇到图片预览问题&#xff0c;如果一个一个的引用antDesign的图片预览组件就有点繁琐了&#xff0c;于是在antDesign图片预览组件的基础上二次封装了一下&#xff0c;避免重复无用代码的出现 效果 公共预览组件代码 import React…

【开源免费】基于SpringBoot+Vue.JS服装商城系统(JAVA毕业设计)

本文项目编号 T 046 &#xff0c;文末自助获取源码 \color{red}{T046&#xff0c;文末自助获取源码} T046&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…

Java接口详解

目录 &#x1f54a;接口&#x1f334;1.概念引入&#x1f334;2.语法规则&#x1f334;3.特性&#x1f334;4.使用&#x1f33b;5.实现多个接口&#x1f33b;6.接口间的继承&#x1f33b;7.接口使用实例&#x1f33b;8.抽象类和接口的区别 &#x1f54a;接口 &#x1f334;1.概…

uniapp map设置高度为100%后,会拉伸父容器的高度

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…

github demo网页制作

demo网页制作 1.创建一个空项目 2.上传编辑好的文件到本地服务器 3.申请一个token 4.本地项目夹下执行 git init git add --all git commit -m ‘first try’ git remote add origin https://github.com/username/reponame.git git push -u origin master 这个时候需要输入用…

Django 基础之启动命令和基础配置

Django启动 django启动一般可以通过ide或者命令启动 ide启动&#xff1a; 启动命令&#xff1a; python manage.py runserver该命令后续可以增加参数&#xff0c;如&#xff1a; python manage.py runserver 8081 python manage.py runserver 127.0.0.1:8082 注意&#xff1…