又看的阿里云几道面经


跨子网通信问题

网关会读取数据包中的目的IP,并根据目的IP进行转发,在转发时数据包中的目的IP不变,但数据帧中的源MAC地址和目的MAC地址都会发生变化。源MAC地址变为网关的发送接口的MAC地址,而目的地址可能是B主机的MAC或是下一个路由器的接口MAC。这就是不同子网的单向通信过程。

TIME_WAIT

  • 允许老的重复报文在网络中消逝
  • 保证TCP连接的正确关闭

数据库三大范式

每列保持原子性,如地址省市要分开。

每列都和主键相关,如订单号和商品号的联合主键,价格不与表主键相关。

每列都和主键直接相关,而不是间接相关,如订单表中,订单号为主键,就不能有客户的联系方式信息。

左连接、右连接、内连接

内连接:只有匹配的行才能显示

左连接:左边的表不加限制,右表没有就null。

全连接:所有的表都没有限制。

image-20220301103245854

String问题

// 从字符串常量池中拿对象
String str1 = "abcd";
// 直接在堆内存空间创建一个新的对象。
String str2 = new String("abcd");
String str3 = new String("abcd");
System.out.println(str2==str3); // false

String s1 = new String("abc")创建了几个字符串对象?

会创建 1 或 2 个字符串:

  • 如果字符串常量池中已存在字符串常量“abc”,则只会在堆空间创建一个字符串常量“abc”。
  • 如果字符串常量池中没有字符串常量“abc”,那么它将首先在字符串常量池中创建,然后在堆空间中创建,因此将创建总共 2 个字符串对象。

引用计数

效率高,循环引用问题。

image-20220301102513164

NIO

面向缓冲、非阻塞、选择器。

缓存击穿

热点key,大并发访问时redis缓存失效。

zookeeper分布式锁

image-20220301104222165

一个客户来,就会创建一个对应的节点,判断自己是不是最小的序号,如果不是就获取锁失败,转而监听前面序号的节点是不是还在。

做两道题

判断链表有环

组合问题

01背包不可重复选取、完全背包可以重复选取。

01外池内倒标。

for(int num : nums){
    for(int i = target; i >= num; i--){               
        dp[i] = dp[i] + dp[i - num];
    }
}

完全排列外正标内池

完全组合外池内正