
网易互娱一面(4.1)
发现每次计网把之前被拷打的学完后,又有新的东西被拷打得怀疑人生😅 OS的内容倒是问的相对少一些(我也会的不多,求放过😭😭😭) ### 项目拷打 1. redis在线用户表如何维护
异步推送的机制
如何索引重建,重建加什么锁
八股
java hashmap,concurrenthashmap怎么加锁
- ConcurrentHashMap
- 加锁:基本是在桶上(table数组的一个结点)加自旋锁
- 扩容
- 引入了迁移结点ForwardingNode:一个桶被迁移后,把该结点标记为ForwardingNode(key,value均为null,hash值为MOVED(-1),但提供了新table的指向)
- 扩容的核心是transfer迁移方法,
- 第一个执行transfer会创建一个新nextTable
- 对于每个执行transfer的线程,会分配其把旧table的一段连续桶迁移到新table
- put:如果put的桶是MOVED状态,则执行helpTransfer去帮忙扩容,否则锁桶然后去插入元素
- get:如果get的桶是MOVED状态,说明数据已经迁移到新table,去新table查找,否则查找旧table
- ConcurrentHashMap
java反射,反射获取的对象能访问私有成员吗
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42Class<Test> c = Test.class;
try {
/**
* getDeclaredXXX:获取所有级别函数/字段,非public级别需要设定setAccessible(true)才能使用
* getXXX:获取public级别的
*/
//获取私有带参构造函数、私有字段、私有方法
Constructor<Test> constructor = c.getDeclaredConstructor(int.class, String.class);
constructor.setAccessible(true);
Field filed = c.getDeclaredField("filed");
filed.setAccessible(true);
Method print = c.getDeclaredMethod("print",String.class);
print.setAccessible(true);
//测试私有构造函数/方法/字段
Test now = constructor.newInstance(666, "张三");
//调用时需要传入实例对象,后面附带方法参数
System.out.println(filed.get(now));//张三
print.invoke(now,"llllla");//haha: llllla
filed.set(now,"李四");
System.out.println(filed.get(now));//李四
} catch (Exception ex) {
System.out.println(ex);
}
class Test {
public int val;
private String filed;
private void print(String s) {
System.out.println("haha: "+s);
}
public Test() {}
private Test(int v, String s) {
val = v;
filed = s;
}
}spring aop
浏览器访问一个地址的全过程(结合4层模型讲)
ip传输中间网络不可达,发送请求的客户端如何被通知到
- icmp
https加密原理
为什么TCP 是面向字节流的,UDP 是面向报文的。
- TCP 是面向字节流的(将应用层报文以字节流划分为多个tcp段,每个段都有自己的tcp头部)
- UDP 是面向报文的(应用层报文之用一个upd头部修饰,分片交给ip)
tcp发送报文时,是同时发送多个seq包过去,服务端一个一个ack,还是必须等待服务端ack才发送下一个
OS物理地址和虚拟地址的理解
缺页中断
linux文件权限怎么表示
- chmod:指定文件权限(可以用ls -l [文件名] 命令来看到文件的权限)
- 使用10个字符标识权限
- 第一个字符声明文件类型:-普通文件,d目录,l链接,p命名管道文件等
- 第24,57,8~10个字符分别声明文件所有者权限(user),所属组权限(group),其他用户权限(others)
- rwx,分别表示可读,可写,可执行(不具备相应权限用-表示,如rw-表示具有读写权限)
- 也可以使用数字简写(r=4,w=2,x=1),比如chmod 777 file 使得所有用户对文件均具有读、写、执行权限
- 使用10个字符标识权限
- chmod:指定文件权限(可以用ls -l [文件名] 命令来看到文件的权限)
算法
topk
A文件10GB,B文件10GB,内存空间256MB,求A-B的结果
- 外部归并排序