论坛首页 编程语言技术论坛

腾讯php程序员面试题目,供大家学习一下

浏览 42763 次
精华帖 (0) :: 良好帖 (3) :: 新手帖 (0) :: 隐藏帖 (6)
作者 正文
   发表时间:2010-06-19  
百度惯了,基础不牢靠不行
0 请登录后投票
   发表时间:2010-10-27  
swanky_yao 写道
最近很有去腾讯的冲动,看了这篇文章,冲动,没了!



呵呵
0 请登录后投票
   发表时间:2010-10-28  
3)提供给你的机器OS为ubuntu 9.10,内存只有1G,而且,很不幸的,其中700M用来做了别的
不知道这句话对编程有什么影响?
0 请登录后投票
   发表时间:2010-10-28  
meigm 写道
编程任务主要用到preg_match_all和strpos吧,写了个粗糙的:

<?php
if (count($argv) != 2) {
        echo "Usage: php ./bbe.php keyword\n";
        die;
}

$keyword = $argv[1];
$file = "/myworks/example/bbe.txt";
$line_num = 0;
$colum_num = 0;

echo $keyword . " ";
$fp = @fopen($file, "r");
while (!feof($fp)) {
        $line_num++;
        $line_val = fgets($fp, 1024);
        if (preg_match_all("/$keyword/", $line_val, $matches)) {
                $offset = 0;
                for ($i=0; $i<count($matches[0]); $i++) {
                        $colum_num = strpos($line_val, $matches[0][$i], $offset);
                        echo $line_num . "," . $colum_num." ";
                        $offset = $colum_num + strlen($keyword);
                }
        }
}
@fclose($fp);
echo "\n";
?>


  我第一眼看到这题也是这么想的,可再一想,这样可能有问题,用了正则表达式,算法的复杂度肯定达不到要求,PHP搞多了,平时都用习惯了,想也不想。
  我认为这道题应该是这样,首先不是使用fgets取整行字符串,应该用fgetc一个一个取。然后根据取出的值做判断,如:如果是[a-zA-Z0-9]的字符,则做A操作,如果取出的不是在这个范围,则做B操作,如果是\n(换行符)则linenum+=1等等,类似一个状态机的操作吧,这里就不详细解释了,今天就不写代码了,哪天有空我贴下。
0 请登录后投票
   发表时间:2010-11-05  
超大文件也可以弄,无非你设定个预先读取的量,分批处理 4m分成 1m * 4  4G分成400份
或是建立一个中间索引文件,然后用四个进程同时跑,原题好像没有时间限制...跑去呗...要是嫌效率低,再实现的基础上改遍历算法..
0 请登录后投票
   发表时间:2010-11-09  
0分飘过 字数不够?
0 请登录后投票
   发表时间:2010-12-17  
php底层还是要知道啊,努力学习
0 请登录后投票
   发表时间:2010-12-23  
纯的后端程序员啊
0 请登录后投票
   发表时间:2011-01-09  
搞了两年PHP开发,还是被这些题给问住了。。。
0 请登录后投票
   发表时间:2011-03-11  
renzhen 写道
3)提供给你的机器OS为ubuntu 9.10,内存只有1G,而且,很不幸的,其中700M用来做了别的
不知道这句话对编程有什么影响?


提供你的信息:
1. 编程环境(LINUX)
2. 可用内存(不大于300M)


0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics