360 php 面试题

arvin007 发布于 2012/07/15 22:44
阅读 17K+
收藏 26
1. 100万条记录的文本文件,取出重复数最多的前10条。
示例文本:
098
123
234
789
……
234
678
654
123
2. 100亿条记录的文本文件,取出重复数最多的前10条。
刚才是100万的数据,你的计算机可以单批正常处理,现在有100亿的数据,假设由于你的计算机内存、cpu限制,无法单批处理  …
加载中
1
熬特洛
熬特洛

引用来自“宇默”的答案

引用来自“dejdong”的答案

分解统计->数据合并->排序->前十条ok

1. 假设最大值为 99,999,999,999

2. 按小于或等于6位数 ,7位数,8位数,9位数,10位数,11位数,数字分拣到对应的文本
3. 然后将对6位数帅选出重复数字最大的的前10位数,将结果存放到文本,6-top-10.txt
           7                                            7-top-10.txt
           8                                            8-top-10.txt
           9                                            9-top-10.txt
          10                                           10-top-10.txt
          11                                           11-top-10.txt
4.  然后,取出 6-top-10.txt    7-top-10.txt   8-top-10.txt  9-top-10.txt
    10-top-10.txt  11-top-10.txt   ,共计110个数
5.  然后排序,取出前10位数。 

这样分可以,不过,按位长度分,分解的很有限,且不稳定(可以全部六位)。

如果按前一或多个字母分,可成指数型增长分解,不过,也不稳定...

 

0
RickyFeng
RickyFeng
@hokim 好象你当年那条题
hokim
hokim
@RickyFeng 呵呵,这类题目的关键是理解 PHP的内存机制及使用,以及文件IO的用法
0
逝水fox
逝水fox
用类似 MapReduce的思路?
0
纠结名字_我艹你妹
纠结名字_我艹你妹
不知道他们能给多少? 外面给1W5的应该没这么高的要求
0
极品渣子
极品渣子
这三位数有这么多组合吗?如果只限定是三位数就好办。value[key]++
0
泡不烂的凉粉
泡不烂的凉粉

只说信息条目,没说总信息量。

如果全部都只有3位数字。都好办。 

0
turbobxg
turbobxg
前几天去腾讯考的一样的题,只不过每行一个qq号码
0
f
flyfy1

恩,我写了解法(几个PHP文件),放到了这里:http://songyy.me/large_file_process.zip

其中可以用gen_script.php来生成数据(理论上100亿的数据,也就是1e10的数据量,按照每行四个字节来算,有40G,所以你可以调整参数生成小一点的数据文件。打包里面附送的是我生成好的12M左右的数据文件),然后运行parse_script.php就好了。我是在Ubuntu下面做得;不过我感觉你要是用Windows,并且PHP路径设置正确的话,应该也可以直接运行。

0
五杀联盟
五杀联盟
问题很不详细啊
0
xyz555
xyz555
这是在考用php处理这么大的文本吗? 用c语言处理差不多(机器也要接近当机),php考这样的题有毛病 ,十有八九不是真心招人,耍你呢。还是直接走人吧,免得浪费时间。
彼岸莲华
彼岸莲华
c或c++还凑合,php就免了...性能差等于没有可行性。
榆木脑壳
榆木脑壳
回复 @张敏峰 : 是的。面试腾讯的时候,人家也说明可用C,C++,Perl,Python,shell解决。没有限制PHP。 我的思路是要切割处理的。否则人家要求。机器内存1G。考虑效率。这玩意没法完成。
BossKiller
BossKiller
PHP不是处理不了,只是在这种场景中性能差而已。
返回顶部
顶部