发布新日志

  • 分布式查询

    2010-12-03 18:14:22

    pkill -9 -f mail_sender.php

    senderid=0
    while [ $senderid -lt 10 ]
    do
    php mail_sender.php -c 10 -i $senderid &
    echo $senderid
    sleep 3
    senderid=$(( $senderid + 1 ))
    done


    ---start.sh
  • PHP初级程序员面试题及答案

    2009-12-05 01:51:22

    面试题1
    1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21
    2、echo(),print(),print_r()的区别
    3、能够使HTML和PHP分离开使用的模板
    4、如何实现PHP、JSP交互?
    5、使用哪些工具进行版本控制?
    6、如何实现字符串翻转?
    7、优化MYSQL数据库的方法。
    8、谈谈事务处理
    9、apache+mysql+php实现最大负载的方法
    10、实现中文字串截取无乱码的方法。

    答案:

    1.echo date('Y-m-d H:i:s', strtotime('-1 day'));

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

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

    4.题目有点含糊不清,SOAP,XML_RPC,Socket function,CURL都可以实现这些,如果是考PHP和Java的整合,PHP内置了这种机制(如果考PHP和.NET的整合,也可以这么回答),例如$foo = new Java('java.lang.System');

    5.CVS和SVN,SVN号称下一代CVS,功能强大,不过CVS是老牌,市占率很高.我一直用SVN,题目是问用什么工具,呃,这个可能需要这么回答:CVS Server on Apache作服务端,WinCVS作客户端;Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端,或者Subclipse做客户端.

    6.用strrev函数呗,不准用PHP内置的就自己写:
    function strrev($str)
    {
    $len=strlen($str);
    $newstr = '';
    for($i=$len;$i>=0;$i--)
    {
    $newstr .= $str{$i};
    }
    return $newstr;
    }

    7.高考政治题,把你知道的知识点都写上吧.我的答案:
    (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可以提高一个数量级的查询速度.

    8.如同是个编程语言都会有答应Hello World的例子一样,是本数据库的教材都会讲A给B的账户转账50美元的例子,回答这个就好了.不过据我所知,用MySQL的企业,很少用MySQL来实现事务处理.何况现在Oracle收购了InnoDB的公司.

    9.参见第七题的答案,那个地方搞好了这个问题就迎刃而解了.

    10.哈哈哈,我猜出题的人是不是被substr的中文处理问题烦恼很久了,是不是还用了网上流传的用正则匹配中文字符然后截取的函数,其实,有非常简单的解决方法:mb_substr()


    附一位PHPer读后感:
    1. 这题嘛,查PHP手册时间函数的用法 (面试官赞许的点点头)
    2. 这个是基本函数, 确实是要会的. 主要是ECHO效率比PRINT高, 因为PRINT要返回值, ECHO不用.
    3. 这个是要会的, 至少要在思想上理解. 倒不一定非要会SMARTY. (可笑当初我面试时还在大谈如何如何不喜欢SMARTY, SMARTY如何如何不好, 面试官问我说如果我必须要用SMARTY怎么办, 吓得我连忙说那我会努力学)
    4. 没被问到过.
    5. 这个也是要了解的, 至少知道个名字.
    6. 这个如果真的问到那我多半是要自己写了. (我个人一直很反感考PHP的函数, 我要都能记得住, 那还要PHP手册和GOOGLE来有什么用.)
    7. 这个,,,这个, 要我写论文还是写书啊...
    8. 没什么好谈的.
    9. 缓存, 数据库优化, LOAD BALANCE (这个中文是叫负载均衡吧.)
    10. 不在中国, 不用考虑.

Open Toolbar