PHP开发面试题目总结

PHP开发常见面试题目

==========================================PHP===================================================

1:请用最简单的语言告诉我PHP是什么?
PHP全称:Hypertext Preprocessor,是一种用来开发动态网站的服务器脚本语言。

2:什么是MVC?
MVC由Model(模型), View(视图)和Controller(控制器)组成,PHP MVC可以更高效地管理好3个不同层的PHP代码。
Model:数据信息存取层。
View:view层负责将应用的数据以特定的方式展现在界面上。
Controller:通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

3:PHP支持多继承吗?
不可以。PHP类只能继承一个父类,并用关键字“extends”标识。
被继承的方法和属性可以通过用同样的名字重新声明被覆盖。但是如果父类定义方法时使用了 final,则该方法不可被覆盖。可以通过 parent:: 来访问父类中的方法或属性。
当覆盖方法时,参数必须保持一致否则 PHP 将发出 E_STRICT 级别的错误信息。但构造函数例外,构造函数可在被覆盖时使用不同的参数。
Final 关键字
PHP 5新增的一个关键字,如果父类中的方法被声明为 final,则子类无法覆盖该方法。同样如果一个类被声明为 final,则不能被继承。(需要注意的是: 属性不能被定义为 final,只有类和方法才能被定义为 final。)

4:php中对数组序列化和反序列化的函数分别是 serialize 和 unserialize ;

5:urlencode和rawurlencode的区别

urlencode和rawurlencode两个方法在处理字母数字,特殊符号,中文的时候结果都是一样的,唯一的不同是对空格的处理,urlencode处理成“+”,rawurlencode处理成“%20”。

6:php中过滤HTML的函数是strip_tags,转义的函数是htmlspecialchars

7:写出用正则把HTML中的js脚本过滤掉

preg_replace(‘/<script.*?//script>/is’,”,$htmlcode);

8:写出三个调用系统命令的函数:exec、system、passthru

9:php中判断变量是否被设置是函数是_isset_;判断是否为空的是empty;

empty、 isset、is_null的区别:

empty: 如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,”"、0、”0″、NULL、FALSE、array()、var $var、未定义;以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。
isset: 如果 变量 存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。注意,isset对于NULL值变量,特殊处理。

is_null: 检测传入值【值,变量,表达式】是否是null,只有一个变量定义了,且它的值是null,它才返回TRUE . 其它都返回 FALSE 【未定义变量传入后会出错!】

10:error_reporting(“E_ALL”)和ini_set(“display_errors”, “on”)的区别_________;

前者是设置错误显示等级,E_ALL代表提示全部错误(包括notice,warnning和error)。后者是设置让php显示错误,在关于错误显示控制中,后者的优先级最高。

11:PHP写出显示客户端IP的预定义变量$_SERVER['REMOTE_ADDR'];

提供来路url的是$_SERVER['HTTP_REFERER']

$_SERVER['REMOTE_HOST'] //当前用户主机名;

$_SERVER['PHP_SELF']//正在执行脚本的文件名 

$_SERVER['REQUEST_METHOD']//访问页面时的请求方法 

$_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名。 

$_SERVER['SERVER_PORT'] #服务器所使用的端口 

12:php把utf-8转换成gbk的函数是iconv(‘UTF-8′,’GBK’,$str);

13:php中类的静态方法怎么使用?

在类外部,使用:类名后面跟双冒号,再后面是方法名,类似classname::staticFucntion(),由于静态方法不属于某个对象,而是隶属于整个类,所以要用类名来调用它。

14:$a = 1; $b = & $a;

unset($a),$b是否还是1,为什么?
unset($b),$a是否还是1,为什么?

都等于1。

在php中,引用赋值不同于指针的感念,他只是将另一个变量名指向了某个内存地址。此题中:$b = &$a;只是将$b这个名字也指向了$a变量所指向的内存地址。unset时只是释放了这个名字的指向,并没有释放内存中的值。另一方面讲unset($a),其实也并未真正立刻释放内存中的值,也只是释放了这个名字的指向而已,该函数只有在变量值所占空间超过256字节长的时候才会释放内存,并且只有当指向该值的所有变量(比如有引用变量指向该值)都被销毁后,地址才会被释放。

15:写一个判断手机号码(号段为130-139,150-159,170-179,180-189)是否正确的正则表达式。
/^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})&/

16:请问PHP中echo和print有什么区别?
echo和print的本质区别在于:echo用来输出字符串,显示多个值的时候可以用逗号隔开。只支持基本类型,print不仅可以打印字符串值,而且可以打印函数的返回值。

17:请问GET和POST方法有什么区别?
我们在网页上填写的表单信息都可以通过这两个方法将数据传递到服务器上,当我们使用GET方法是,所有的信息都会出现在URL地址中,并且使用GET方法最多只能传递1024个字符,所以如果在传输量小或者安全性不那么重要的情况下可以使用GET方法。说到POST方法,最多可以传输2MB字节的数据,而且可以根据需要调节。
18:PHP中获取图像尺寸大小的方法是什么?
getimagesize () 获取图片的尺寸
Imagesx () 获取图片的宽度
Imagesy () 获取图片的高度
19:PHP中的PEAR是什么?
PEAR也就是为PHP扩展与应用库(PHP Extension and Application Repository),它是一个PHP扩展及应用的一个代码仓库。
20:如何用PHP和MySQL上传视频?
我们可以在数据库中存放视频的地址,而不需要将真正的视频数据存在数据库中。可以将视频数据存放在服务器的指定文件夹下,上传的默认大小是2MB,但是我们也可以在php.ini文件中修改max_file size选项来改变。
21:PHP中的错误类型有哪些?
PHP中遇到的错误类型大致有3类。
提示(notice):这都是一些非常正常的信息,而非重大的错误,有些甚至不会展示给用户。比如访问不存在的变量。
警告(warning):这是有点严重的错误,将会把警告信息展示给用户,但不会影响代码的输出,比如包含一些不存在的文件。
错误(error):这是真正的严重错误,比如访问不存在的PHP类。
22:如何在PHP中定义常量?
PHP中使用Define () 来定义常量。
define (“Newconstant”, 30); echo constant("Newconstant"); //constant返回一个常量的值
23:在网站开发中需要传递变量值时,不能使用session、cookie、application,你有几种方法

Session id的传递主要有四个方法:

1、 通过cookie。

2、 设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项,让PHP自动跨页传递session id。

3、 手动通过url或隐藏表单传值。

4、 用文件或数据库方式传递,在通过其他key对应取值。

以上的2和3其实使用的是同样的方法,只是途径不一样。

通过以上的分析我们不难看出,通过cookie传递sessionid,将session存储于memcache服务器中是为一个比较合理的选择。当出现跨域的情况是,可以使用p3p跨域设置cookie。而当客户端禁用cookie的情况下,可以设置php.ini,通过url自动传递session id。

24:概述反射和序列化

序列化:

serialize() 把变量和它们的值编码成文本形式

unserialize() 恢复原先变量

25:session喜欢丢值且占用内存,Cookie不安全,请问用什么办法代替这两种原始的方法

redis 或者 memcache。

26:反射
反射是在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取的信息以及动态调用对象的方法的功能称为反射API。反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复杂,可扩展的应用。
其用途如:自动加载插件,自动生成文档,甚至可用来扩充PHP语言。
php反射api由若干类组成,可帮助我们用来访问程序的元数据或者同相关的注释交互。借助反射我们可以获取诸如类实现了那些方法,创建一个类的实例(不同于用new创建),调用一个方法(也不同于常规调用),传递参数,动态调用类的静态方法。
      反射api是php内建的oop技术扩展,包括一些类,异常和接口,综合使用他们可用来帮助我们分析其它类,接口,方法,属性,方法和扩展。这些oop扩展被称为反射。
      通过Refl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值