六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 892|回复: 0

PHP腾讯面试题-设计任务-编程任务-it论坛-it社区-it星球论坛

[复制链接]
 楼主| 发表于 2014-3-17 11:51:56 | 显示全部楼层 |阅读模式
PHP腾讯面试题-设计任务-编程任务-it论坛-it社区-it星球论坛-php开发
设计任务:
1、最近总有人骚扰我们的投票模块,需要你来设计一个投票限制的东东
  要求如下:
  1)要求每个QQ号码(假设此QQ号码在UNIT32内可以表示)10分钟这内只能投5票。
  2)我们的用户很踊跃,平均每天要有2000万人左右通过此程序投票。
  说明:
  1)无需写代码,只需要图跟文字即可。
  2)对于关键逻辑,请用图加代码表示出来,这也是对你文字表达能力的一个考验。
  3)对你能想到的所有的边界条件列出来,这是对你逻辑思维全面与敏捷性的考验。
  4)存储部分,尽你所能吧。如果,你需要一个自己设计的存储层,那么把这个存储层的实现,用文字+图片方式描述清楚,要是设计合理,你会获得华丽的奖分。
核心问题:如何统计10分钟之内投了5票?

首先:以分钟为键切分数据集,
然后:每个数据集内,以qq号码为键,vote次数为值
OK,已经成功转换为key-value方式存储,2000万的日投票,除以86400秒,并发231.48rps,使用memcache能够轻松胜任。

数据集ID:201006072134
【QQ号码:Vote次数】

201006072134 | 201006072135 | 201006072136
【12345:3】  | 【12345:3】  | 【12345:3】
【88888:2】  | 【88888:3】  | 【88888:3】
数据模型:
$data[ 201006072134时间分钟 ][ qq号码] = vote次数;

A.统计10分钟内投了多少票
$votes = 0;
for($i = 0; $i < 10; $i++ ){
$votes += $data[ $minute-$i ][ $qq ];
}

B.桶内投票数+1
$data[ $minute ][ $qq ]++;

C.过期统计数据,垃圾清理
unset($data[ $minute ]);
本答案转自http://www.hemono.com/?p=205



编程任务:
1、我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,那么髟助我们完成这个不可能的任务吧。
  要求如下:
  1)/myworks/example/bbe.txt,98版本英文圣经一本
  2)输入部分要求如下:php ./example.php [单词]
  3)输出部分如下:[单词] 1,2 2,4 5,6 表示:此单词在1行2列(第二个单词),2行4列...
  说明:
  1)此文本4MB之巨...
  2)单词的含义:由英文字母(大小写),数字(0-9)组成的串
  3)提供给你的机器OS为ubuntu 9.10,内存只有1G,而且,很不幸的,其中700M用来做了别的
  4)上机考试不允许上网,但我装了man文档以及读取CHM以及PDF的阅读器,在电脑的桌面的CHM文件夹中,有相应的PHP参考手册
  5)算法复杂度要求不能大于O(N^2)(就是N的平方)
  6)什么?PHP低效且用起来不顺手,好的,你可以用别的语言来实现。但注意:提供给你的机器上只有python 2.4/perl 5.8/gcc[g++] 4.1


<?php
function find($word)
{
  $fp = fopen('bbe.txt','r');
  $ln = $col = array();
  $i = 1;
  while(!feof($fp))
  {
    $data = fgets($fp);
    if (preg_match_all('/(\s)*'.$word.'(\s)+/',$data,$match))
    {
      $num = count($match[0]);
      if( $num == 1)
      {
        $ln[] = $i;
        $col[] = stripos($data, $word);
      } else {
        $start = 0;
        for ($j=0;$j<$num;$j++){
          $ln[] =$i;
          $start =$col[] = stripos($data,$word,$start);
      
    $start++;
        }
      }
    }
    $i++;
  }
  fclose($fp);
  $xy = array();
  for($k=0;$k<count($ln);$k++){
    $xy[] = $ln[$k].','.$col[$k];
  }
  print_r($xy);

}

find($argv[1]);



牛年求牛:有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛。
function MakeCow($n){
static $num = 1;
for($j=1; $j<=$n; $j++){
if($j>=4 && $j<15) {
$num++;
MakeCow ($n-$j);
}
if($j==20){$num--;}
}
return $num;
}

PHP腾讯面试题-设计任务-编程任务-it论坛-it社区-it星球论坛-php开发
摘自:http://blog.163.com/huv520@126/b ... 920101030102659225/

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

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