欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP的面试题集,附我的答案和分析(一)

程序员文章站 2022-12-26 14:30:52
面试题1 1、用php打印出前一天的时间格式是2006-5-10 22:21:21 2、echo(),print(),print_r()的区别 3、能够使html...
面试题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()

面试题2
var $empty = '';
var $null = null;
var $bool = false;
var $notset;
var $array = array();
1.
$a = "hello";
$b = &$a;
unset($b);
$b = "world"; 
what is $a?

2.
$a = 1;
$x = &$a;
$b = $a++; 
what is $b?


3.
$x = empty($array);
what is $x? true or false


4.您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?

5.您是否用过模板引擎? 如果有您用的模板引擎的名字是?

6.请简单阐述您最得意的开发之作.

7.对于大流量的网站,您采用什么样的方法来解决访问量问题?

8.用php写出显示客户端ip与服务器ip的代码:

答案一次更新blog的时候再写.