一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 929|回复: 36
收起左侧

Wepay OA

[复制链接] |试试Instant~ |关注本帖
BondWong 发表于 2016-2-15 09:25:53 | 显示全部楼层 |阅读模式

2016(1-3月) 码农类 硕士 实习@Wepay - 网上海投 - 在线笔试 |Other其他

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
刚刚做完,还是群里说的几题,要求是clean code,其它两题选择题,大家有兴趣地里搜索下。coding的题目是重写Hashtable,实现put get 功能,我是这么写的,https://github.com/JavaEEBoy/Dummy/blob/master/HashTable.java
大家可以参考下,给点意见。这个我没测试,大概意思如此,测试全部通过了。求人品!

评分

1

查看全部评分

Thunder_up 发表于 2016-2-19 12:47:23 | 显示全部楼层
请问楼主过了么
回复 支持 反对

使用道具 举报

 楼主| BondWong 发表于 2016-2-19 13:01:49 | 显示全部楼层
. 1point3acres.com/bbs
还不知道,过几天follow up 一下高速你结果,你也拿到OA了?
回复 支持 反对

使用道具 举报

Thunder_up 发表于 2016-2-19 13:03:09 | 显示全部楼层
BondWong 发表于 2016-2-19 13:01
还不知道,过几天follow up 一下高速你结果,你也拿到OA了?

是的,准备做了。
回复 支持 反对

使用道具 举报

 楼主| BondWong 发表于 2016-2-19 13:04:57 | 显示全部楼层
Thunder_up 发表于 2016-2-19 13:03
是的,准备做了。

怒做吧,加油哈!
回复 支持 反对

使用道具 举报

Thunder_up 发表于 2016-2-19 14:14:30 | 显示全部楼层
BondWong 发表于 2016-2-19 13:04
怒做吧,加油哈!
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
看了下楼主代码,写的挺好的。但是我有些疑问,一个是为何要用List, 用Entry<K,V>table[]这种形式不是感觉更像教科书一些么?然后是对于key 是 Null值,楼主放在了0号slot,这是题目要求的么?我看有帖子说题目要求是“the implementation should not allow key or value parameter to be null/None” 请问这样的话是不是在get,put方法一开头就判断key是不是Null,然后是的话throw exception比较好?
回复 支持 反对

使用道具 举报

 楼主| BondWong 发表于 2016-2-19 14:27:48 | 显示全部楼层
Thunder_up 发表于 2016-2-19 14:14
看了下楼主代码,写的挺好的。但是我有些疑问,一个是为何要用List, 用Entrytable[]这种形式不是感觉更像 ...

可以用array,我用list一开始是没打算自己控制list的大小,时间有限没响太多。至于Null,可能我看漏了吧。。。求人品啊
回复 支持 反对

使用道具 举报

Thunder_up 发表于 2016-2-19 14:37:31 | 显示全部楼层
BondWong 发表于 2016-2-19 13:04
怒做吧,加油哈!
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
楼主的处理方式是“if (entry.getKey() == null || entry.getKey().equals(key))
                                return entry.getValue();”
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
if (e.getKey() == null || e.getKey().equals(entry.getKey())) {
                                e.setValue(entry.getValue());
                                return;
                        }

那如果两个entry,一个是A(null, 2) 一个是B(5,3), A 的index是0,插入A后,接着想Put B, 如果B的key在哈希后Index也为0, 那么在Put的时候哈希表里不就会有(null, 3)的值出现了么?
回复 支持 反对

使用道具 举报

Thunder_up 发表于 2016-2-20 04:14:29 | 显示全部楼层
BondWong 发表于 2016-2-19 14:27
可以用array,我用list一开始是没打算自己控制list的大小,时间有限没响太多。至于Null,可能我看漏了吧 ...

加油加油,出消息了求告知声哈
回复 支持 反对

使用道具 举报

 楼主| BondWong 发表于 2016-2-20 04:37:26 | 显示全部楼层
Thunder_up 发表于 2016-2-19 14:37
楼主的处理方式是“if (entry.getKey() == null || entry.getKey().equals(key))
                                return entry.getV ...

是个链表,不覆盖的
回复 支持 反对

使用道具 举报

Thunder_up 发表于 2016-2-20 05:00:55 | 显示全部楼层
BondWong 发表于 2016-2-20 04:37. Waral 鍗氬鏈夋洿澶氭枃绔,
是个链表,不覆盖的

不是setValue()麼?
回复 支持 反对

使用道具 举报

Thunder_up 发表于 2016-2-20 05:02:53 | 显示全部楼层
BondWong 发表于 2016-2-20 04:37. more info on 1point3acres.com
是个链表,不覆盖的

一個(NULL,3) 一個是(5,2).Put了第一個entry入index為0的位置,想put第二个entry时如果哈希后的index也为0,就不是append了,而是用到了找到了(NULL,3)这个entry并且setValue了为2
回复 支持 反对

使用道具 举报

 楼主| BondWong 发表于 2016-2-20 05:06:00 | 显示全部楼层
. visit 1point3acres.com for more.
循环后有add
回复 支持 反对

使用道具 举报

Thunder_up 发表于 2016-2-20 05:18:12 | 显示全部楼层

额,楼主你的代码是这样的
for (Entry<K, V> e : this.array.get(index))
                        if (e.getKey() == null || e.getKey().equals(entry.getKey())) {
                                e.setValue(entry.getValue());. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
                                return;
                        }.鐣欏璁哄潧-涓浜-涓夊垎鍦

                this.array.get(index).add(entry);
                this.size++;-google 1point3acres

你那个add是遍历了该index的链表发现没有不用覆盖时,才add.如果有旧的key,你setValue()完就return了。
回复 支持 反对

使用道具 举报

Thunder_up 发表于 2016-2-20 05:20:03 | 显示全部楼层

那这样的一个结果就是,你的hashTable里index为0的位置,只要插入了一个(null, x)进去,后面其它所有要插入table[0]的所有entry都不会append到该位置的链表,那链表始终只会有一个节点,是(Null, y),(null, z).... 楼主你觉得呢
回复 支持 反对

使用道具 举报

 楼主| BondWong 发表于 2016-2-20 05:24:28 | 显示全部楼层
Thunder_up 发表于 2016-2-20 05:20
那这样的一个结果就是,你的hashTable里index为0的位置,只要插入了一个(null, x)进去,后面其它所有要 ...

啊~貌似比较难讲明白,你画个图走一遍?不会出现你说那个情况的
回复 支持 反对

使用道具 举报

 楼主| BondWong 发表于 2016-2-20 05:24:36 | 显示全部楼层
Thunder_up 发表于 2016-2-20 05:20
那这样的一个结果就是,你的hashTable里index为0的位置,只要插入了一个(null, x)进去,后面其它所有要 ...

啊~貌似比较难讲明白,你画个图走一遍?不会出现你说那个情况的.
回复 支持 反对

使用道具 举报

Thunder_up 发表于 2016-2-20 05:28:09 | 显示全部楼层
BondWong 发表于 2016-2-20 05:24
啊~貌似比较难讲明白,你画个图走一遍?不会出现你说那个情况的

我觉得我没想错。。楼主你再想想好嘞。来一个(null,3),直接判断Index为0,input进去。再来一个(5,2),把5哈希完如果index为0,准备插入table[0],首先判断table[0]的链表有没相同的key,然而因为那个判断,所有key为Null的都会setValue,然后return。。。这样就出问题了
回复 支持 反对

使用道具 举报

 楼主| BondWong 发表于 2016-2-20 07:23:52 | 显示全部楼层
Thunder_up 发表于 2016-2-20 05:28
我觉得我没想错。。楼主你再想想好嘞。来一个(null,3),直接判断Index为0,input进去。再来一个(5,2 ...

不好意思刚刚忙去了,还有问题么?我不知道怎么打字讲明白,电话?我邮箱wongzeonbong@gmail.com
回复 支持 反对

使用道具 举报

luofeidream 发表于 2016-2-20 07:36:19 | 显示全部楼层
第一题我用python最后一个case怎么都过不了。。。然后还看不了case是什么
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-10 21:09

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表