继续求 PHP 开发工作

2015-03-09 12:05:55 +08:00
 flash866
年32。
个人期望:合理待遇+公积金,拒外包希望做长期运营类项目。
邮箱: flash866@qq.com
腾讯圣经题(上帝让在圣经中查词,因为不知道圣经到底多大,用了日志文件替代圣经):
<?
/**
 * Tencent 圣(神)经题
 * @version 1.01
 * @author 子悟
 * @description 缺陷:单线程很慢 ,不如按行读取后放入数据库,将优化工作交给数据库实现
 */
//ini_set('max_execution_time','500');
set_time_limit(500);
function search($str){
    $start = memory_get_usage();
    $startTime = microtime(true);
    $fo=fopen('access_log','r');
    $lineNumber=1;
    $searchResult='';
    while($lineStr = fgets($fo)){
        //echo $lineNumber,':',$lineStr;
        //$result=strpos($lineStr,$str);
        $arr=explode(' ',$lineStr);
        $result=array_search($str,$arr);
        if($result !== false){
            $searchResult .= 'row:'.$lineNumber.',clomun:'.($result+1)."<br/>";
        }
        $lineNumber++;
    }
    fclose($fo);

    $mdiff=(memory_get_usage()-$start);
    $tdiff=microtime(true)-$startTime;
    if($searchResult){
        return $searchResult . "[$mdiff B][$tdiff ms]";
    }else{
        return 'sorry!can\'t found it!'."[$mdiff B][$tdiff ms]";
    }
}
/*使用方法:传key参数*/
echo search($_GET['key']);
4499 次点击
所在节点    求职
30 条回复
robotdiy
2015-03-09 12:13:00 +08:00
php实现:输出 10,000 以内的三生素数,以换行符分隔。
overflow
2015-03-09 12:31:20 +08:00
代码写得真的有点差
yd
2015-03-09 12:32:48 +08:00
@robotdiy 哈哈,这道题刷掉不少人。
flash866
2015-03-09 13:05:46 +08:00
@overflow 求指点
RemRain
2015-03-09 13:25:02 +08:00
```
$startTime = microtime
$fo=fopen

'row:'.$lineNumber
$searchResult . "[$mdiff B][$tdiff ms]"

'row:'
"<br/>"
```
RemRain
2015-03-09 13:33:06 +08:00
运行结果:
 /tmp/php $ php e.php
PHP Notice: Undefined index: key in /private/tmp/php/e.php on line 37

Notice: Undefined index: key in /private/tmp/php/e.php on line 37
PHP Warning: fopen(access_log): failed to open stream: No such file or directory in /private/tmp/php/e.php on line 13

Warning: fopen(access_log): failed to open stream: No such file or directory in /private/tmp/php/e.php on line 13
PHP Warning: fgets() expects parameter 1 to be resource, boolean given in /private/tmp/php/e.php on line 16

Warning: fgets() expects parameter 1 to be resource, boolean given in /private/tmp/php/e.php on line 16
PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /private/tmp/php/e.php on line 26

Warning: fclose() expects parameter 1 to be resource, boolean given in /private/tmp/php/e.php on line 26
sorry!can't found it![1664 B][0.00013899803161621 ms]
lbp0200
2015-03-09 13:47:34 +08:00
mysql烹饪指南里有这个例子哈
RemRain
2015-03-09 13:56:54 +08:00
除了等号、点号左右空格不一致、单双引号混用、文件操作未作异常处理外的其他槽点:

1. 起始标记没用 <?php 导致很多环境下无法正常执行,而是直接打印出代码

2. 直接修改了运行时间,而且写出魔鬼数字,未作说明。执行后也没有还原,真 require 这个文件就惨了

3. 无用代码(被注释的部分)没有删除

4. search 函数返回的居然是提示字符串

5. 唯一一句英文提示,句首字母未大写,而且有语法错误

6. 函数内变量命名居然有 startTime, fo, arr, mdiff 各种风格,且很多变量容易混淆,如:start, startTime, result, searchResult

同意 @overflow 的观点
loveyu
2015-03-09 14:14:57 +08:00
感觉我代码风格差不多,咋办
neutrino
2015-03-09 14:27:54 +08:00
上次说找不到php的那个谁来着。。
haiyang416
2015-03-09 14:31:56 +08:00
话说我也准备找。
但是看到楼主发的几个求职帖,我真替楼主着急,要用点心啊。
thanksir
2015-03-09 15:06:21 +08:00
我觉得楼主应该把简历亮出来
MarsWang
2015-03-09 16:12:45 +08:00
zhiming137 gmail 发分简历来?
overflow
2015-03-09 17:57:57 +08:00
@RemRain 说出了具体的问题。

这也是为什么面试的时候让写一个函数基本就可以确定这个人的层次水平了。楼主的水平还是比较低级。
RihcardLu
2015-03-09 18:03:34 +08:00
@robotdiy 这道题的难点在哪里?刚写了下,发觉还好。
woshicixide
2015-03-09 19:08:56 +08:00
@RemRain 啥是魔鬼数学
RemRain
2015-03-09 20:11:59 +08:00
@woshicixide 就是代码中突然出现一个数字,只有鬼能看懂

示例:
if (id == 17628) {
i++;
}
kn007
2015-03-09 20:46:35 +08:00
@RemRain 想了解正确写法?对PHP认知只在于修改,好奇比较符合规矩的算法。。。
RemRain
2015-03-09 21:10:53 +08:00
@kn007 PSR,如果是修改别人代码的话,最好保持原有的代码风格
lijinma
2015-03-10 09:54:48 +08:00
@woshicixide 应该叫魔术数字,实际代码中,应该用 const 代替魔术数字。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/175507

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX