首页 > Shopee技术一面面经
头像
冲阿!打工人!
编辑于 2021-08-04 19:52
+ 关注

Shopee技术一面面经

1、自我介绍
算法:
环状链表判断是否存在环
算出环的长度
找到环的结合点(入口)
HashMap的put过程,详细过程
HashMap是否线程安全
HashMap的扩容是按照2的N次幂增大,此设计的原因
ConcurrentHashMap了解吗,它里面使用了什么保证线程安全的操作
CAS说一下原理以及优点缺点
ABA问题怎么解决
怎么设计一个乐观锁
给了一段用CAS实现的单例模式代码(AtomicReference<Singleton>),解释一下是否有问题
代码大概是这样,希望哪位大佬可以分享一下这里的问题在哪
---------------------------------------------------------------------------------------
想出来了 害。。。
问题出现在if语句,线程A可能刚要执行if语句的CAS,然后就被切回线程B,B完成CAS并且赋值,又切回线程A,A进行CAS发现不为null,就不进入if的执行语句,但result依然是前面获取的还未初始化的null
----------------------------------------------------------------------------------------
public class Singleton {
    private AtomicReference<Singleton> instance = new AtomicReference<>();

    public Singleton getSingleton(){
        Singleton result = instance.get();
        if(instance.compareAndSet(null,new Singleton())){
            result = instance.get();
        }
        return result;
    }
    
}
快速排序的复杂度是O(NlogN),解释一下复杂度为什么是NlogN?最好的情况是什么样的?最坏的?
匿名内部类是否可以访问外部的变量,非final的行不行,为什么
static关键字,修饰的范围,被static修饰的变量是存储在哪(内存结构方面)
了解什么设计模式,在哪看过使用这些设计模式
TCP三次握手为什么不是两次或四次?
四次挥手为什么不是三次?
Java的线程状态有哪些?
线程可以start两次吗?
了解过wait和sleep吗?区别是什么

暂时只记得这些了

更多模拟面试

全部评论

(2) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐