猿辅导现场一面凉经
1. 1. 自我介绍,问项目
2. 2. Java线程池说一下,参数有哪些,拒绝策略
3. 3. Java中的锁说一下,synchronized引入的哪些优化,我说到CAS时问我,CAS造成的ABA问题怎么解决,我回答答:在变量前面加版本号,然后又问这个版本号是怎么加的比如1-2-1这样它怎么加版本号,这个我没打上,这个答案应该是java 1.5后jdk的Atomic包里提供了一个类AtomicStamedReference来解决ABA,这个类的compareAndSet方法的作用是首先检查当前引用是否等于预期引用,并且检查当前标志是否等于预期标志,如果全部相等,则以原子方式将该引用和该标志的值设置为给定的更新值。public boolean compareAndSet(V expectedReference,
V newReference,
int expectedStamp,
int newStamp)
4. 4. 写个算法吧设计一个会议预定系统,分为初始化函数init(int start,int end),预定函数boolean book(int start,int end)取消预定函数boolean cancel(int start,int end),比如初始化1,5如果预定1,2合法返回true,如果此时预定2,3不合法,另外取消预定比如此时我预定了1,3如果取消预定2,3最后1,3区间变成1。取消预定要判断取消是否合法,合法返回true。我一开始想到数组没预定就是0,预定的就是1,当预定的区间有1就预定失败。但是面试官说时间和空间复杂度太高。说时间可能是毫秒级的非常大区间非常长。最后在引导下我说可以用TreeMap然后区间能合并的就合并。最后我问面试官面评,给我的意见是基础不够深入(刚ABA问题版本号没答出来),javaAPI还不够熟悉(因为TreeMap那个说查找时说的不好),算法方面建模能力有待改进,比如我刚说这个问题时你想到数组,数组确实能实现,但你没想到以后的可扩展性,如果时间短很大什么的你一开始都没考虑到。好吧我太菜了难受。
刚快手hr小姐姐给打电话了声音太甜了,心都融化了,问我收到视频面试链接了没,我说我要申请去现场面试😏,小姐姐说可以呀回头我再联系你...
地
#猿辅导##快手##面经#