原题:

各位参赛选手,

以下是2013渣打科营编程马拉松大赛的样题。样题题型及难易程度仅供参考。

由于国内两大网络(电信和网通)之间的互联互通问题,使得电信用户访问网通机房或者网通用户访问电信机房都无法获得满意的访问速度。为了解决这个问题,国内大型网站都在两个网络内部署有对应的服务器。你现在所做的是前端加速产品,这个产品可以根据用户的访问IP,以及用户的访问目的地,导向对应的DNS服务器。

比如,存在配置表(配置表可多达2000-5000万条记录):

58.16.0.0-58.16.255.255 mail.google.com name-server-1

58.16.0.0-58.16.255.255 weibo.com name-server-2

那么对于某用户,ip地址为,58.16.128.1,访问目的地为mail.google.com,则应该返回DNS服务器name-server-1。要求该产品每秒能处理不小于1000个请求。请设计对应的方案。

想法:

============================================================================

解决这种问题对我来说最重要的是理解题意:
1.同样域名的网站 有两台服务器,分别是电信和网通,
2.DNS服务器一共就两台,一个把域名解析到电信的机房,一个把域名解析到网通的机房
3.根据用户所在的是电信还是网通,返回给用户两台DNS中的一个
4.一次输入输出之间的距离间隔不超过 1ms

为了解决问题,再作两个假设:
1.可以判断任意ip是电信还是网通,无论是文件还是服务
2.内存大于等于2G(因为要在内存中做哈希表)

如果以上理解和假设正确的话,那么问题的思路就是这样的

1.给每个ip地址 建立 哈希映射,分别对应内存中的一个bit ,这样需要内存 2^32 个bit位,大约520M内存,ip的哈希就直接去了中间的点取值就行了
2.给每个域名建立哈希映射,具体的哈希函数用md5 加密后的中间的26位 ,这样可以得到 67,108,864个 ,对于50,000,000来说足够了,重复的部分用链表
3.遍历配置表,分别填充 ip哈希表 和 域名哈希表 ,name-server-1 置1 , name-server-2 置0
4.根据访问这的ip和域名 分别作哈希 然后查表比较 ,对得到的值做判断返回 哪一个 name-server-2

这里有几个问题:
1.实际当中对于 ip的 哈希表用不了那么大,因为好多重复的
2.可能我的问题理解错了,每一个网站会对应一个 name-server,这样的话就需要用到 数据库 索引之类的东西了
3.字符串到bit的 哈希算法会有比md5更好的

最后是我自己 以前写的一个网址去重的程序,可以参考思路:
https://github.com/ningjingdemayi/websiteCheckRepeat

关于对渣打编程马拉松 2013 的样题的一些想法相关推荐

  1. 2013渣打编程马拉松赛天津初赛总结

    天津初赛是在天津大学里举办的,从天大大门一直到实验室那栋楼的路上的每一个路口,都要一个穿着渣打T-Shirt的漂亮妹子举着渣打编程马拉松的牌子,感觉自己不是屌丝了.来到实验楼一楼大厅,展示自己的二维码 ...

  2. “百度开放云编程马拉松”中国三大赛区获奖团队及作品新鲜出炉

    2013年7月20-21日,以"绿色生活"为主题,面向广大移动互联网开发者,由百度开发者俱乐部主办.InfoQ和segmentfault社区联办.WWF(世界自然基金会)作为环保公 ...

  3. 决战泰达:渣打编程马拉松赛圆满落幕

    本文讲的是决战泰达:渣打编程马拉松赛圆满落幕,2013年10月27日消息,以"Code to Change --编程美好生活"为主题的首届渣打编程马拉松赛于天津经济技术开发区圆满落 ...

  4. 近期活动盘点: Call for Code编程马拉松邀请赛

    想知道近期有什么最新活动?大数点为你整理的近期活动信息在此: 关于代码行动 "代码行动"(Call for Code)是IBM联合Linux基金会.红十字会等组织发起的一项为期5年 ...

  5. 报名 | 赢取20万美金!Call For Code编程马拉松北京站来袭!

    你想通过技术改变未来的世界,并挽救生命吗? 你想组织小伙伴一同参赛,并获得20万美金吗? 你想和全球专业的开发者一同开发,并学习最前沿的AI.IoT等技术吗? 如果你内心中的答案是肯定的话...... ...

  6. 编程马拉松大赛试题及代码(C++实现)

    前段时间牛客网举办了编程马拉松大赛,总共86道题,20天内完毕. 题目难度难中易都有.我发现这些题目,主要关注性能和思维. 非常多题目用常规方法是不能通过时间要求的.题目是来自于各大oj以及面试题.所 ...

  7. 阿里云开源编程马拉松入围项目

    在9月8号启动的 阿里云开源编程马拉松 至今已经吸引了100多个团队参赛.经过评委的初步筛选现有14个参赛项目入选.入选的项目团队/个人 将会在10月14日云栖大会现场进行路演,在大会现场颁奖并评选出 ...

  8. 核桃编程学python吗_学编程要趁早?对话核桃编程X支付宝 “小程序编程马拉松”三强得主...

    原标题:学编程要趁早?对话核桃编程X支付宝 "小程序编程马拉松"三强得主 来源:网络 浏览专业IT技术社区网站,创作沉浸式互动体验游戏,开发辟谣小程序......这并不是程序员大神 ...

  9. 编程马拉松(英语:hackathon,又译为黑客松)

    编程马拉松(英语:hackathon,又译为黑客松),又称黑客日(hack day).黑客节(hackfest)或编程节(codefest),是一个流传于黑客(hacker)当中的新词汇.编程马拉松是 ...

最新文章

  1. 解决scrollView像素自动下移的办法
  2. 1.1节 Buck Converter--降压转换器 part1
  3. 【收藏】IDEA中MAVEN项目自动导入依赖的启动与取消
  4. leetcode面试题 08.12. 八皇后(回溯)
  5. 前端学习(3272):js中this的使用
  6. c svchost 服务 dll_小机巧丨如何解决svchost一直占用网速和内存?
  7. 关于树状数组的个人理解
  8. EMNLP自然语言处理经验方法
  9. PXE(preboot execute environment)
  10. [JAVA] TicTacToe实现Socket通信(一)
  11. 定时任务schedule(spring boot )
  12. Topic Model的分类总结(LDA变种)
  13. 关于在VMware上装lFEDORA系统
  14. linux下音频剪辑软件,音频剪辑软件哪个好用?5款免费开源的音频剪辑软件推荐...
  15. 卧式单面多轴钻孔组合机床动力滑台液压系统的设计
  16. python通配符_Python通配符一览
  17. 【大数据】城市公交网络分析与可视化(二):获取公交行驶路径并绘制散点图
  18. colorbox ajax,jquery弹出层插件推荐ColorBox有5种风格附中文文档
  19. 02.Rocky8安装KVM
  20. Phython环境搭建

热门文章

  1. 产品经理的愚人节专属福利,Axure案例免费下载
  2. 计算机专业论文评语,计算机论文答辩评语.doc
  3. pe系统怎么删除服务器密码,win10系统怎么用pe删除系统开机密码
  4. Inside The C++ Object Model 读书笔记
  5. 计算机毕业设计SSM宠物寄养平台设计【附源码数据库】
  6. 微信HOOK 3.获取微信登录信息【ID 头像 昵称】
  7. 邮箱号怎么注册?公司注册邮箱,我要注册一个邮箱公司用
  8. 0基础编程学python_编程零基础应当如何开始学习 Python?
  9. 解决使用Skia图形库时遇到的几个问题
  10. untiy3D 游戏性能的优化