又看的阿里云几道面经
跨子网通信问题
网关会读取数据包中的目的IP,并根据目的IP进行转发,在转发时数据包中的目的IP不变,但数据帧中的源MAC地址和目的MAC地址都会发生变化。源MAC地址变为网关的发送接口的MAC地址,而目的地址可能是B主机的MAC或是下一个路由器的接口MAC。这就是不同子网的单向通信过程。
TIME_WAIT
- 允许老的重复报文在网络中消逝
- 保证TCP连接的正确关闭
数据库三大范式
每列保持原子性,如地址省市要分开。
每列都和主键相关,如订单号和商品号的联合主键,价格不与表主键相关。
每列都和主键直接相关,而不是间接相关,如订单表中,订单号为主键,就不能有客户的联系方式信息。
左连接、右连接、内连接
内连接:只有匹配的行才能显示
左连接:左边的表不加限制,右表没有就null。
全连接:所有的表都没有限制。
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 个字符串对象。
引用计数
效率高,循环引用问题。
NIO
面向缓冲、非阻塞、选择器。
缓存击穿
热点key,大并发访问时redis缓存失效。
zookeeper分布式锁
一个客户来,就会创建一个对应的节点,判断自己是不是最小的序号,如果不是就获取锁失败,转而监听前面序号的节点是不是还在。
做两道题
判断链表有环
组合问题
01背包不可重复选取、完全背包可以重复选取。
01外池内倒标。
for(int num : nums){
for(int i = target; i >= num; i--){
dp[i] = dp[i] + dp[i - num];
}
}
完全排列外正标内池
完全组合外池内正