招银网络科技一面面经
20min结束,大概率凉
上来让实现一个线程安全的缓存(还要保证单例),我给了下图实现,问他为啥不对他也不说,她大概意思就是多核CPU下这个会有问题,还说不能保证命令执行完(可能涉及线程切换,但也没啥影响吧,加了锁的),有大佬知道为啥吗?
态度真是没得说,全程高高在上,也不知道在自豪个啥,字节腾讯面试官都挺友好,一次最差的面试体验。
上来让实现一个线程安全的缓存(还要保证单例),我给了下图实现,问他为啥不对他也不说,她大概意思就是多核CPU下这个会有问题,还说不能保证命令执行完(可能涉及线程切换,但也没啥影响吧,加了锁的),有大佬知道为啥吗?
态度真是没得说,全程高高在上,也不知道在自豪个啥,字节腾讯面试官都挺友好,一次最差的面试体验。
全部评论
要么用Concurenthashmap要么需要自己在get操作上也加上同步锁,因为你这个是写上锁读不上锁,且缓存value不具备可见性,在并发操作下修改值了,再get操作获取的不是最新值,无法保证一致性,因为多线程共享变量没有加volatile就会将变量copy一份到工作缓存中,无法实时的更新共享变量,这是最主要的问题
还有volatile关键字,其他应该没啥问题
同一个面试官吧,我也考的这道题
没有私有化构造函数,实例获取方法直接用synchronize包裹太重了,应该先对当前实例做一个校验,如果为空才获取锁,不为空直接返回就行
所以20min就写个算法题都没问八股吗
上来就直接共享屏幕手撕吗佬
cache也用static修饰保证唯一?
是不是得用currenthashmp
相关推荐
查看9道真题和解析