免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3571 | 回复: 0
打印 上一主题 下一主题

php面试题,附答案 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-26 23:39 |只看该作者 |倒序浏览
【转】看了一下前一个面试题帖发现好多都没有答案所以自己整理了一些不是很完整,也不难如果觉得有用就看看吧。

部分试题及答案

    1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)
    <?php
    //echo date('Y-m-d H:i:s',time()-60*60*24
    echo date("Y:m:d H:i:s",strtotime("-1 day");
    ?>


    2、echo(),print(),print_r()的区别(3分)
    echo是语言结构,无返回值;print功能和echo基本相同,不同的是print是函数,有返回值;print_r是递归打印,用于输出数组对象

    3、能够使HTML和PHP分离开使用的模板(1分)
    so much,其实PHP本身就是一种模版引擎,我用过的是smarty,常见的还有PHPLib,FastTemplate,Savant这里有个模板引擎列表:http://www.sitepoint.com/forums/showthread.php?t=123769

    4、使用哪些工具进行版本控制?(1分)
    CVS和SVN,SVN号称下一代CVS,功能强大,不过CVS是老牌,市占率很高.我一直用SVN,题目是问用什么工具,呃,这个可能需要这么回答:CVS Server on Apache作服务端,WinCVS作客户端;Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端,或者Subclipse做客户端


    5、如何实现字符串翻转?(3分)
    <?php
    function reverse($var)
    {
    $res="1";
    for($i=0,$j=strlen($var);$i<$j;$i++)
    {
    $res=$var[$i].$res;
    //echo $var[$i]."...";
    }
    return $res;
    }
    $tmpvar="abcde";
    $res=reverse($tmpvar);
    echo $res;
    ?>

    ---------------------------------------------------------------

    6、优化MYSQL数据库的方法。(4分,多写多得)
    (1).数据库设计方面,这是DBA和Architect的责任,设计结构良好的数据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),允许部分数据冗余,避免JOIN操作,以提高查询效率
    (2).系统架构设计方面,表散列,把海量数据散列到几个不同的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read & write,从服务器read only,或者N台服务器,各机器互为Master
    (3).(1)和(2)超越PHP Programmer的要求了,会更好,不会没关系.检查有没有少加索引
    (4).写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡尔积的全连接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每一个sql语句
    (5).所得皆必须,只从数据库取必需的数据,比如查询某篇文章的评论数,select count(*) ... where article_id = ? 就可以了,不要先select * ... where article_id = ?然后msql_num_rows.
    只传送必须的SQL语句,比如修改文章的时候,如果用户只修改了标题,那就update ... set title = ? where article_id = ?不要set content = ?(大文本)
    (6).必要的时候用不同的存储引擎.比如InnoDB可以减少死锁.HEAP可以提高一个数量级的查询速度

    7、PHP的意思(送1分)
    Hypertext Preprocessor 个人网页超文本预处理器 (服务器端使用的脚本语言)

    8、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)
    mysql> select now();
    Date_Format('2009-01-28','%Y-%m-%d')  

    9、实现中文字串截取无乱码的方法。(3分)

    ---------------------------------------------------------------
    $length) { $str=''; $len=$start+$length; $i = $start; while($i<$len) { if(ord(substr($string, $i, 1))>=12 { $str.=substr($string, $i, 3); $i = $i+ 3; } else { $str.=substr($string, $i, 1); $i ++; } } return $str; } else { return $string; } } ?>
    10、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分)
    SVN SVS
    11、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分)
    smarty
    12、请简单阐述您最得意的开发之作(4分)

    13、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)
    可以根据需要以下方法
    1、    PHP缓存
    2、    生成html静态页面
    3、    使用主辅数据库,把数据库的读写分开
    4、    使用负载均衡器和多台服务器


    -----------------------------------------------------------------

    14、用PHP写出显示客户端IP与服务器IP的代码1分)
    <?php
    $ip=gethostbyname ("";
    echo $ip;
    ?>

    15、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分)
    include():这个函式容许你在脚本中把同一个档案插入多次,若果档案不存在,它会发出系统警告并继续执行脚本。
    include_once():它跟 include() 的功能相似,正如它的名字所示,在脚本的执行期间,有关档案只会被插入一次。
    require():跟 include() 差不多,它也是用来在脚本中插入其他档案,但若果档案不存在,它会发出系统警告,这个警告会引致致命错误令脚本中止执行


    16、如何修改SESSION的生存时间(1分).
    方法一:
    将php.ini 中session.gc_maxlifetime 设置为 9999(默认为 1440)重启 apache 即可
    方法二:
    $savePath = "./session_save_dir/";
    $lifeTime = 24 * 3600;
    session_save_path($savePath);
    session_set_cookie_params($lifeTime);
    session_start();
    方法三:
    setcookie() 或session_set_cookie_params($lifeTime)


    17、有一个网页地址, 比如PHP研究室主页: http://www.phpv.net/index.html,如何得到它的内容?($1分)
    $content=file_get_contents('http://www.windsfly.cn/index.asp');

    18、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)
    401表示未授权;header("HTTP/1.0 404 Not Found";

    19、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)
    heredoc的语法是用"<<<"加上自己定义成对的标签,在标签范围內的文字视为一个字符串
    <?php
    $str = <<<EOD
    I saw a dog yesterday.
    EOD;
    ?>
    需要注意的是:
    1、"<<<"后面的EOD是自己定义的标签名称,必须要成对,而且后面要加上分号表示结束。
    2、结束的标签前面最好不要有空格,以免发生错误


    20、谈谈asp,php,jsp的优缺点(1分)

    21、谈谈对mvc的认识(1分)
    MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程 序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

    -------------------------------------------------------------------

    22、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)
    SELECT username,posts FORM members ORDER BY posts DESC LIMIT 10;

    23. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)
    按值传递:函数范围内对值的任何改变在函数外部都会被忽略
    按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
    优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。
    按引用传递则不需要复制值,对于性能提高很有好处。


    24. 在PHP中error_reporting这个函数有什么作用? (1分)
    error_reporting( ) 用于设置php的侦听错误的级别.[用来配置错误信息回报的等级].

    25. 请写一个函数验证电子邮件的格式是否正确 (2分)
    <?php
    if(isset($_POST['action']) && $_POST['action']=='submitted')
    {
        $email=$_POST['email'];
        if(!preg_match("/^(?:w+.?)*w+@(?:w+.?)*w+$/",$email))
        {
            echo "电子邮件检测失败";
        }
        else
        {
            echo "电子邮件检测成功";
        }
    }
    else
    {
    ?>


    26. 简述如何得到当前执行脚本路径,包括所得到参数。(2分)

    $url_this = "http://".$_SERVER ['HTTP_HOST'].$_SERVER['PHP_SELF'];
    echo $url_this;
    则显示 :   http://localhost/lu.php


全部试题
php面试题,附答案.rar (7.56 KB, 下载次数: 128)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP