一亩三分地论坛

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

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

[编程题] 请教大神一道parallel progeamming的题

[复制链接] |试试Instant~ |关注本帖
ancen 发表于 2016-3-22 13:52:57 | 显示全部楼层 |阅读模式

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

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

x
请教各位大神一道parallel programming验证电话号码的题目。题目是这样的,

首先你会拿到一个大小为100K的输入文件,文件里每一行存放着一个电话号码。电话号码是美国的电话号码。从这些电话号码中,你将需要:1)确定的电话号码是一个有效的电话号码(即408-555-1234不是一个有效的电话号码,这里不是有效的原因是该电话号码未被任何人使用)
2)你需要确定这个电话号码是不是一个手机电话号码。
3)你需要非常快速地处理这个100K的数据集(很快就会有一个新的100K的数据集紧接着需要处理)。因此必须用并行计算(多线程)实现代码。
4)函数需要将所有有效的手机号码保存在一个set,并且返回这个set。
5)代码必须用Java编写。



第一个要求可以用libphonenumber这个库里的函数来判断,第二个要求可以调用Twilio的SDK里面的方法来判断。库太大,传不上来,那位大神需要可以给小弟发邮件。ancenxixi@gmail.com


我自己实现的代码主要是多线程这里不知道该怎么写。求大神指导! 多谢多谢!


luochen01 发表于 2016-3-22 14:26:56 | 显示全部楼层
应该可以用MapReduce是paradigm来实现
Map的时候用于检查每个电话号码的合法性,每个Mapper得到一个合法的set。
Reduce的时候把所有的合法set合并在一起。
不过也未必严格按照MapReduce的过程,但感觉至少应该有 分组 - 合并 的过程。
回复 支持 反对

使用道具 举报

 楼主| ancen 发表于 2016-3-22 16:08:33 | 显示全部楼层
luochen01 发表于 2016-3-22 14:26
应该可以用MapReduce是paradigm来实现
Map的时候用于检查每个电话号码的合法性,每个Mapper得到一个合法的 ...

多谢回答!我也想过mapreduce,但转念一想这是一道面试题,我感觉用mapreduce是不是有点太猛了?有木有用多线程实现的解法呀? 多谢!
回复 支持 反对

使用道具 举报

luochen01 发表于 2016-3-22 16:16:40 | 显示全部楼层
ancen 发表于 2016-3-22 16:08
多谢回答!我也想过mapreduce,但转念一想这是一道面试题,我感觉用mapreduce是不是有点太猛了?有木有用 ...

感觉可以用多线程模拟MapReduce的执行过程,就相当于Hadoop里的LocalJobRunner,也是单机多线程上跑MapReduce任务。不过其实中间的Shuffle过程是可以省掉的,而且MapReduce这个模型其实也算是挺简单的了。。。
回复 支持 反对

使用道具 举报

luochen01 发表于 2016-3-22 16:23:03 | 显示全部楼层
ancen 发表于 2016-3-22 16:08
多谢回答!我也想过mapreduce,但转念一想这是一道面试题,我感觉用mapreduce是不是有点太猛了?有木有用 ...

不过应该也可以多个线程共享一个synchronized set,并且所有的线程同时往这个里面加电话号码。
但是这样的话set的add操作就必须是同步的了,效率上可能还不如MapReduce的方法效率高……
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-8 08:29

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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