PHP考试面试认证题.docx
- 文档编号:12314491
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:54
- 大小:43.58KB
PHP考试面试认证题.docx
《PHP考试面试认证题.docx》由会员分享,可在线阅读,更多相关《PHP考试面试认证题.docx(54页珍藏版)》请在冰点文库上搜索。
PHP考试面试认证题
问题
1.选择合适的答案填入空白处
PHP是一种______脚本语言,基于______引擎。
PHP最常被用来开发动态的______内容,此外,它同样还可被用来生成______(以及其他)文档。
A.动态,PHP,数据库,HTML
B.嵌入式,Zend,HTML,XML
C.基于Perl的,PHP,Web,静态
D.嵌入式,Zend,Docbook文档,MySQL
E.基于Zend的,PHP,图像,HTML
2.以下哪种标签不是PHP起始/结束符?
A.
B.
C.
D.
E.
3.以下代码哪个不符合PHP语法?
变量名不能以数字为开头
A.$_10
B.${“MyVar”}
C.&$something
D.$10_somethings
E.$aVaR
4.运行以下代码将显示什么?
php
define(myvalue,"10");
$myarray[10]="Dog";
$myarray[]="Human";
$myarray['myvalue']="Cat";
$myarray["Dog"]="Cat";
print"Thevalueis:
";
print$myarray[myvalue]."\n";
?
>
2
A.TheValueis:
Dog
B.TheValueis:
Cat
C.TheValueis:
Human
D.TheValueis:
10
E.Dog
$myarray的键值并没有打上引号。
所以,正在访问的键不是myvalue字符串,而是常量myvalue的值。
最终访问的是$myarray[10],值是Dog,答案是A。
5.print()和echo()有什么区别?
A.print()能作为表达式的一部分,echo()不能
B.echo()能作为表达式的一部分,print()不能
C.echo()能在CLI(命令行)版本的PHP中使用,print()不能
D.print()能在CLI(命令行)版本的PHP中使用,echo()不能
E.没有区别:
两个函数都打印文本!
print()是函数,有返回值;echo()实际上是一个语言结构,没有返回值,并且不能在表
达式中使用。
因此,答案是A。
6.以下脚本输出什么?
php
$a=10;
$b=20;
$c=4;
$d=8;
$e=1.0;
$f=$c+$d*2;
$g=$f%20;
$h=$b-$a+$c+2;
$i=$h<<$c;
$j=$i*$e;
print$j;
?
>
A.128
B.42
C.242.0
D.256
E.342
%运算符表示取模,它返回两个操作数相除的余数。
<<是左移运算符,相当于乘以2的N次方。
最后的答案乘以了一个浮点数,改变了它的数据类型。
但是,由于小数点后是零,因此输出的结果不包含小数部分。
答案是256(D)
7.如何给变量$a,$b和$c赋值才能使以下脚本显示字符串“Hello,World!
”?
php
$string="Hello,World!
";
$a=?
;
3
$b=?
;
$c=?
;
if($a){
if($b&&!
$c){
echo"GoodbyeCruelWorld!
";
}elseif(!
$b&&!
$c){
echo"Nothinghere";
}
}
else{
if(!
$b){
if(!
$a&&(!
$b&&$c)){
echo"Hello,World!
";
}else{
echo"GoodbyeWorld!
";
}
}else{
echo"Notquite.";
}
}
?
>
A.False,True,False
B.True,True,False
C.False,True,True
D.False,False,True
E.True,True,True
8.以下脚本输出什么?
php
$array='0123456789ABCDEFG';
$s='';
for($i=1;$i<50;$i++){
$s.=$array[rand(0,strlen($array)-1)];
}
echo$s;
?
>
A.50个随机字符组成的字符串
B.49个相同字符组成的字符串,因为没有初始化随机数生成器
C.49个随机字符组成的字符串
D.什么都没有,因为$array不是数组
4
E.49个字母‘G’组成的字符串
9.哪种语句结构用来表现以下条件判断最合适?
php
if($a=='a'){
somefunction();
}elseif($a=='b'){
anotherfunction();
}elseif($a=='c'){
dosomething();
}else{
donothing();
}
?
>
A.没有default的switch语句
B.一个递归函数
C.while语句
D.无法用别的形式表现该逻辑
E.有default的switch语句
用一系列的if…else语句来检查一个条件的代码块,最适合用switch语句来替代。
因为if语句中有一个捕捉所有其他条件的else,对应的,switch代码块需要一个default。
正确答案是E。
10.要修改每个元素的值,如何遍历$myarray数组最合适?
php
$myarray=array("MyString","AnotherString","Hi,Mom!
");
?
>
A.用for循环
B.用foreach循环
C.用while循环
D.用do…while循环
E.办不到!
通常情况下,foreach语句是遍历数组的首选。
但是,由于foreach语句是在数组的副本上进行操作,而我们需要给数组中每个元素重新赋值,所以在这里foreach就不适用了。
尽管也可以用while循环和do…while循环,但由于数组是顺序索引的,最合适的语句还是for语句。
因此答案是A。
11.考虑如下代码片段:
php
define("STOP_AT",1024);
$result=array();
/*在此处填入代码*/
{
5
$result[]=$idx;
}
print_r($result);
?
>
标记处填入什么代码才能产生如下数组输出?
Array
{
[0]=>1
[1]=>2
[2]=>4
[3]=>8
[4]=>16
[5]=>32
[6]=>64
[7]=>128
[8]=>256
[9]=>512
}
A.foreach($resultas$key=>$val)
B.while($idx*=2)
C.for($idx=1;$idx D.for($idx*=2;STOP_AT>=$idx;$idx=0) E.while($idx 由于题目只允许填写一行代码,唯一合适的是for循环,因此答案只能是C或者D。 12.为用户定义函数is_leap()选择一个合适的函数声明。 is_leap使用2000作为默认年份。 php /*函数声明处*/ { $is_leap=(! ($year%4)&&(($year%100)|| ! ($year%400))); return$is_leap; } var_dump(is_leap(1987));/*Displaysfalse*/ var_dump(is_leap());/*Displaystrue*/ ? > A.functionis_leap($year=2000) B.is_leap($yeardefault2000) C.functionis_leap($yeardefault2000) 6 D.functionis_leap($year) E.functionis_leap(2000=$year) 13.运行以下代码将显示什么值? 假设代码运行时的URL是: testscript.php? c=25 php functionprocess($c,$d=25) { global$e; $retval=$c+$d-$_GET['c']-$e; return$retval; } $e=10; echoprocess(5); ? > A.25 B.-5 C.10 D.5 E.0 14.考虑如下代码: php functionmyfunction($a,$b=true) { if($a&&! $b){ echo"Hello,World! \n"; } } $s=array(0=>“my”, 1=>“call”, 2=>‘$function’, 3=>‘‘, 4=>“function”, 5=>‘$a’, 6=>‘$b’, 7=>‘a’, 8=>‘b’, 9=>”); $a=true; 7 $b=false; /*GroupA*/ $name=$s[? ].$s[? ].$s[? ].$s[? ].$s[? ].$s[? ]; /*GroupB*/ $name(${$s[? ]},${$s[? ]}); ? > 脚本中的每个问号(? )代表$s数组的一个数字索引。 要想代码执行时显示Hello,World! 字符 串,该如何选择数字索引? A.GroupA: 4,3,0,4,9,9GroupB: 7,8 B.GroupA: 1,3,0,4,9,9GroupB: 7,6 C.GroupA: 1,3,2,3,0,4GroupB: 5,8 D.GroupA: 0,4,9,9,9,9GroupB: 7,8 E.GroupA: 4,3,0,4,9,9GroupB: 7,8 函数能被以一个包含着函数名的变量后面加上括号(以及必要的参数)的形式动态调用。 对于GroupA来说,合适的索引组合是0,4,9,9,9,9,产生字符串myfunction 另一方面,参数将使用${}结构的可变变量。 对GroupB来说,合适的索引应该是7和8,等于${‘a’}$和{‘b’}——即$a和$b。 因此答案是D。 15.运行时(run-time)包含一个PHP脚本使用______,而编译时(compile-time)包含一 个PHP脚本使用______。 A.include_once,include B.require,include C.require_once,include D.include,require E.以上皆可 16.什么情况下声明函数时不能给参数赋默认值? A.当参数是布尔值时 B.当函数是类中的成员时 C.当参数是通过引用传递时 D.当函数只有一个参数时 E.永远不会 当参数被声明为通过引用传递时,你不能给它赋默认值,此时解释器期望获得一个能在函数内部进行修改的变量。 答案是C。 17.___正确答案是逻辑异或(xor)运算符___操作符在两个操作数中有一个(不是全部)为True时返回True。 答案: ____________ 18.全等运算符===如何比较两个值? A.把它们转换成相同的数据类型再比较转换后的值 B.只在两者的数据类型和值都相同时才返回True 8 C.如果两个值是字符串,则进行词汇比较 D.基于strcmp函数进行比较 E.把两个值都转换成字符串再比较 19.以下哪个选项是把整型变量$a的值乘以4? (双选) A.$a*=pow(2,2);pow函数计算2的平方 B.$a>>=2; C.$a<<=2; D.$a+=$a+$a; E.一个都不对 答案是A和C 20.一段脚本如何才算彻底终止? A.当调用exit()时 B.当执行到文件结尾时 C.当PHP崩溃时 D.当Apache由于系统故障而终止时 问题 1.对象的蓝图是什么? 答案: _类是对象的蓝图(对象是类的实例)。 ___________ 2.以下代码执行后,数组$a->my_value中储存的值是什么? (三选) php classmy_class { var$my_value=array(); functionmy_class($value) { $this->my_value[]=$value; } functionset_value($value) { $this->$my_value=$value;使用了错误的表达式,因此该方法实} }际上是空的 $a=newmy_class(‘a’); $a->my_value[]=‘b’; $a->set_value(‘c’); $a->my_class(‘d’); ? > A.c B.b C.a D.d E.e 正确答案是B、C和D 3.如何让类中的某些方法无法在类的外部被访问? A.把类声明为private B.把方法声明为private C.无法实现 D.编写合适的重载方法(overloadingmethod) 答案是C。 4.哪种OOP设计模式能让类在整个脚本里只实例化一次? A.MVC模式 B.抽象工厂模式(Abstractfactory) C.单件模式(Singleton)单件模式可以限制一个类被实例化的次数。 D.代理模式(Proxy) E.状态模式(State) 5.借助继承,我们可以创建其他类的派生类。 那么在PHP中,子类最多可以继承几个父 类? A.1个 B.2个 C.取决于系统资源 D.3个 E.想要几个有几个 6.以下脚本近似的表示了一种在PHP4中无法实现的特性,请问这个特性叫什么? php classmy_class { functionmy_funct($my_param) { user_error("Pleasedefineme",E_ERROR);my_funct方法在子} functionb()类中被调用时没有覆盖, {代码将抛出一个错误。 return10; } } ? > A.多重继承 B.接口 C.抽象方法 D.Private方法 E.函数重载(functionoverloading) 是抽象方法的实现。 如果这个类继承自其他类,而my_funct方法在子类中被调用时没有覆盖,代码将抛出一个错误。 虽然只是近似的实现了抽象方法,但在PHP4有限的对象模型中,这已经做得很好了。 7.假设定义了一个testclass类,它的构造函数的函数名是什么? A.__construct B.initialize C.testclass D.__testclass E.只有PHP5才支持构造函数 PHP5有统一的构造函数(__construct()),但在PHP4中,构造函数就是和类有相同名称的方法。 对于名为testclass的类,它的构造函数就是testclass()。 答案是C。 8.一个类如何覆盖默认的序列化机制? A.使用__shutdown和__startup方法 B.调用register_shutdown_function()函数 C.使用__sleep()和__wakeup()方法 D.无法覆盖默认序列化机制 E.使用ob_start()将类放入输出缓冲中 9.以下哪些面向对象的概念无法在PHP4中实现? 抽象类 Final类 Public、private、protected(PPP)方法 接口 A.抽象类 B.PPP方法 C.PPP方法和接口 D.以上所有都不可用 E.以上所有都可用 PHP4中没有题目选项里所列的任何一个概念。 答案是D。 10.如何在类的内部调用mymethod方法? A.$self=>mymethod(); B.$this->mymethod(); C.$current->mymethod(); D.$this: : mymethod() E.以上都不对 11.以下脚本输出什么? php classmy_class { var$my_var; function_my_class($value) { $this->my_var=$value; } } $a=newmy_class(10); echo$a->my_var; ? > A.10 B.Null C.Empty D.什么都没有 E.一个错误 正确答案是D。 my_class: : _my_class()不是合法的构造函数(方法名的开头多了个_),因此脚本不会输出任何东西。 你可能觉得这题是在考眼力而不是知识,是的,我们就是这么打算。 仔细想想你就会同意——绝大多数的bug都是由错误的拼写造成的。 这题并不是在戏弄你,而是考验你的排错能力。 12.以下脚本输出什么? php classmy_class { var$value; } $a=newmy_class; $a->my_value=5; $b=$a; $b->my_value=10; echo$a->my_value; ? > A.10 B.5 C.2 D.Null E.什么都没有 PHP4把对象视作标量进行处理,当$a赋给$b时,解释器创建对象的副本,因此对后一个对象的赋值不会影响到原先的对象。 答案是B。 但是要注意,PHP5里就不是这样处理的了(将会输出10)。 13.以下脚本输出什么? php $global_obj=null; classmy_class { var$value; functionmy_class() { global$global_obj; $global_obj=&$this; } } $a=newmy_class; $a->my_value=5; $global_obj->my_value=10; echo$a->my_value; ? > A.5 B.10 C.什么都没有 D.构造函数将报错 E.510 14.考虑如下一段代码,执行时,$eight_tenths->to_string方法返回的字符串是8/10而不是 希望的4/5,为什么? php classfraction{ var$numerator; var$denominator; functionfraction($n,$d){ $this->set_numerator($n); $this->set_denominator($d); } functionset_numerator($num){ $this->numerator=(int)$num; } functionset_denominator($num){ $this->denominator=(int)$num; } functionto_string(){ return“{$this->numerator}/{$this->denominator}”; } } functiongcd($a,$b){ return($b>0)? gcd($b,$a%$b): $a; } functionreduce_fraction($fraction){ 18 $gcd=gcd($fraction->numerator, $fraction->denominator); $fraction->numerator/=$gcd; $fraction->denominator/=$gcd; } $eight_tenths=newfraction(8,10); /*Reducethefraction*/ reduce_fraction($eight_tenths); var_dump($eight_tenths->to_string()); ? > A.reduce_fraction函数必须返回一个值 B.reduce_fraction函数必须接受一个整型值 C.gcd函数有问题 D.必须通过引用的方式传递$eight_tenths对象 E.对象的实例不能传递给方法以外的其他结构。 15.以下代码是做什么的? php require_once("myclass.php"); myclass: : mymethod(); ? > A.静态调用mymethod方法 B.生成myclass的实例并调用mymethod方法 C.产生一个语法错误 D.默认myclass类最后被创建出的实例并调用mymethod() E.调用名为myclass: : mymethod()的函数 16.PHP中有静态类变量吗? A.有 B.没有 17.以下脚本输出什么? php classa { functiona($x=1) 19 { $this->myvar=$x; } } classbextendsa { var$myvar; functionb($x=2) { $this->myvar=$x; parent: : a(); } } $obj=newb; echo$obj->myvar; ? > A.1 B.2 C.一个错误,因为没有定义a: : $myvar D.一个警告,因为没有定义a: : $myvar E.什么都没有 18.如何即时加载一个类? A.使用__autoload魔术函数 B.把它们定义为forward类 C.实现一个特殊的错误处理手段 D.不可能 E.用有条件限制的include来包含它们 19.__________提供了一个高性能的解决面向对象中重复出现的问题的方案? 答案: __________ 20.以下脚本输出什么? php classa { functiona() 20 { echo'Parentcalled'; } } classb { functionb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PHP 考试 面试 认证
![提示](https://static.bingdoc.com/images/bang_tan.gif)