php经典面试题(3篇)

来源:专题 时间:2016-06-30 12:01:39 阅读:

【www.zhuodaoren.com--专题】

第一篇:《php经典面试题及答案非常实用》

最常见的php面试题

目录

面试题一 .......................................................................................................................................... 1

面试题二 .......................................................................................................................................... 3

面试题三 .......................................................................................................................................... 4

面试题四 .......................................................................................................................................... 6

面试题五 .......................................................................................................................................... 7

面试题六 .......................................................................................................................................... 8

面试题七 .......................................................................................................................................... 9

本面试题分为七套,这些大部分都是本人被面试过的总结,发出来给大家参考,希望能助你在面试中顺利过关!

面试题一

1、表单提交get和post有何区别?

答:get的方式是把数据在地址栏中发送,get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

2、用PHP打印出前一天的时间格式是2006-5-10 22:21:21

echo date("Y-m-d H:i:s",time()-(3600*24));或echo date("Y-m-d H:i:s",strtotime("-1 day"));

3、php中include和require的区别?

这两种结构除了在如何处理失败之外完全一样。include() 产生一个警告而 require() 则导致一个致命错误。换句话说,如果你想在遇到丢失文件时停止处理页面就用 require()。include() 就不是这样,脚本会继续运行。

4、echo(),print(),print_r()的区别

echo可以接多个参数,print只能接一个参数,它们都是PHP的语言结构,print_r是递规打印,用来打印数组或对象

5、能够使HTML和PHP分离开使用的模板

smarty,phplib,SmartTemplate 6你如何理解MVC模式?

首先说一下框架,框架:就是别人把一些底层,常用操作.比如数据操作(增,删,改,查)写好.你来直接用.其它的功能要自己来做。

MVC:设计模式,M模型,V显示,C控制.现在许多框架都是基于MVC来做的把逻辑和显示分开.比如你要换页面,只需要改V里面的东西并不需要再去变动程序(详细的东西可以上网上!

查一下)

7、如何实现PHP、JSP交互?

PHP提供了支持JAVA的类库文件,或者通过HTTP协议来交互数据

8、使用哪些工具进行版本控制?

VSS,CVS,SVN

9、如何实现字符串翻转?

不考虑中英文混合,不是最优算法,不用php库函数翻转字符串:

function str_to_reverse( $str ){

for($length=0;$str[$length]!=null;$length++){;}

$strlength = $length-1;

unset($length);

for($start=0,$end=$strlength;$start<$end;$start++,$end--){

$temp = $str[$start];

$str[$start] = $str[$end];

$str[$end] = $temp;

}

unset($temp,$start,$end,$strlength);

return $str;

}

10、优化MYSQL数据库的方法。

1) 将where中用的比较频繁的字段建立索引,联合索引。

2) 保证单表数据不超过200W,适时分割表。

3) 避免使用长连接。

4) 修改my.cnf里面的各项参数,比如最大连接数,查询缓存等。根据你的服务器内存来最大化调节那些配置参数。

5) 针对需求,使用正确的表引擎,是myisam或是innodb。

11.用PHP写出显示客户端IP与服务器IP的代码:

echo $_SERVER['REMOTE_ADDR'] //客户端ip

echo $_SERVER['SERVER_ADDR'] //服务器端ip

12、apache+mysql+php实现最大负载的方法

1) 问的太笼统,生成静态html页面,squid反向代理,apache,mysql的负载均衡。

2) 可以采取数据缓存的方法,我们通常在统计数据的时候,需要在原始数据的基础上经过计算等一系列操作,才会得到最终的结果,如果每做一个查询都需要这样一系列操作,当数据量大时,势必会带来很多问题。可以建立一个结果表,写一个脚本,用crontab定时触发

脚本去原始表取数据,计算,写入到结果表,前端查询从结果表取数据,这也是比较常用的一种做法。

3) 采用分布式,多个apache,多个mysql,其实就是dns负载均衡,dns根据当前用户解析几个ip的ping值,将用户转移到某一台最快的服务器,或者平均分配。

4 )money不是问题的话,可以考虑F5硬件负载均衡!

5)可以使用Microsoft Windows Server系统的负载均衡设置

面试题二

1、PHP/MySQL编程

1) 某内容管理系统中,表message有如下字段

id 文章id

title 文章标题

content 文章内容

category_id 文章分类id

hits 点击量

创建上表,写出MySQL语句

2)同样上述内容管理系统:表comment记录用户回复内容,字段如下

comment_id 回复id

id 文章id,关联message表中的id

comment_content 回复内容

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

文章id 文章标题 点击量 回复数量

用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0

3) 上述内容管理系统,表category保存分类信息,字段如下

category_id int(4) not null auto_increment;

categroy_name varchar(40) not null;

用户输入文章时,通过选择下拉菜单选定文章分类

写出如何实现这个下拉菜单

2、PHP文件操作

1)

上述内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路 ob_start();

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

这个首先要考虑字符集的问题,UTF-8下一个汉字占3字节,GBK下一个汉字占2字节.可以自己写个函数来处理,别人也写了很多,当然也可以开启mbstring扩展库,使用里面的mb_substr()等函数来截取。当截取字符出现乱码时,是因为汉字被截断了,可以再字符串尾部连上一个chr(0)

var $empty = '';

var $null = NULL;

var $bool = FALSE;

var $notSet;

var $array = array();

面试题三【php经典面试题(3篇)】

1.

$a = "hello";

$b = &$a;

unset($b);

$b = "world";

what is $a?

hello,unset($b)只是释放了$b自己和$a的别名关系,并不会释放$a

2.

$a = 1;

$x = &$a;

$b = $a++;

what is $b?

1,先执行$b = $a,$a++再进行,所以$b还是1

3.

$x = empty($array);

what is $x? true or false

true,$array是空数组

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

CVS:winCVS,是一个CVS的客户端

VSS,微软的产品,比较适合中小型项目,只支持单人checkout

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

SMARTY,php官方推荐的模板引擎,它是编译型模板,与phplib不太相同,功能强大,30多种标签,支持cache

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

hdwiki,开源项目,mediawiki的使用性国人很不适应,代码修改起来也比较困难.hdwiki比较适合目前的国人使用.

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

1 squid反向代理

8、谈谈事务处理

可以控制并发操作所产生的数据同步提交、更新所带来的冲突问题.可以进行comit,rollback操作,数据的安全性得到了提高。

2) 简单描述用户修改以发布内容的实现流程和基本思路

9、PHP程序

1) 写出以下程序的输出结果

<?

$b=201;

$c=40;

$a=$b>$c?4:5;

echo $a;

第二篇:《最全最详细的PHP面试题(带有答案)》

1

php面试题及答案(原创)收藏

基础题:

1.表单中 get与post提交方法的区别?

答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.

2.session与cookie的区别?

答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放

cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。

两者都可通过时间来设置时间长短

3.数据库中的事务是什么?

答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,

事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

简述题:

1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)****************

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

2、echo(),print(),print_r()的区别(3分)

答:echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print() 只能打印出简单类型变量的值(如int,string)

print_r() 可以打印出复杂类型变量的值(如数组,对象)

echo 输出一个或者多个字符串

3、能够使HTML和PHP分离开使用的模板(1分)

答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate

5、使用哪些工具进行版本控制?(1分)

答:cvs,svn,vss;

6、如何实现字符串翻转?(3分)

答:echo strrev($a);

7、优化MYSQL数据库的方法。(4分,多写多得)

答:

1、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM

2、使用连接(JOIN)来代替子查询:

3、使用联合(UNION)来代替手动创建的临时表

4、事务处理:

5、锁定表,优化事务处理:

6、使用外键,优化锁定表

7、建立索引:

8、优化查询语句

8、PHP的意思(送1分)

答:PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页

9、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)

答:now(),date()

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

Mb_substr

答:function GBsubstr($string, $start, $length) {

if(strlen($string)>$length){

$str=null;

$len=$start+$length;

for($i=$start;$i<$len;$i++){

if(ord(substr($string,$i,1))>0xa0){

$str.=substr($string,$i,2);

$i++;

}else{

$str.=substr($string,$i,1);

}

}

return $str.'...';

}else{

return $string;

}

}

11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分)

12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分)

答:用过,smarty

13、请简单阐述您最得意的开发之作(4分)

答:信息分类

14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)

答:确认服务器硬件是否足够支持当前的流量,数据库读写分离,优化数据表,

程序功能规则,禁止外部的盗链,控制大文件的下载,使用不同主机分流主要流量

15、用PHP写出显示客户端IP与服务器IP的代码1分)

答:打印客户端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR'); 打印服务器IP:echo gethostbyname("")

16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分) 答:require->require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require

include->include有返回值,而require没有(可能因为如此require的速度比include快)

注意:包含文件不存在或者语法错误的时候require是致命的,include不是

17、如何修改SESSION的生存时间(1分).

答:方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache

方法2:$savePath = "./session_save_dir/";

$lifeTime = 小时 * 秒;

session_save_path($savePath);

session_set_cookie_params($lifeTime);

session_start();

方法3:setcookie() and session_set_cookie_params($lifeTime);

18、有一个网页地址, 比如PHP开发资源网主页: /index.html,如何得到它的内容?($1分)

答:方法1(对于PHP5及更高版本):

$readcontents = fopen("/index.html", "rb");

$contents = stream_get_contents($readcontents);

fclose($readcontents);

echo $contents;

方法2:

echo file_get_contents("/index.html");

19、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)

答:状态401代表未被授权,header("Location:

12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)

答:heredoc的语法是用"<<<"加上自己定义成对的标签,在标签范围內的文字视为一个字符串 例子:

$str = <<<SHOW

my name is Jiang Qihui!

SHOW;

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

答:ASP全名Active Server Pages,是一个WEB服务器端的开发环境, 利用它可以产生和运 行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VB Script(Java script )作为自己的开发语言。【php经典面试题(3篇)】

PHP是一种跨平台的服务器端的嵌入式脚本语言. 它大量地借用C,Java和Perl语言的语法 , 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生成页面.它支持目前绝大多数数 据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(t)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。

JSP 是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病-- 脚本级执行(据说PHP4 也已经在Zend 的支持下,实现编译运行).Sun 公司借助自己在Jav a 上的不凡造诣,将Java 从Java 应用程序 和 Java Applet 之外,又有新的硕果,就是Js p--Java Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能强大的站点

程序。

三者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。 但JSP代码被编译成 Servlet 并由 Java 虚拟机解释执行,这种编译操作仅在对 JSP 页面的 第一次请求时发生。在 ASP 、PHP、JSP 环境下, HTML 代码主要负责描述信息的显示样式 ,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 、PH P、JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到 HTML 代码中,然后一起发送给浏览器。 ASP 、PHP、 JSP三者都是面向 Web 服务器的技术

,客户端浏览器不需要任何附加的软件支持。

14、谈谈对mvc的认识(1分)

答:由模型(model),视图(view),控制器(controller)完成的应用程序

由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图;

15、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)

答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;

16. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)

答:按值传递:函数范围内对值的任何改变在函数外部都会被忽略

按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改

优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。

按引用传递则不需要复制值,对于性能提高很有好处。

17. 在PHP中error_reporting这个函数有什么作用? (1分)

答:设置错误级别与错误信息回报

18. 请写一个函数验证电子邮件的格式是否正确 (2分)

答:function checkEmail($email)

{

$pregEmail = "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i";

return preg_match($pregEmail,$email);

}

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

答:$script_name = basename(__file__); print_r($script_name);

21、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)

答:弹出对话框: alert(),prompt(),confirm()

获得输入焦点 focus()

22、JS的转向函数是?怎么引入一个外部JS文件?(2分)

答:window.location.href,<script type="text/javascript" src="js/js_function.js"></script>

23、foo()和@foo()之间有什么区别?(1分)

答:@foo()控制错误输出

24、如何声明一个名为”myclass”的没有方法和属性的类? (1分)

答:class myclass{ }

25、如何实例化一个名为”myclass”的对象?(1分)

答:new myclass()

26、你如何访问和设置一个类的属性? (2分)

答:$object = new myclass();

$newstr = $object->test;

$object->test = "info";

27、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)

答:mysql_fetch_row是从结果集取出1行数组,作为枚举

mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得

28、GD库是做什么用的? (1分)

答:gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

29、指出一些在PHP输入一段HTML代码的办法。(1分)

答:echo "<a href='index.php'>aaa</a>";

30、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)

(a) fget() (b) file_open() (c) fopen() (d) open_file() [ c ]

31、下面哪个选项没有将 john 添加到users 数组中? (1分)

(a) $users[] = ‘john’;

(b) array_add($users,’john’);

(c) array_push($users,‘john’);

(d) $users ||= ‘john’; [ a , c ]

32、下面的程序会输入是否?(1分)

$num = 10;

function multiply(){

$num = $num * 10;

【php经典面试题(3篇)】

}

multiply();

echo $num;

?>

输出:10

33、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分) 表名User

Name Tel Content Date

张三 13333663366 大专毕业 2006-10-11

张三 13612312331 本科毕业 2006-10-15

张四 021-55665566 中专毕业 2006-10-15

请根据上面的题目完成代码:

$mysql_db=mysql_connect("local","root","pass");

@mysql_select_db("DB",$mysql_db);

第三篇:《php经典面试题及答案》

基础题   1.表单中 get与post提交方法的区别?   答:get用户端将数据加到URL后,格式为”?字段1=输入数据1&字段2=输入数据2&..."。   由于get提交参数后会在地址栏中显示出来,所以会产生严重的安全问题。   get传输的数据量小,get传输的数据量小,这主要是因为受url长度限制;而post可以传输大量的数据。   get限制表单中数据集的范围为asc2码,而post可以支持整个iso10646字符集。   2.session与cookie的区别?   答:cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。   3.数据库中的事务是什么?   答:事务就是一系列的操作,这些操作完成一项任务。只要这些操作里有一个操作没有成功,事务就操作失败,发生回滚事件。即撤消前面的操作,这样可以保证数据的一致性。而且可以把操作暂时放在缓存里,等所有操作都成功有提交数据库,这样保证费时的操作都是有效操作。   简述题(50分)   1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)   2、echo(),print(),print_r()的区别(3分)   3、能够使HTML和PHP分离开使用的模板(1分)   5、使用哪些工具进行版本控制?(1分)   6、如何实现字符串翻转?(3分)   ---------------------------------------------------------------   7、优化MYSQL数据库的方法。(4分,多写多得)   8、PHP的意思(送1分)   9、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)   10、实现中文字串截取无乱码的方法。(3分)  11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分)   12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分)   13、请简单阐述您最得意的开发之作(4分)   14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)   -----------------------------------------------------------------   15、用PHP写出显示客户端IP与服务器IP的代码1分)   16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分)   17、如何修改SESSION的生存时间(1分).   18、有一个网页地址, 比如PHP开发资源网主页: /index.html,如何得到它的内容?($1分)   19、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)   12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)   13、谈谈asp,php,jsp的优缺点(1分)   14、谈谈对mvc的认识(1分)   -----------------------------------------------------

--------------   15、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)   16. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)   17. 在PHP中error_reporting这个函数有什么作用? (1分)   18. 请写一个函数验证电子邮件的格式是否正确 (2分)  19. 简述如何得到当前执行脚本路径,包括所得到参数。(2分)   20.如何修改SESSION的生存时间. (1分)   --------------------------------------------------------------------   21、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)   22、JS的转向函数是?怎么引入一个外部JS文件?(2分)   23、foo()和@foo()之间有什么区别?(1分)   24、如何声明一个名为”myclass”的没有方法和属性的类? (1分)   25、如何实例化一个名为”myclass”的对象?(1分)   26、你如何访问和设置一个类的属性? (2分)   27、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)   --------------------------------------------------------------------   28、GD库是做什么用的? (1分)   29、指出一些在PHP输入一段HTML代码的办法。(1分)   30、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)   (a) fget() (b) file_open() (c) fopen() (d) open_file()   31、下面哪个选项没有将 john 添加到users 数组中? (1分)   (a) $users[] = ‘john’;   (b) array_add($users,’john’);   (c) array_push($users,‘john’);   (d) $users ||= ‘john’;  32、下面的程序会输入是否?(1分)   $num = 10;   function multiply(){   $num = $num * 10;   }   multiply();   echo $num;   ?>   33、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分)   表名User   Name Tel Content Date   张三 13333663366 大专毕业 2006-10-11   张三 13612312331 本科毕业 2006-10-15   张四 021-55665566 中专毕业 2006-10-15   请根据上面的题目完成代码:   $mysql_db=mysql_connect("local","root","pass");   @mysql_select_db("DB",$mysql_db);   34、如何使用下面的类,并解释下面什么意思?(3)   class test{  function Get_test($num){   $num=md5(md5($num)."En");   return $num;   }   }   ----------------------------------------------------------------------------   35、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分)   表名User   Name Tel Content Date   张三 13333663366 大专毕业 2006-10-11   张三 13612312331 本科毕业 2006-10-15   张四 021-55665566 中专毕业 2006-10-15   (a) 有一新记录(小王 1

3254748547 高中毕业 2007-05-06)请用SQL语句新增至表中   (b) 请用sql语句把张三的时间更新成为当前系统时间   (c) 请写出删除名为张四的全部记录   36、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分)   37、MySQ自增类型(通常为表ID字段)必需将其设为(?)字段(1分)   38、写出以下程序的输出结果 (1分)   $b=201;   $c=40;  $a=$b>$c?4:5;   echo $a;   ?>   39、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)   -----------------------------------------------------------------------------   40、取得查询结果集总数的函数是?(1分)   41、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 (1分)   42、请将41题的数组的值用','号分隔并合并成字串输出(1分)   43、$a = 'abcdef'; 请取出$a的值并打印出第一个字母(1分)   44、PHP可以和sql server/oracle等数据库连接吗?(1分)   45、请写出PHP5权限控制修饰符(3分)   46、请写出php5的构造函数和析构函数(2分)   ------------------------------------------------------------------------------   47、以下请用PHPMYADMIN完成   (一)创建新闻发布系统,表名为message有如下字段 (3分)   id 文章id   title 文章标题   content 文章内容   category_id 文章分类id  hits 点击量   (二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分)   comment_id 回复id   id 文章id,关联message表中的id   comment_content 回复内容   现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面   文章id 文章标题 点击量 回复数量   用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0   (三)上述内容管理系统,表category保存分类信息,字段如下 (3分)   category_id int(4) not null auto_increment;   categroy_name varchar(40) not null;   用户输入文章时,通过选择下拉菜单选定文章分类   写出如何实现这个下拉菜单   编程题   1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名   例如: .cn/abc/de/fg.php?id=1 需要取出 php 或 .php   2. 在 HTML 语言中,页面头部的 meta 标记可以用来输出文件的编码格式,以下是一个标准的 meta 语句   请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta 标记中的 charset 部分值改为 big5   请注意:   1. 需要处理完整的 html 页面,即不光此 meta 语句   2. 忽略大

小写  3. ' 和 " 在此处是可以互换的   4. 'Content-Type' 两侧的引号是可以忽略的,但 'text/html; charset=gbk' 两侧的不行   5. 注意处理多余空格   3. 写一个函数,算出两个文件的相对路径   如 $a = '/a/b/c/d/e.php';   $b = '/a/b/12/34/c.php';   计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上   填空题   1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量____中;而链接到当前页面的URL记录在预定义变量____中。   2.执行程序段将输出____。   3.在HTTP 1.0中,状态码 401 的含义是____;如果返回“找不到文件”的提示,则可用 header 函数,其语句为____。   4.数组函数 arsort 的作用是____;语句 error_reporting(2047)的作用是____。   5.PEAR中的数据库连接字符串格式是____。   6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把scrīpt标记及其内容都去掉):____。   7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。   8.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句____来代替它们。   9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是____。   10.一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on.   11.SQL中LEFT JOIN的含义是____。如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句____。   12.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____。   编程题   13.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。   14.简述论坛中无限分类的实现原理。 <?php if(getenv("HTTP_REFERER")=='echo $_POST['name']; }else{ echo "错误"; } ?>

第四篇:《PHP经典面试题》

PHP经典面试题(基础型I)附答案

求职与招聘 往往少不了面试与笔试,作为一个php程序员、多多少少都会有类似的经历„„以下是本人收集并整理的PHP面试题目,希望对同行们有所帮助,找到一份合适的php开发工作!(共三节) 以下是面试的题目(一)

1、用PHP打印出前一天的时间格式是2009-02-10 22:21:21(2分)

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

或者

$yesterday = time() - (24 * 60 * 60);

echo 'today:'.date('Y-m-d H:i:s')。"n";

echo 'yesterday:'. date('Y-m-d H:i:s', $yesterday)。"n";

2、echo(),print(),print_r()的区别(3分)

echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print只能打印出简单类型变量的值(如int,string)

print_r可以打印出复杂类型变量的值(如数组,对象)

echo -- 输出一个或者多个字符串

3、能够使HTML和PHP分离开使用的模板(1分)

smarty,Heyes Template Class等

5、使用哪些工具进行版本控制?(1分)

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

6、如何实现字符串翻转?(3分)

strrev()

或者

$str = "abcdefg";

function strrevv($str)

{

$len=strlen($str);

$newstr = '';

for($i=$len;$i>=0;$i--)

{

$newstr .= $str{$i};

}

return $newstr;

}

$showstr = strrevv($str);

echo $showstr."

";

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

7、优化MYSQL数据库的方法。(4分,多写多得)

(1)。选取最适用的字段属性,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

(2)。使用连接(JOIN)来代替子查询(Sub-Queries)

(3)。使用联合(UNION)来代替手动创建的临时表

(4)。尽量少使用 LIKE 关键字和通配符

(5)。使用事务和外键

或者

(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、PHP的意思(送1分)

Hypertext Preprocessor

9、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)

now(), DATE_FORMAT(date,format)

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

mb_substr()

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

11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分)

TortoiseSVN-1.2.6 svn-1.2.3

12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分)

smarty

13、请简单阐述您最得意的开发之作(4分)

这个自己想,因为你不再是菜鸟,每个人都有不同的思路,思路也会随之自己的知识而改变„„

14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)

首先,确认服务器硬件是否足够支持当前的流量

其次,优化数据库访问。

第三,禁止外部的盗链。

第四,控制大文件的下载。

第五,使用不同主机分流主要流量

第六,使用流量分析统计软件。

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

15、用PHP写出显示客户端IP与服务器IP的代码1分)

//显示客户端I

function get_client_ip() {#

if(getenv('HTTP_CLIENT_IP')) {

$client_ip = getenv('HTTP_CLIENT_IP');

} elseif(getenv('HTTP_X_FORWARDED_FOR')) {

$client_ip = getenv('HTTP_X_FORWARDED_FOR');

【php经典面试题(3篇)】

} elseif(getenv('REMOTE_ADDR')) {

$client_ip = getenv('REMOTE_ADDR');

} else {

$client_ip = $HTTP_SERVER_VAR['REMOTE_ADDR'];

}

return $client_ip;

}

//服务器IP

function get_server_ip(){

if (isset($_SERVER))

{

if($_SERVER['SERVER_ADDR']) $huoqu_ip=$_SERVER['SERVER_ADDR'];

else $huoqu_ip=$_SERVER['LOCAL_ADDR'];

}

else

{

$huoqu_ip=getenv('SERVER_ADDR');

}

return $huoqu_ip;

}

16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分) require()和include()除了怎样处理失败之外在各方面都完全一样。include()产生一个警告而require()则导致一个致命错误。

换句话说,如果你想在丢失文件时停止处理页面,用require()。include() 就不是这样,脚本会继续运行。

require()无论如何都会包含文件,而include()可以有选择地包含。

代替用【php经典面试题(3篇)】

include_once

require_once

17、如何修改SESSION的生存时间(1分)。(没有测试)

$savePath = "./session_save_dir/";

$lifeTime = 24 * 3600;

session_save_path($savePath);

session_set_cookie_params($lifeTime);

session_start();

18、有一个网页地址, 比如PHPma主页: ,如何得到它的内容?($1分)

第五篇:《PHP经典面试题(基础型)附答案》

PHP经典面试题(基础型I)附答案

求职与招聘 往往少不了面试与笔试,作为一个php程序员、多多少少都会有类似的经历„„以下是本人收集并整理的PHP面试题目,希望对同行们有所帮助,找到一份合适的php开发工作!(共三节)

以下是面试的题目(一),下一篇: PHP经典面试题(基础型II) 已经赋予答案:

1、用PHP打印出前一天的时间格式是2009-02-10 22:21:21(2分)

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

或者

$yesterday = time() - (24 * 60 * 60);

echo 'today:'.date('Y-m-d H:i:s')."n";

echo 'yesterday:'. date('Y-m-d H:i:s', $yesterday)."n";

2、echo(),print(),print_r()的区别(3分)

echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print只能打印出简单类型变量的值(如int,string)

print_r可以打印出复杂类型变量的值(如数组,对象)

echo -- 输出一个或者多个字符串

3、能够使HTML和PHP分离开使用的模板(1分)

smarty,Heyes Template Class等

5、使用哪些工具进行版本控制?(1分)

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

6、如何实现字符串翻转?(3分)

strrev()

或者

$str = "abcdefg";

function strrevv($str)

{

$len=strlen($str);【php经典面试题(3篇)】

$newstr = '';

for($i=$len;$i>=0;$i--)

{

$newstr .= $str{$i};

}

return $newstr;

}

$showstr = strrevv($str);

echo $showstr."<br>";

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

7、优化MYSQL数据库的方法。(4分,多写多得)

(1).选取最适用的字段属性,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

(2).使用连接(JOIN)来代替子查询(Sub-Queries)

(3).使用联合(UNION)来代替手动创建的临时表

(4).尽量少使用 LIKE 关键字和通配符

(5).使用事务和外键

或者

(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、PHP的意思(送1分)

Hypertext Preprocessor

9、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)

now(), DATE_FORMAT(date,format)

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

mb_substr()

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

11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分)

TortoiseSVN-1.2.6 svn-1.2.3

12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分)

smarty

13、请简单阐述您最得意的开发之作(4分)

这个自己想,因为你不再是菜鸟,每个人都有不同的思路,思路也会随之自己的知识而改变„„

14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)

首先,确认服务器硬件是否足够支持当前的流量

其次,优化数据库访问。

第三,禁止外部的盗链。

第四,控制大文件的下载。

第五,使用不同主机分流主要流量

第六,使用流量分析统计软件。

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

15、用PHP写出显示客户端IP与服务器IP的代码1分)

//显示客户端I

function get_client_ip() {#

if(getenv('HTTP_CLIENT_IP')) {

$client_ip = getenv('HTTP_CLIENT_IP');

} elseif(getenv('HTTP_X_FORWARDED_FOR')) {

$client_ip = getenv('HTTP_X_FORWARDED_FOR');

} elseif(getenv('REMOTE_ADDR')) {

$client_ip = getenv('REMOTE_ADDR');

} else {

$client_ip = $HTTP_SERVER_VAR['REMOTE_ADDR'];

}【php经典面试题(3篇)】

return $client_ip;

}

//服务器IP

function get_server_ip(){

if (isset($_SERVER))

{

if($_SERVER['SERVER_ADDR']) $huoqu_ip=$_SERVER['SERVER_ADDR'];

else $huoqu_ip=$_SERVER['LOCAL_ADDR'];

}

else

{

$huoqu_ip=getenv('SERVER_ADDR');

}

return $huoqu_ip;

}

16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分)

require()和include()除了怎样处理失败之外在各方面都完全一样。include()产生一个警告而require()则导致一个致命错误。

换句话说,如果你想在丢失文件时停止处理页面,用require()。include() 就不是这样,脚本会继续运行。

require()无论如何都会包含文件,而include()可以有选择地包含.

代替用

include_once

require_once

17、如何修改SESSION的生存时间(1分).(没有测试)

$savePath = "./session_save_dir/";

$lifeTime = 24 * 3600;

session_save_path($savePath);

session_set_cookie_params($lifeTime);

session_start();

18、有一个网页地址, 比如PHPma主页: ,如何得到它的内容?($1分) file_get_contents($url)

19、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)

未授权(Unauthorized)

Header("http/1.0 403 Forbidden");

经典面试题(PHP基础型II)附答案来源:本站编辑 作者:phpma 时间:2009-02-13 Tag:PHP 经典面试题 (基础型II) 附答案 点击: 44 求职与招聘 往往少不了面试与笔试,作为一个php程序员、多多少少都会有类似的经历„„以下是本人收集并整理的PHP面试题目,希望对同行们有所帮助,找到一份合适的php开发工作!(共三节)

以下是面试的题目(一), 下一篇:经典面试题(PHP基础型III)附答案 PHP已经赋予答案

12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)

在大部分语言里,双引号是字符串,单引号是字符。但是在PHP里,字符串的表现形式有3种。即:

单引号

双引号

定界符(heredoc syntax)

看见了吧,单引号居然可以用来表示字符串。那么如果我想表示单引号怎么办?和大多数语言一样,使用转义符号吧。即反斜线"".那么使用单引号和双引号有什么区别呢?我的观点是

没有多大区别。唯一的区别就是双引号可以应用更多的转义符。

让我们定界符吧。它的语法是"<<<"。用法是在其后提供一个标识符,然后在标识符后提供字符串,再在字符串后提供此标识符来结尾。例如:

<?php

$str = <<<EOD

Hello, this is an example for HEREDOC Syntax.

Please attention to it.

EOD;

echo $str;

?>注意,这里的提供的标志符是EOD,中间的是字符串。

<<<EOD这个开头并没有分号

结束标志必须顶格写,并且要有分号结束

13、谈谈asp,php,jsp的优缺点(1分)--(具体请自己搜索)

14、谈谈对mvc的认识(1分)

MVC(Model/View/Controller)模式包括三类对象。Model是应用对象,View是它在屏幕上的表示,

Controller定义用户界面对用户输入的响应方式。

模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。

1)模型(Model)

模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.

2)视图(View)

视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。

3)控制器(controller)

控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

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

15、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)

select members.username

from members

order by posts DESC

limit 10

16. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分) 按值传递:函数范围内对值的任何改变在函数外部都会被忽略

按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改 PHPma

优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。

本文来源:http://www.zhuodaoren.com/shenghuo232016/

推荐访问:php面试题大全 php实习生面试题
扩展阅读文章
热门阅读文章