大家好,我是鸭鸭。
最近,阿里大文娱的高管樊路远在灵犀互娱的内部演讲惊掉了我的下巴。
不知怎么的,樊路远在讲座里一口气提到“感恩阿里”,甚至把阿里形容成了“救世主”——这波“爹味”发言堪比杨子。
樊路远在演讲中提到,灵犀互娱是从网易出来的,创业失败后“像三国里投奔袁绍一样”,被阿里收购了。听得我一愣:这啥意思?灵犀是“被收养”了?按他说法,要不是阿里收购,灵犀“就倒闭了,啥也不是”。
这也太直接了吧,仿佛灵犀所有的成就都得感谢阿里,能做出《三国志战略版》就是阿里去日本买了 ip,找了明星代言,投了很多钱做广告,不然做不出爆款游戏。
这种话听上去很让人不舒服,毕竟,收购意味着商业上的决定,而不是成就的全部。樊路远的“救世主”自信,有点过头了。
并且他还说你们团队以前走火入魔过,现在重新学习阿里价值体系,公司说你不行你就不行。广州以前都是朝廷流放的地方,当年这里都是蛮夷,讲的都是鸟语,听不懂。
这是什么逆天发言??还开地图炮呢??
除此之外他还一直敲打现在的灵犀互娱总裁周柄枢。樊路远说他是个“小屁孩”,说什么周从 P7 升到 M4,要感恩阿里才有今天。
你听听,这话说得多像父亲在教育儿子啊。周柄枢从 P7 到 M4,照理说是他自己努力的结果,怎么就变成了“灰溜溜”加入阿里的“失败者”呢?
我能理解樊路远想传达的“感恩”精神,但这个“教育”方式让人不太舒服,给人一种“你就该感恩,我才是对的”的高高在上的感觉。人家已经是公司的总裁了,凭什么把自己当成父亲,给人家上“人生课”?
由于演讲太过劲爆,事后发酵,12.7日晚樊路远一看势头不对在公司内网进行了道歉,自罚三个月工资。
樊路远演讲后的道歉,也许是为了平息风波,但真心话,这种“道歉”恐怕也不能完全让员工释怀。演讲里充满了“爹味”的管理理念,不是一句道歉就能改变的。
这种过于居高临下的“父子”关系,显然不太能赢得员工的心。你们怎么看?欢迎来评论区聊聊!
......
继续今天的面试题:
Java 中的 IdentityHashMap 是什么?
回答重点
IdentityHashMap
是 Java 中的一个 Map
实现,和普通的 HashMap
不同,它使用 引用相等性(reference equality) 作为键的比较方式。换句话说,它使用 ==
来比较键值,而不是 equals()
方法。因此,只有当两个键的引用相同时,才被认为是相同的键。
使用场景:
对象身份区分:适用于需要基于对象身份(引用)进行区分的场景,比如需要跟踪对象实例,而不是逻辑上的值相等性。 特殊缓存:有时用于构建缓存或映射结构,确保即使两个对象内容相同,但只要它们是不同的实例,就会被当作不同的键。
扩展知识
主要特性总结:
引用相等: IdentityHashMap
使用==
比较键的相等性,而不是通过equals()
,这使得它适合那些需要基于对象身份(引用)的场景。哈希实现:虽然名字中有 "Hash",但 IdentityHashMap
并不使用对象的hashCode()
方法,而是依赖System.identityHashCode()
,这是基于对象引用的哈希值。允许 null
键和null
值:类似HashMap
,IdentityHashMap
也允许null
键和null
值,但它使用的是对null
的引用比较。非线程安全:与 HashMap
类似,IdentityHashMap
不是线程安全的,在多线程环境下需要手动同步。
IdentityHashMap 源码分析
首先看它覆盖的 hash 方法:
可以看到,它用了个 System.identityHashCode(x)
,而不是 x.hashCode()
。
而这个方法会返回原来默认的 hashCode 实现,不管对象是否重写了 hashCode 方法
默认的实现返回的值是:对象的内存地址转化成整数,是不是有点感觉了?
然后我们再看下它的 get 方法:
可以看到,它判断 key 是否相等并不靠 hash 值和 equals,而是直接用了 == 。
而 == 其实就是地址判断!
只有相同的对象进行 == 才会返回 true。
因此我们得知,IdentityHashMap 的中的 key 只认它自己(对象本身)。
即便你伪造个对象,就算值都相等也没用,put 进去 IdentityHashMap 只会多一个键值对,而不是替换,这就是 Identity 的含义。
比如以下代码,identityHashMap 会存在两个 Yes:
Map<String, String> identityHashMap = new IdentityHashMap<>();
identityHashMap.put(new Yes("1"), "1");
identityHashMap.put(new Yes("1"), "2");
这里眼尖的小伙伴发现代码里,为什么返回值是 tab[i+1]?
这是因为 IdentityHashMap 的存储方式有点不一样,它是将 value 存在 key 的后面。
认识到这就差不多了。它是一个非常特殊和有限用途的映射实现,主要用于需要引用相等性的场景。在一些框架中,代理对象可能需要根据实际对象实例进行映射,而不是逻辑相等的对象,这时候 IdentityHashMap 就派上用场了。
最后
再来推荐下我们的面试刷题网站和小程序:面试鸭!
我们精选了近两年的高频面试真题,已经有 9000 多道面试题目啦,由大厂资深面试官手写答案,押题命中率超高!
不仅有传统八股文,场景题、项目题、系统设计题等等应有尽有,还在不断更新中!
现在邀请好友注册并成为会员,还可获得最高 50% 的分佣🧧!详情见面试鸭拉新邀请有赏规则(网页版面试鸭点击头像查看)
网页端网址:www.mianshiya.com
欢迎关注面试鸭,每日获取经典面试题和优质题解,我们下期见~
往期推荐
新项目今晚直播加更,做简历上的亮眼项目!
笑死了,创始人竟然被员工气的退出群聊
35的程序员被辞了可以自己接外包啊?为什么都那么悲观呢?
突发!人人网已停止服务,突然想起我逝去的青春。。。
年薪10万、30万、50万、70万的程序员,在能力上有什么本质差别?
字节向前实习生索赔 800 万,这得花多少年才还的清啊?
面试过了,期望薪资 30k,流水 26k。hr:给你 20k 接受吗?我:???hr:抱歉,您没通过面试