PHP的面试题集,附我的答案和分析(一)
程序员文章站
2023-12-24 14:34:33
面试题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的时候再写.
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的时候再写.