FeiYan

网站导航

搜索

腾讯微博 新浪微博 FeelBLog 开源中国社区

几道PHP基础笔试题

2012-10-15 00:56:27     7个评论     3463次访问

大公司的面试和笔试确实是比较能检验一个PHPer的水平和基本功的,最近几次笔试我发现在基础方面的考查题中字符串和数组考查算是比较多的,下面是我能回忆起来的几个公司的面试题中总结出来几道简答题,有些就是以前别的公司出过的面试题。

1. 写一个函数获取URL的文件后缀,例如“http://www.feiyan.info/test.php?c=class&m=method”(获得php或者.php)。

这个题是很早以前新浪出过的题,需要吐糟的是copy这道题的公司连URL都是用的新浪的,太木有职业素养了。这道题我当时给的解法是用正则匹配“.”和“?”之间的纯英文,当然从效率上将使用一些字符串函数处理就行,下面是三种获取URL中文件后缀的方法,如果是获取当前URL的方法可能会更多。

function getFileName1( $url ) {
    $url = basename($url);
    preg_match( "/\.([a-z]+?)\?/", $url, $matches );
    if( !isset( $matches[1] ) ){
        return false;
    }
    return $matches[1];
}
  
function getFileName2( $url ) {
    $arr = parse_url($url);
    if( !isset( $arr['path'] ) ){
        return false;
    }
    return substr($arr['path'],strpos($arr['path'],'.')+1);
}
  
function getFileName3( $url ) {
    $url = basename($url);
    $pos1 = strpos($url,'.');
    $pos2 = strpos($url,'?');
    return substr( $url, $pos1+1, $pos2-$pos1-1 );
}

2. 写一个函数,将一个字符串每隔三个字符添加一个逗号,例如把字符串1234567890转换为1,234,567,890(金融中用到的记账方法)。

这个题是以前百度的笔试题,网上给的解决方法是使用正则,这个用正则我是很难想到的,我写的方法是使用字符串函数和数组函数解决,想看正则解决方法的可以去搜搜看。

function splitStr( $str ){
    $arr = str_split(strrev($str),3);
    //循环并且使用引用
    foreach( $arr as &$v ){
        $v = strrev($v);
    }
    return implode(',',array_reverse($arr));
}

3. 写一个php函数算出两个文件的相对路径。例如$a="/a/b/c/d/e.php"; $b="/a/b/12/34/c.php",B相对于A的相对路径是什么?

这个又是新浪的笔试题,很多公司出一些网上流传过的题很坑人,会影响对水平的判断的,这个不多说了,上代码。

function getRelativePath( $a, $b ){
    $arrA = explode('/',$a);
    $arrB = explode('/',$b);
    $count = count($arrB);
    $path = '';
    for( $i=1; $i < $count-1; $i++ ){
        $path .= isset($arrA[$i]) && $arrA[$i]==$arrB[$i] ? '../' : $arrA[$i].'/';
    }
    return $path.$arrA[$count-1];
}

4. 计算两个日期之间的天数。

这个题我笔试的时候写了三种方法,从简单到复杂。第一种方法是先把两个日期strtotime()后计算差值,然后除以86400就是天数;第二种是使用PHP内置DateTime类,不过要确定在PHP.ini中启用了这个扩展;第三种方法就是写一堆函数一大串代码去计算天数差了。这三种方法的代码我就不写了,尤其是第三种太罗嗦了,O(∩_∩)O哈哈哈~。

上面这些题一般都有很多种解决方法,不过如果为了追求更好的效率更好的代码,就得深入下一层了。其中还有一些题我想不起来了或者是还没有测试我的代码,以后总结其他PHP笔试题的时候发布。

文章标签: php  笔试题 

本文地址:几道PHP基础笔试题

相关文章

2009-08-20:常用PHP类建站程序和源码

2009-11-06:PHP中出现Notice: Undefined index的三种解决办法

2011-01-09:PHP转换IP地址到真实地址

2011-11-03:PHP转换汉字拼音和Unicode

2011-11-29:EditPlus 3.x 配置PHP开发环境

2011-12-28:单点登录系统(SSO)的开发思路

2012-08-17:用PHP开发一个自己的博客

2012-09-03:高性能网站架构基础篇

2012-09-17:常用PHP正则表达式

2012-09-17:Ubuntu编译Yaf

7 Comments »

  1. 飞晏飞晏
    的确,谢谢您的体系,我会抽空修正

    @wangzhengyi: 您好,第三问求相对路径题目,你的做法是错误的,可以看成是求第一个公共祖先的题目

    2013-07-29 13:37:48   

  2. wangzhengyiwangzhengyi
    您好,第三问求相对路径题目,你的做法是错误的,可以看成是求第一个公共祖先的题目

    2013-07-27 15:00:31   

  3. wmtimeswmtimes
    看来我是真不懂啊。

    2012-10-18 00:49:50   

  4. Anshao微博客Anshao微博客
    流口水啊..

    2012-10-17 17:54:28   

  5. 志言志言
    呃,一年就换到互联网公司啊

    @飞晏: 已经换了,后天就去搜狐了。// @志言: 我只关心,准备换了?

    2012-10-15 20:12:18   

  6. 飞晏飞晏
    已经换了,后天就去搜狐了。

    @志言: 我只关心,准备换了?

    2012-10-15 10:32:09   

  7. 志言志言
    我只关心,准备换了?

    2012-10-15 10:14:26   

发布评论

最新评论

  1. SpecsSpecs

    不错~~

  2. zhyzhy

    我也遇到这个问题 不知道是swf 、jcrop 、 uploadify 还是浏览器缓存

  3. java开发java开发

    您好!我按你的源码进行了编,能正常运行,但是我们项目是由java开发的,怎么做才能将生成的一个可执行文件?我想把这个文件放到服务器上直接运行,不想安装~