有赞面经(一面)—凉经
8.10号在牛客网上投了有赞的内推,期间收到邮件邀请在线笔试,约到8.18号下午3点-4点笔试,笔试其实不难,编程题也不难,都是些Leetcode上的简单题,奈何我算法菜啊,没做出来。。。但是,还是很幸运地收到了有赞的面试邀请,约在了24号晚上七点,也就是今晚。我早早回到寝室开始准备,7点03分,接到了面试电话。电话里听声音,应该是个二十多岁的年轻人,听声音比较疲惫,估计是面试了一整天了。所以,他简单介绍了一下自己,就直接问我问题了,自我介绍都给我免了。。。
直接上面经干货:
- 你对集合框架是怎么理解的?
- 我从Collection,Map开始大概讲了集合的框架体系,然后自己引出我们平时常用的ArrayList、LinkedList、HashMap、HashSet等
- 对ArrayList、LinkedList这些集合怎么理解的?多线程下会出现什么什么问题?
- 大概讲了两种集合底部所用数据结构,所适用场景。多线程情况下容易出现丢失修改、数据不一致的问题
- 由线程安全问题引出,线程安全的集合
- 讲了Collections里有方法可以把线程不安全的集合转为线程安全的,再引出了JUC(java.util.concurret)包里的线程安全集合—CopyOnWriteArrayList
- 然后面试官追问,CopyOnWriteArrayList底部实现原理,我讲了COW(写时复制)机制,然后面试官又追问,使用会出现什么问题,我说会出现数据不一致情况,面试官再追问,只有这一个吗?没有其他的了吗?其实我看博客的时候,记得有两个,但是回答的时候,只记得一个了,只好说我不太记得另外一个了
- 对HashMap理解以及在多线程情况下会出现什么问题?
- 讲了HashMap底层数据结构—散列表,然后它是有一个Node数组+链表实现的,当出现hash冲突时,使用链地址法解决,然后,自己又讲了一下jdk.7和jdk1.8的区别----红黑树以及为什么用红黑树(这里面试官没有追问我的红黑树的详情,万幸)
- 多线程情况下出现的问题,我主要说使用p