360 php 面试题
1. 100万条记录的文本文件,取出重复数最多的前10条。
示例文本:
098
123
234
789
……
234
678
654
123
2. 100亿条记录的文本文件,取出重复数最多的前10条。
刚才是100万的数据,你的计算机可以单批正常处理,现在有100亿的数据,假设由于你的计算机内存、cpu限制,无法单批处理 …
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
PHP不是处理不了,只是在这种场景中性能差而已。
回复
是的。面试腾讯的时候,人家也说明可用C,C++,Perl,Python,shell解决。没有限制PHP。 我的思路是要切割处理的。否则人家要求。机器内存1G。考虑效率。这玩意没法完成。
c或c++还凑合,php就免了...性能差等于没有可行性。
这是在考用php处理这么大的文本吗? 用c语言处理差不多(机器也要接近当机),php考这样的题有毛病 ,十有八九不是真心招人,耍你呢。还是直接走人吧,免得浪费时间。
问题很不详细啊
恩,我写了解法(几个PHP文件),放到了这里:http://songyy.me/large_file_process.zip
其中可以用gen_script.php来生成数据(理论上100亿的数据,也就是1e10的数据量,按照每行四个字节来算,有40G,所以你可以调整参数生成小一点的数据文件。打包里面附送的是我生成好的12M左右的数据文件),然后运行parse_script.php就好了。我是在Ubuntu下面做得;不过我感觉你要是用Windows,并且PHP路径设置正确的话,应该也可以直接运行。
前几天去腾讯考的一样的题,只不过每行一个qq号码
只说信息条目,没说总信息量。
如果全部都只有3位数字。都好办。
不知道他们能给多少? 外面给1W5的应该没这么高的要求
@RickyFeng 呵呵,这类题目的关键是理解 PHP的内存机制及使用,以及文件IO的用法
@hokim 好象你当年那条题
分解统计->数据合并->排序->前十条ok