美团二面(凉凉)
美团(二面):
1.输出
Integer i0 = new Integer(300);
Integer i1 = new Integer(300);
int i2 = 300;
System.out.println(i0 == i1);//false
System.out.println(i0.equals(i1));//true
System.out.println(i0 == i2);//true
2.有一条记录,一个人查询到它是10,然后将他减1得到9,另一个也查询到10,然后他也减一得到9,怎么避免?
(题意:假如A,B同时查询到了数据10,但是两个对他的修改时间不同,那么即便A修改了为9,但是B是不知道的,所以B将记录减1,得到的也是9)
乐观锁和悲观锁**
乐观锁:
CAS:假如A,B同时查询到了数据10,但是两个对他的修改时间不同,那么即便A修改了为9,但是B是不知道的,所以B将记录减1,得到的也是9,引入CAS的话,B在修改这个值的时候,先去对比一下有没有发生改变,没有发生改变再去做修改,否则就重新读取。
悲观锁:
默认这条记录是会发生改变,所以有读写操作的时候上来就加锁,比如排他锁,这样别的事务就无法读到数据,所以从根源避免了问题。(不知道理解的对不对)
事务:
可重复解决
3.项目里Kafka怎么用的?
4.数组中重复次数最多的三个元素?
5.表中包含id,order,type
查询各个类型中id最大的order
1.输出
Integer i0 = new Integer(300);
Integer i1 = new Integer(300);
int i2 = 300;
System.out.println(i0 == i1);//false
System.out.println(i0.equals(i1));//true
System.out.println(i0 == i2);//true
2.有一条记录,一个人查询到它是10,然后将他减1得到9,另一个也查询到10,然后他也减一得到9,怎么避免?
(题意:假如A,B同时查询到了数据10,但是两个对他的修改时间不同,那么即便A修改了为9,但是B是不知道的,所以B将记录减1,得到的也是9)
乐观锁和悲观锁**
乐观锁:
CAS:假如A,B同时查询到了数据10,但是两个对他的修改时间不同,那么即便A修改了为9,但是B是不知道的,所以B将记录减1,得到的也是9,引入CAS的话,B在修改这个值的时候,先去对比一下有没有发生改变,没有发生改变再去做修改,否则就重新读取。
悲观锁:
默认这条记录是会发生改变,所以有读写操作的时候上来就加锁,比如排他锁,这样别的事务就无法读到数据,所以从根源避免了问题。(不知道理解的对不对)
事务:
可重复解决
3.项目里Kafka怎么用的?
4.数组中重复次数最多的三个元素?
5.表中包含id,order,type
查询各个类型中id最大的order
查询各个类型中最大的Id。
6.面试官:我看你本科和研究生阶段成绩挺好的,为啥笔试成绩不太好,能解释一下吗?(我……)
(面试的时候脑子一片空白,场景那里完全没明白面试官的意思,所以先扯加行级锁,面试官说你这针对的是高并发,我又说事务的可重复读,没得到回应,然后我以为错了,我说读已提交应该就行,后来他说,事务的话可重复读可以,然后说,你想想乐观锁,悲观锁。当时理解错他问的。
然后sql的话语法细节不对,平时不怎么写。
算法也写的马马虎虎。)
总之,这次彻底凉透,UU们都是怎么在面试的时候大脑不空白的,复盘的时候就觉得,其实好像也没有很难。哭。
#美团暑期实习##美团##面经#