背景:已经不打算面试了,就 随缘面面
4.14 16:00
1.自我介绍
2. 多线程怎么样,还行,说一下下面这个,会不会出现线程安全问题,怎么解决 //直接synchronized 2.模仿cas 脑子抽了,加了个锁;然后synchronized(o) 和synchronized(this)是不是一样,不同在哪
public class Test {
private int num = 50;
private final Object o = new Object();
public void get(int n) {
int x = num;
int r = x - n;
num = r;
}
}
private int num = 50;
private final Object o = new Object();
public void get(int n) {
int x = num;
int r = x - n;
num = r;
}
}
public class Test {
private int num = 50;
private final Object o = new Object();
public void get(int n) {
boolean bool =true;
while(bool){
int x = num;
int r = x - n;
synchronize(o){
if(x==num){
num = r;
bool=false;
}
}
}
}
}
3.redis,介绍了一下结构,zset的底层编码;压缩列表和跳跃表+字典分别是如何解决它的排序问题的
private int num = 50;
private final Object o = new Object();
public void get(int n) {
boolean bool =true;
while(bool){
int x = num;
int r = x - n;
synchronize(o){
if(x==num){
num = r;
bool=false;
}
}
}
}
}
3.redis,介绍了一下结构,zset的底层编码;压缩列表和跳跃表+字典分别是如何解决它的排序问题的
反问:如何高效阅读源码? 不一定非得从源码开始,可以看一些官方文档,搞清楚内部原理,比如保证有序 1.直接有序,插入得时候直接插入对于位置,2.append以后再排序 第一种插入慢一些,去的时候快 第二种插入快,你还是得做其他操作,所以弄清楚原理 方便你考量
总结:本来都结束了,就别浪,结果给拍死沙滩
全部评论
(1) 回帖