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

面试题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的时候再写.

(0)

相关推荐

  • 10个值得深思的PHP面试题

    文章所罗列的问题虽然看似简单,但是每个背后都涵盖了一个或几个大家容易忽视的基础知识点,希望能够帮助到你的面试和平时工作. Q1 第一个问题关于弱类型 $str1 = 'yabadabadoo'; $str2 = 'yaba'; if (strpos($str1,$str2)) { echo "/"" . $str1 . "/" contains /"" . $str2 . "/""; } else { ec

  • 色色整理的PHP面试题集锦

    PHP 基础知识部分 1. 求$a的值 复制代码 代码如下: $a = "hello"; $b = &$a; unset($b); $b = "world"; echo $a; 2. 求$b的值 复制代码 代码如下: $a = 1; $x = &$a; $b = $a++; echo $b; 3. 写出一个函数实现 删除指定目录包括其下的所有子目录以及文件 4. 写一个函数,算出两个文件的相对路径,如: $a = '/a/b/c/d/e.php';

  • PHP经典面试题集锦

    本文较为详细的分析了PHP经典面试题.分享给大家供大家参考.具体如下: 做了一下网络上的php题目,不知不觉做到现在.....把答案贴出来,供参考之用. 1.用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分) $a = date("Y-m-d H:i:s", strtotime("-1 day")); print_r($a); 2.echo(),print(),print_r()的区别(3分) echo 和print不是一个函数,是一个语言

  • PHP的面试题集

    面试题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.实现中文字串截取无乱码的方法. 面试题2 var $empty       = ''; var $null

  • 几道坑人的PHP面试题 试试看看你会不会也中招

    这几道题是在德问上看到的,感觉挺有意思,拿来给大家分享其中的陷阱,看看你会不会掉入其中. 第一题 复制代码 代码如下: $arr = array(0=>1,"aa"=>2, 3, 4);   foreach($arr as $key=>$val){     print($key == "aa" ? 5 : $val); } 输出结果是多少?如果的答案是1534就掉入陷阱了. 先看看这个数组最终形成的结构: 复制代码 代码如下: Array (   

  • 腾讯QQ php程序员面试题目整理

    说在前面: 1.以下题目,除了编程任务外其他都需要写在给你提供的草纸上.纸张是珍贵的地球资源,请节约使用.编程任务在有相应的环境时,会要求上机书写,实在没有条件,就只能写在草纸上了. 2.时间: 基础任务+进阶任务+设计任务 = 90分钟 编程任务 = 60分钟 基础任务: 1.请列举你能想到的UNIX信号,并说明信号用途. 2.请列举.你能想到的所有的字符串查找算法,并加注释简单说明. 3.有一个IP地址(192.168.0.1),请写出其32位无符号整数形式. 4.写出.你能想到的所有HTT

  • php牛逼的面试题分享

    1.nginx使用哪种网络协议? nginx是应用层 我觉得从下往上的话 传输层用的是tcp/ip 应用层用的是http fastcgi负责调度进程 2. <? echo 'hello tusheng' ; ?> 没有输出结果, 可能是什么原因, 简述的解决此问题的过程(提示: 语法没有问题) 可能服务器上面没有开启短标签short_open_tag =设置为Off,,php.ini开启短标签控制参数: short_open_tag = On 3. 简述下面程序的输出结果, 简要说明为什么,

  • 超级全面的PHP面试题整理集合第1/2页

    1.用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分) 2.echo(),print(),print_r()的区别(3分) 3.能够使HTML和PHP分离开使用的模板(1分) 4.使用哪些工具进行版本控制?(1分) 5.如何实现字符串翻转?(3分) --------------------------------------------------------------- 6.优化MYSQL数据库的方法.(4分,多写多得) 7.PHP的意思(送1分) 8.MYSQL取

  • PHP 分页类(模仿google)-面试题目解答

    笔试回答的不太好,特别是JS部分,也是许久都没复习的原因. 上机题目是要写一个仿google分页的类,当要取类似9/2的最大整数,却怎么也想不起函数ceil的名字,晕了半天. 最后测试程序没错误,但是就是不能正常显示,后来(回家后)一查才知道是语句:for($i=0;$i++;$i<9)写错了,于是下决心重新写一遍,于是就有了下面的代码了: 复制代码 代码如下: <?php /* 显示样式如下: [1] 2 3 4 5 6 7 8 9 10 ...100 下页 尾页 首页 上页 1..12 1

  • 据说是雅虎的一份PHP面试题附答案

    从网上搜集到的,据说是雅虎的面试题. 1. Which of the following will not add john to the users array? 1. $users[] = 'john'; 2. array_add($users,'john'); //wrong 3. array_push($users,'john'); 4. $users ||= 'john'; //wrong 2. What's the difference between sort(), asort()

随机推荐