论坛首页 招聘求职论坛

深圳财富大厦阿里巴巴面试架构师职位的详细过程,实在让我不吐不快

浏览 122145 次
该帖已经被评为精华帖
作者 正文
   发表时间:2012-02-20  
int是7fff ffffh, 换成十进制就是210万左右,21亿可能是long吧。
HashCode的Key攻击我没遇到过,没发言权。

其实有时候我觉得年轻大的家伙老是以经验来说事,虽然不想评断什么,但是我觉得无论多少年,10,20年,无论什么情况,最后还是要先从自己身上找结论,架构师并不是说说框架就完事的,在阿里很多P7都是身体力行写代码,越是简单的东西到深处越不简单。
其实阿里是牛人多,并且也官僚,制度也恶心,那又怎么样呢(我也很讨厌阿里)?  大不了不去嘛~~现在很多牛人都出来了。

PS:LZ还是需要补补基础知识哇,连二进制到十进制转化没搞清。。。 呵呵,祝LZ好运。

是21亿而不是210万,谢谢纠正,这么说来,我之前认为大于210万会出现hashcode重复的问题是错误的,请问你的真正关于hashcode的问题是什么呢?
0 请登录后投票
   发表时间:2012-02-20  
如果确实是架构师的职位,面试官问这些问题太肤浅了,个人以为这些问题招高编时问会更合适。
0 请登录后投票
   发表时间:2012-02-20  
int x = Integer.valueOf("7fffffff",16);
System.out.println(x);
System.out.println(Integer.MAX_VALUE);
输出:
2147483647
2147483647
0 请登录后投票
   发表时间:2012-02-20  
BruceXX 写道
ffychina 写道
backshadow 写道
ffychina 写道
look12345 写道
ffychina 写道
colin4k 写道
引用
面试官说了我没有一个问题回答正确,我完成不懂hashmap,hashmap在超大数据量如几千万条记录时,会有可能出现hash碰撞,不同的key有可能被覆盖。

LZ你虽然没遇到这种情况,但这个情况确实是存在的,建议LZ淡定一些,同时以更加谦虚的态度对待自己不了解的方面

其实我已经说了,hash碰撞很正常,是否会覆盖key,关键在于hashcode()的算法,int才32bit,超过200万就会出现问题。这个问题我早在2003年就已经很清楚了,解决很简单,继承Hashmap重写所有调用到key.hashcode()的方法,这些都是程序员入门级的问题。我真的不好意思回答这种新手贴的问题。


发生碰撞的时候会再调用equals()比较,equals没错就没问题。

equals一般是不会有错误的,不可能不同的值会equals返回true,一般来说初级者会在hashcode中招,以为hashmap是通过equals判断key,而没有想到是真正的原因在hashcode上,但是,只要看一下源码就懂了,我一般带新手我都会告诉他们看一下某个类某个方法的源代码,我不直接说答案,让他们有个思考的过程,除非搞不定我才亲自操刀,这几年的确接触java代码少了很多,更多的是学习linux的系统原理,驱动开发,虚拟化和一些bash script,java花的心思比以前少了。

呃,int的最大值是21亿,超过200万会出神马问题?
确实有个Hash碰撞漏洞,故意用相同HashCode的Key攻击,但在自然情况下,没这问题吧?

int是7fff ffffh, 换成十进制就是210万左右,21亿可能是long吧。
HashCode的Key攻击我没遇到过,没发言权。


其实有时候我觉得年轻大的家伙老是以经验来说事,虽然不想评断什么,但是我觉得无论多少年,10,20年,无论什么情况,最后还是要先从自己身上找结论,架构师并不是说说框架就完事的,在阿里很多P7都是身体力行写代码,越是简单的东西到深处越不简单。
其实阿里是牛人多,并且也官僚,制度也恶心,那又怎么样呢(我也很讨厌阿里)?  大不了不去嘛~~现在很多牛人都出来了。

PS:LZ还是需要补补基础知识哇,连二进制到十进制转化没搞清。。。 呵呵,祝LZ好运。



int是7fff ffffh, 换成十进制就是210万左右,21亿可能是long吧。
我了个去 ,再次强调一下基础知识,java的int最大值  = 2^31 = 2147483648 -->21亿多了
=======想起了去年做的一个项目======
中间有一个c/c++做客户端,java做服务端的,两者用tcp socket通讯,我定义了c的结构体来作为消息接口。
结构体中有int char等类型,也亲自写了这部分代码(c++客户端,java的server端)。
为了让基本没做过c/c++的java开发同学能理解这两部分代码,做了详尽的注释。
后来一做了4年多java的同学过来问我,你这个结构体的int怎么说是占用4个字节呢,
我们都是用10字节的,当时我差点把一口茶水喷在显示器上。后来才知道他拿mysql的字段定义来说事,比如id int(10).... 。 当时我就凌乱了。。。仅做过java的伤不起啊
1 请登录后投票
   发表时间:2012-02-20   最后修改:2012-02-20
补充一下,我的确没有想过需要用Hashmap处理超过10万条的数据量,因为我觉得这不是JAVA的强项,会出现很多并发问题和性能问题,维护起来比较麻烦,因此我一是放到数据库处理,二是找其他开源框架。如果我错了,请高手指正。

我以前解决过hashcode的int问题,是因为long值在换成int值时高位被截掉,导致不同的KEY都取到相同的Content。
  • 大小: 385.2 KB
0 请登录后投票
   发表时间:2012-02-20  
可以确切的讲,此并非技术问题,关键在于是管理意识层面的问题,与社会知识层面的问题
            首先;作为其企业的面试的员工是人事性质的员工,并不会相关的具体的技术知识,那么这一群体
                 辨识与判定应试者的相关职业能力使用的具体方法与方式属于低级的,无法较全面的展现其
                 实力与价值;
            其次:人事系统方面也有相关的划分与实力差别,能力相对低人事员工进行这一方面工作相当机械;
                 在招聘员工特别是具有相当附加值与挖掘潜力的这一类型的员工方面,机械性的面试与判定
                 方式相当不适合的,

             又其次:楼主未进行相关面试工作之前的查调工作,对于一家以运营为主要产业的企业,楼主
             需要衡量和判断一下是否确实需要通过这一面试的流程招聘架构师,或者其实是不需要架构师能
             力但又是使用了架构师这一名称的招聘现象去向市场招聘员工。
0 请登录后投票
   发表时间:2012-02-20  
这样的鸟公司不在少数,不过面试的话遇到这样那样的问题也是在所难免,要做好两手准备。
0 请登录后投票
   发表时间:2012-02-20  
接触过人事工作都知道人事员工与技术和生产类员工思维方式是不一样的
0 请登录后投票
   发表时间:2012-02-20  
人事员工有职能性质的,与他们聊一些具体的生产性的东西他们会很机械,
0 请登录后投票
   发表时间:2012-02-20  
弱弱的问一下 什么场景需要往hashmap中装这么多数据?
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics