面试题

一、dns域名解析服务器:

比如你要浏览baidu.com这个网站,你在浏览器输入这个域名,dns服务器就会把该域名解析成对应的ip地址,并且定位到该ip地址。服务商自动帮你完成!

类似Windows中C:\Windows\System32\drivers\etc的host文件
在这里插入图片描述

二、http和https的区别:

(1)私钥和公钥是成对的,它们互相解密:

1、公钥加密,私钥解密:我把一个文件发送到网上,使用我的公钥进行加密,别人偷看不了,因为只有我的私钥才可以解密,仅本人查看。
2、私钥加密,公钥解密(多用于数字签名,验证是否本人发送):能够用我的公钥解密的内容,必然是使用了我的私钥,私钥只有我知道,姑且这个内容是我本人发送的。

(2)什么是http协议:
直译:超文本传输协议,位于四层模型中的应用层
在这里插入图片描述
(3)https是怎样进行加密的:
在这里插入图片描述

1、 客户端请求服务端https://baidu.com网站
2、 服务端返回一个公钥key1
3、 浏览器验证该公钥,是安全网站,客户端就随机生成一个对称加密的密钥key,并使用服务端的公钥key1对客户端的密钥key进行加密,发送给服务端
4、 服务端就可以利用非对称加密的私钥key1解开公钥key1加密的内容,最终获得客户端密钥key
5、 服务端就可以使用客户端的密钥key进行加密并回传给客户端,客户端使用密钥key解密,就得到最终内容!

即使中间有任何人截获了其中的公钥,没有私钥,也解不开其中的内容,从而保证客户端密钥key的安全,不被破解。

(4)但即使做到这样,也不是很安全:

有可能被偷天换日,黑客充当服务端
上述第1步,服务端返回的公钥就被黑客截获,黑客生成一对公私钥,并把公钥返回给用户。

用户拿到这个公钥以为是服务端的,生成一对密钥,用了黑客的公钥进行加密,并返回给服务器。

返回的时候,再次被黑客截获,黑客使用自己的私钥进行解密,便获得了用户的密钥

黑客再使用服务端的公钥对用户的密钥进行加密,并传递回去给服务端。

这样一来,虽然双方都使用了对称加密,但是黑客已经掌握了该用户的密钥,就可以轻松解密!!!

(5)为了防止黑客冒充服务端,就需要引入第三方,一个权威的证书颁发机构(CA)来解决。

三、VPN正向代理

VPN,全称:Virtual Private Network虚拟专用网络,用于在公用网络上建立专用网络,进行通讯加密(正向代理)

内部ip地址,这些ip地址不会被网络分配的,c类常用的地址:192.168.0.0-192.168.255.255

VPN网关一般采用双网卡结构,内网卡接入内部局域网,外网卡使用公共ip接入Internet。

1、 客户端首先通过vpn网关A,被检测到是访问服务端的内部ip地址
2、 于是vpn网关将该数据包①进行封装,同时构造一个新的vpn数据包②(含有服务端的外部ip地址)。原数据包①作为vpn数据包②的负载
3、 vpn网关A把vpn数据包②递送到外网Internet中
4、 根据vpn数据包②的外网ip地址,可以准确的找到服务端的vpn网关B
5、 vpn网关B对接收到的数据包②进行检查,确定是内部人员发送,就开始对其进行解包,包头剥离,将负载通vpn技术反向处理还原成原始的数据包①
6、 最后vpn网关B把该数据包①发送至目标服务端的内部ip地址,完成!

正向代理(代理客户端):用户请求代理服务器,代理服务器访问服务端获取数据,并把数据返回给用户。服务端不知道用户是否存在,只知道代理服务器的访问!!!例:vpn

反向代理(代理服务端):用户请求代理服务器,再转发到真实服务器,之后返回给代理服务器,最后由代理服务器反回到用户。用户不知道真实服务器的存在!!!例:Nginx

四、负载均衡

1、HTTP重定向:
在这里插入图片描述
用户访问服务端的时候,服务端会返回一个真实的ip地址放在HTTP响应头中,用户收到该响应头,再去重新访问真实的ip地址。

缺点:用户需要访问两次、HTTP重定向会使搜索引擎判定为SEO作弊,降低搜索排名

2、DNS域名解析:
在这里插入图片描述
用户通过域名访问服务端的时候,被dns服务器解析成某个ip地址,可能对应多个ip地址,每次得到不同的ip地址从而实现负载均衡!

缺点:dns服务器和真实服务器完全分开的,如果真实服务器运行状态发生改变,ip地址不可用,则会导致访问失败!
事实上,大型网站都将DNS负载均衡作为第一级的负载均衡手段,在服务器内部再进行第二级的负载均衡!

3、反向代理:

在这里插入图片描述

当用户访问时,代理服务器转发到真实服务器,真实服务器也通过反向代理服务器返还数据。注意:内部服务器不对外部提供服务,所以不需要外部IP。
而反向代理服务器需要两个网卡,一个IP用于外部用户访问使用,另外一个用于内部使用。

缺点:
反向代理服务器用户处理所有的请求和响应,其性能可能成为服务器集群的瓶颈
Nginx就是其中一个反向代理服务器

4、IP层的负载均衡:
IP数据包:
在这里插入图片描述

负载均衡服务器对请求过来的用户,进行修改目的ip地址访问真实服务器;返回数据的源地址修改为负载均衡服务器的ip地址。
就这样,通过修改ip数据包的源地址和目的地址实现负载均衡
缺点:对于一些视频网站不是很友好,非常大的吞吐量导致网卡带宽的限制!
在这里插入图片描述
5、链路层的负载均衡:
在这里插入图片描述
MAC地址:mac地址是与网卡相关,其编号只与网卡生产厂商和流水号有关,基本上可以作为每台电脑的“身份证”。以太网中数据帧之间是通过MAC寻址来到达对应的计算机网卡或者路由的

链路层的负载均衡通过修改帧数据包中的MAC地址来达到转发的目的

这种方法,所有的真实服务器和负载均衡服务器都有相同的IP地址,不用修改IP数据包的目的地址和源地址,只通过修改MAC地址就可以达到效果,因为请求的IP地址和实际处理的真实服务器的IP地址一致,所以不需要回到负载均衡服务器进行地址交换,可以将响应直接发会给用户浏览器,避免了负载均衡服务器成为传输瓶颈的可能

五、类和对象的区别

我是一个对象;
男人是一类。

六、内网和外网ip

Ip地址分类:
A类: 0.0.0.0 - 127.255.255.255
B类:128.0.0.0 - 191.255.255.255
C类:192.0.0.0 – 223.255.255.255
D类:224.0.0.0 – 239.255.255.255
E类:240.0.0.0 – 247.255.255.255

Ip地址中,有三段专门用于私网的,不被用于互联网的连接
A类: 10.0.0.0 – 10.255.255.255
B类:172.16.0.0 – 172.31.255.255
C类:192.168.0.0 – 192.168.255.255

七、数据库索引

一、 什么叫做索引?
索引就好像是图书的目录,根据目录中的页码快速找到所需要的内容!!!

二、哪些情况下需要建立索引?
1、 主键自动建立唯一索引
2、 频繁查询的字段
3、 查询与其他表有关联的字段
4、 查询中,并且需要排序的字段(提高排序速度)
5、 查询中,并且需要统计或者分组的字段(提高统计或分组速度)
6、 高并发情况下选择复合索引

三、哪些情况不建立索引?
1、频繁更新的字段,因为每次更新记录,还会更新到索引,保存索引文件
2、where条件里用不到的字段
3、表记录太少
4、经常增删改
5、数据大量重复,例如一些性别的字段,只有男女

八、什么是链表?

1、数据的增加和删除都较为方便,查询比较耗费时间。
2、增加数据:只需要改变添加位置前后的指针指向就可以,非常简单。比如,在 Blue 和 Yellow 之间添加 Green
在这里插入图片描述

在这里插入图片描述
3、删除数据:只要改变指针的指向就可以,比如删除 Yellow。
在这里插入图片描述
虽然 Yellow 本身还存储在内存中,但是不管从哪里都无法访问这个数据,所以也就没有特意去删除它的必要了。今后需要用到 Yellow 所在的存储空间时,只要用新数据覆盖掉就可以了。

4、那么对链表的操作所需的运行时间到底是多少呢?

在这里,我们把链表中的数据量记成 n。查询数据时,我们需要从链表头部开始查找(线性查找),如果目标数据在链表最后的话,需要的时间就是 O(n)比较耗时!!!

另外,添加数据只需要更改两个指针的指向,所以耗费的时间与 n 无关。如果已经到达了添加数据的位置,那么增加操作只需花费 O(1)的时间删除操作同样也只需 O(1)的时间比较省时!!!

九、什么是hashmap?

数组:存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1)。特点是:查询容易,插入和删除困难

链表:存储区间离散,占用内存比较宽松,故空间复杂度很小。但时间复杂度很大,达O(N)。链表的特点是:查询困难,插入和删除容易

hashmap就是实现了查询和修改效率高,插入和删除效率也高的一种数据结构!!!
在这里插入图片描述
数据结构由数组+链表组成,一个长度为16的数组中,每个元素存储的是一个链表的头结点。那么这些元素是按照什么样的规则存储到数组中呢。一般情况是通过hash(key.hashCode())%len获得,也就是元素的key的哈希值对数组长度取模得到。比如上述哈希表中,12%16=12,28%16=12,108%16=12,140%16=12。所以12、28、108以及140都存储在数组下标为12的位置。

十、在jdk1.8中,hashmap加入了红黑树

1、当链表达到长度达到8的时候,就自动转换为红黑树!
2、当你插入数据时候,则需要平衡红黑树,就会有节点转变为红色、黑色,或者左旋转、右旋转,使树达到平衡!
3、祖宗根节点必黑允许黑连黑不允许红连红新增红色。爸叔通红就变色,如不平衡则需旋转。爸红叔黑就旋转,哪黑往那旋。

4、自底向上,V要去到P的位置,左旋转:
在这里插入图片描述
5、自底向上,F要去到P的位置,右旋转:
在这里插入图片描述
6、总结一句话,根据红黑树的特性进行旋转或者变色即可!!!
7、删除数据的时候,若某个节点下存在两个或一个子节点。可以把树末节点代替回去,然后再进行旋转和变色即可!!!如果删除的是树末节点,直接删除即可!!!
在这里插入图片描述
8、例子(插入数据):
(1)插入21
在这里插入图片描述
(2)将17左旋上去成为根节点
在这里插入图片描述
(3)左旋转之后:
在这里插入图片描述
(4)进行变色,黑可以连黑,红不能连红
在这里插入图片描述
(5)将8右旋转上去:
在这里插入图片描述
(6)右旋转之后:
在这里插入图片描述
(7)变色,黑可以连黑,红不能连红
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值