阿里一面笔记

没答上来的问题

01

Q: dubbo他内部的通信协议是什么?
A: 不知道

事后: 太深了,以后慢慢来吧.

02

Q: 万一我们数据库操作成功了,但是返回给客户端的时候网络波动了,应该怎么办
A: 答的乱七八糟…

事后: 白井姐姐: 返回的时候,如果网络波动了,没有合法的关闭连接的话,服务端会察觉到,察觉到的话就回滚…
wasup: 用PUT方法

03

Q: 依赖注入详细点是如何做的?bean互相依赖,应该怎么办?
A: 不知道…

事后: 好像是什么,三重缓存?

04

Q: 成绩表,找出三门课以上不及格的同学,写出sql
A: 子查询中先查出所有同学不及格科目的数量,子查询外面将超过三个的筛选出来.
Q: 有没有不用子查询的方法?
A: 答的乱七八糟…

事后: 用having字句…

05

Q: 联合查询
A: 懵逼

事后: 再看看联合索引吧…

06

Q: 项目使用的事务隔离级别?
A: ReadCommitted
Q: ReadCommitted有什么问题?
A: 幻读

事后: 落了不可重复读…

07

Q: JDBC属于哪层网络协议?
A: 不知道…

08

Q: 根据hash计算在桶中的位置的时候,为什么要前16位与后16做异或运算?
A: 不做异或运算啊,他做与运算

事后: 我是傻逼,当时脑子蒙了

09

Q: concurrentHashMap取出来的东西一定是我们想要的吗?
A: 不是,但是想不到这个场景了…

事后: 如果一个线程把某个键删了,另一个线程再取会出错.

10

Q: volatile一定是安全的吗?
A: 不是,忘记这个场景了…
A: 需要保证我们的操作的原子性.
Q: 有什么场景?
A: 比如有一个数,我们多个线程加它
Q: 如何保证原子性?
A: 使用J.U.C.atomic.atomicInteger
Q: 他内部是怎么实现原子性的呢?
A: 不好意思我没了解到那么深入

事后: 应该大胆一点,答加锁的.
回去又翻了一下深入理解jvm,讲到了我们一个int的加法,虽然代码是看只有一行,即使编译出来只有一条字节码指令,这条指令在解释器里面也可能需要转换成若干条本地机器指令,所以不能保证原子性,要加锁.

11

Q: 有什么问题要问我的?
A: 巴拉巴拉…

事后: 应该把上面不会的问题再挨个问一遍?

emm

自己还是理论上的知识比较看重…问的项目里的**怎么**的都有点力不从心.

emmm

2019年8月10日19:58:52
挂了
ali-00-liangliang.png

很多东西,感觉都是因为是刚学的,还没有完全融入自己的思想,还需要更多的沉淀.

  • 应对面试时,不会的问题一定要好好思考.
    比如,这次阿里面的场景题:如果返回数据的时候网络波动了怎么办,和问AtomicInteger内部原理的时候
  • 自以为会的问题也不要张口就来,做好容错.
    比如,这次问"bean是不是new出来的",当时回的"是",虽然后来又补了句"不他是由processor初始化才",但没说到点子上(指反射),这种时候应该先答"我想一下",不能被问题牵着鼻子走
1
@RequestHeader(value="token") String token
1
2
3
4
Long operatorId = redisTool.getUserIdByToken(token);
if(operatorId.equals(-1L)){
return ErrorEnum.VERIFY_FAILED.getResult();
}