一个游戏公司的面试题

小陈程序员 2014-07-14 11:06:32
一个公司的面试题:
1. 有10W个玩家,每次打怪或者不打怪的时候属性值都会有变化,现在要你设计算法求出不管是打怪还是不打怪的时候玩家属性值的变化,不管属性值是增还是减,求出前100名。设计算法最好是算法复杂度和时间复杂度都要最少。

2.一个分叉路口,每个路口只有一个人。现在你要走到正确的路口,只能从两个路口中选择一个路口出去,两个路口中有一个是你要走出去的路口,也就是正确的路口,现在只允许你对每人问一个问题,请问你怎么问才能找到正确的路口???

3.现在微博很火,因此短链接也很火,现在我要设计一个系统,这个系统要存放500亿条链接,你怎么设计该系统???

4.求一个二叉树的深度。



各位大侠,怎么求解。
...全文
1089 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
KangRoger 2014-07-16
  • 打赏
  • 举报
回复
2.一个分叉路口,每个路口只有一个人。现在你要走到正确的路口,只能从两个路口中选择一个路口出去,两个路口中有一个是你要走出去的路口,也就是正确的路口,现在只允许你对每人问一个问题,请问你怎么问才能找到正确的路口??? 没看明白这道题
cjy0000 2014-07-16
  • 打赏
  • 举报
回复
引用 8 楼 my3439955 的回复:
一个公司的面试题: 1. 有10W个玩家,每次打怪或者不打怪的时候属性值都会有变化,现在要你设计算法求出不管是打怪还是不打怪的时候玩家属性值的变化,不管属性值是增还是减,求出前100名。设计算法最好是算法复杂度和时间复杂度都要最少。 我的看法:这个题目可以简化为“有10W个玩家,属性值会变化,现在要你设计算法求出玩家属性值的变化,不管属性值是增还是减,求出前100名。设计算法最好是算法复杂度和时间复杂度都要最少。”,打怪完全是迷惑信息,没有用。 2.一个分叉路口,每个路口只有一个人。现在你要走到正确的路口,只能从两个路口中选择一个路口出去,两个路口中有一个是你要走出去的路口,也就是正确的路口,现在只允许你对每人问一个问题,请问你怎么问才能找到正确的路口??? 我的看法:这是一个经典问题,前提是一个人总说真话,另一个人总说假话。有了这个前提,这个题目才有意思。 3.现在微博很火,因此短链接也很火,现在我要设计一个系统,这个系统要存放500亿条链接,你怎么设计该系统??? 我的看法:看不到重点,分布式的简单一存就是了 4.求一个二叉树的深度。 我的看法:递归完破,深度=max(左子树的深度,右子树的深度),叶子的深度为0。 另外:第一题的打怪真的是迷惑信息还是你记错了?第二题你确定没有那个前提吗?
深度 = max(左子树的深度,右子树的深度) + 1
苏客达 2014-07-16
  • 打赏
  • 举报
回复
帮顶,好高级的样子
eziowayne 2014-07-15
  • 打赏
  • 举报
回复
1,2等待完善题目信息。 第三题,倾向于用数据库做一个映射表,把长连接映射成短连接以后存在数据库里,访问的时候向数据库请求原链接就行了。但是出题者突出的是500亿吗?可以采用分布式! 第四题基础题,google一下就行了,采用递归的方式,递归计算左子树和右子树的深度。
勤奋的小游侠 2014-07-14
  • 打赏
  • 举报
回复
第四题搞错,没看到是二叉树,sorry.
勤奋的小游侠 2014-07-14
  • 打赏
  • 举报
回复
第一题就是大数据排序的变形,解决思路是用小堆: 建一个100个数据的最小堆,把剩下的数据,一个一个加入这个堆中,把堆的最小值去掉。编历完成后这个最小堆中的100个数据就是排名最前的100位了。建堆的时间是nlogn,编历的j时间复杂度n-100. 在n足够大的情况下,可以认为时间复杂度为线性的. 第二个问题,你应该记少了一个前提,就是这两个人的回答有一个是说慌,一个是诚实的。其实网上的版本和你说的完全不一样的。 第三题,现在微博已经过时了, 第四题,这个得有树的数据结构和是不是二叉树吧?如果没限定,那就要遍历全部的节点了。
yangyunzhao 2014-07-14
  • 打赏
  • 举报
回复
引用 楼主 CL0419 的回复:
一个公司的面试题: 1. 有10W个玩家,每次打怪或者不打怪的时候属性值都会有变化,现在要你设计算法求出不管是打怪还是不打怪的时候玩家属性值的变化,不管属性值是增还是减,求出前100名。设计算法最好是算法复杂度和时间复杂度都要最少。 2.一个分叉路口,每个路口只有一个人。现在你要走到正确的路口,只能从两个路口中选择一个路口出去,两个路口中有一个是你要走出去的路口,也就是正确的路口,现在只允许你对每人问一个问题,请问你怎么问才能找到正确的路口??? 3.现在微博很火,因此短链接也很火,现在我要设计一个系统,这个系统要存放500亿条链接,你怎么设计该系统??? 4.求一个二叉树的深度。 各位大侠,怎么求解。
哪个公司,题目有点难度。随便说说还行,真要实际做,还得花很大功夫哦!
版主大哥 2014-07-14
  • 打赏
  • 举报
回复
wujintaowjt 2014-07-14
  • 打赏
  • 举报
回复
表示看看,坐等大神解答
  • 打赏
  • 举报
回复
一个公司的面试题: 1. 有10W个玩家,每次打怪或者不打怪的时候属性值都会有变化,现在要你设计算法求出不管是打怪还是不打怪的时候玩家属性值的变化,不管属性值是增还是减,求出前100名。设计算法最好是算法复杂度和时间复杂度都要最少。 我的看法:这个题目可以简化为“有10W个玩家,属性值会变化,现在要你设计算法求出玩家属性值的变化,不管属性值是增还是减,求出前100名。设计算法最好是算法复杂度和时间复杂度都要最少。”,打怪完全是迷惑信息,没有用。 2.一个分叉路口,每个路口只有一个人。现在你要走到正确的路口,只能从两个路口中选择一个路口出去,两个路口中有一个是你要走出去的路口,也就是正确的路口,现在只允许你对每人问一个问题,请问你怎么问才能找到正确的路口??? 我的看法:这是一个经典问题,前提是一个人总说真话,另一个人总说假话。有了这个前提,这个题目才有意思。 3.现在微博很火,因此短链接也很火,现在我要设计一个系统,这个系统要存放500亿条链接,你怎么设计该系统??? 我的看法:看不到重点,分布式的简单一存就是了 4.求一个二叉树的深度。 我的看法:递归完破,深度=max(左子树的深度,右子树的深度),叶子的深度为0。 另外:第一题的打怪真的是迷惑信息还是你记错了?第二题你确定没有那个前提吗?

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧