php面试题目.doc_第1页
php面试题目.doc_第2页
php面试题目.doc_第3页
php面试题目.doc_第4页
php面试题目.doc_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

问题1 选择合适的答案填入空白处PHP 是一种_脚本语言,基于_引擎。PHP 最常被用来开发动态的_内容,此外,它同样还可被用来生成_(以及其他)文档。A动态,PHP,数据库,HTMLB嵌入式,Zend,HTML,XMLC基于 Perl 的,PHP,Web,静态D嵌入式,Zend,Docbook 文档,MySQLE基于 Zend 的,PHP,图像,HTML2以下哪种标签不是 PHP 起始/结束符?ABCDE3以下代码哪个不符合 PHP 语法?A$_10B$“MyVar”C&$somethingD$10_somethingsE$aVaR4运行以下代码将显示什么?2AThe Value is: DogBThe Value is: CatCThe Value is: HumanDThe Value is: 10EDog5 print()和 echo()有什么区别?Aprint()能作为表达式的一部分,echo()不能Becho()能作为表达式的一部分,print()不能Cecho()能在 CLI(命令行)版本的 PHP 中使用,print()不能Dprint()能在 CLI(命令行)版本的 PHP 中使用,echo()不能E没有区别:两个函数都打印文本!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 A128B42C242.0D256E3427如何给变量$a,$b 和$c 赋值才能使以下脚本显示字符串“Hello, World!”?AFalse, True, FalseBTrue, True, FalseCFalse, True, TrueDFalse, False, TrueETrue, True, True8以下脚本输出什么??php$array = 0123456789ABCDEFG;$s = ;for ($i = 1; $i A50 个随机字符组成的字符串B49 个相同字符组成的字符串,因为没有初始化随机数生成器C49 个随机字符组成的字符串D什么都没有,因为$array 不是数组4E49 个字母G组成的字符串9哪种语句结构用来表现以下条件判断最合适?A没有 default 的 switch 语句B一个递归函数Cwhile 语句D无法用别的形式表现该逻辑E有 default 的 switch 语句10要修改每个元素的值,如何遍历$myarray 数组最合适?A用 for 循环B用 foreach 循环C用 while 循环D用 dowhile 循环E办不到!11考虑如下代码片段:标记处填入什么代码才能产生如下数组输出?Array0 = 11 = 22 = 43 = 84 = 165 = 326 = 647 = 1288 = 2569 = 512Aforeach($result as $key = $val)Bwhile($idx *= 2)Cfor($idx = 1; $idx = $idx; $idx = 0)Ewhile($idx STOP_AT) do $idx *= 212为用户定义函数 is_leap()选择一个合适的函数声明。is_leap 使用 2000 作为默认年份。Afunction is_leap($year = 2000)Bis_leap($year default 2000)Cfunction is_leap($year default 2000)6Dfunction is_leap($year)Efunction is_leap(2000 = $year)13运行以下代码将显示什么值?假设代码运行时的 URL 是:testscript.php?c=25A25B-5C10D5E014考虑如下代码: “my”,1 = “call”,2 = $function,3 = ,4 = “function”,5 = $a,6 = $b,7 = a,8 = b,9 = ”);$a = true;7$b = false;/* Group A */$name = $s?.$s?.$s?.$s?.$s?.$s?;/* Group B */$name($s?, $s?);?脚本中的每个问号(?)代表$s 数组的一个数字索引。要想代码执行时显示 Hello, World!字符串,该如何选择数字索引?AGroup A: 4,3,0,4,9,9 Group B: 7,8BGroup A: 1,3,0,4,9,9 Group B: 7,6CGroup A: 1,3,2,3,0,4 Group B: 5,8DGroup A: 0,4,9,9,9,9 Group B: 7,8EGroup A: 4,3,0,4,9,9 Group B: 7,815运行时(run-time)包含一个 PHP 脚本使用_,而编译时(compile-time)包含一个 PHP 脚本使用_。Ainclude_once, includeBrequire, includeCrequire_once, includeDinclude, requireE以上皆可16什么情况下声明函数时不能给参数赋默认值?A当参数是布尔值时B当函数是类中的成员时C当参数是通过引用传递时D当函数只有一个参数时E永远不会17_操作符在两个操作数中有一个(不是全部)为 True 时返回 True。答案:_18全等运算符=如何比较两个值?A把它们转换成相同的数据类型再比较转换后的值B只在两者的数据类型和值都相同时才返回 True8C如果两个值是字符串,则进行词汇比较D基于 strcmp 函数进行比较E把两个值都转换成字符串再比较19以下哪个选项是把整型变量$a 的值乘以 4?(双选)A$a *= pow (2, 2);B$a = 2;C$a = 2;D$a += $a + $a;E一个都不对20一段脚本如何才算彻底终止?A当调用 exit()时B当执行到文件结尾时C当 PHP 崩溃时D当 Apache 由于系统故障而终止时9答案1 唯一有意义的答案是 B。PHP 是一种基于 Zend 引擎的脚本语言,它通常被嵌入在 HTML代码中。它主要被用来开发 HTML 文档,但是也可以用它来开发其他类型的文档,比如 XML。2 PHP 编程中,人们不太使用和两个标签,但它们确实是合法的 PHP 界定符。标签是非法的,因此正确的答案是 D。记住,根据 php.ini 文件中的配置不同,这当中的某些标签无法在特定的情况下使用。3 PHP 变量以一个美元符号为开头,后面跟上任意数量的数字、字母和下划线。$“MyVar”是一个合法的变量名,它使用的是较松散的命名约定。&$something 是对$something 的引用。然而,变量名不能以数字为开头,$10_somethings 是非法的,因此答案是 D。4 注意,$myarray 的键值并没有打上引号。所以,正在访问的键不是 myvalue 字符串,而是常量 myvalue 的值。最终访问的是$myarray10,值是 Dog,答案是 A。5 尽管 print()和 echo()在绝大多数情况下可以互换使用,但它们之间还是有一处不同。print()是函数,有返回值;echo()实际上是一个语言结构,没有返回值,并且不能在表达式中使用。因此,答案是 A。6 %运算符表示取模,它返回两个操作数相除的余数。是左移运算符,相当于乘以 2的 N 次方。最后的答案乘以了一个浮点数,改变了它的数据类型。但是,由于小数点后是零,因此输出的结果不包含小数部分。答案是 256(D)。7 根据条件式的逻辑,要想得到 Hello, World!字符串,必须要在第一个 if 结构中满足 else的条件。因此$a 必须为 False,然后$b 也必须为 False。最内层的条件语句的实现要求先前的两个变量($a 和$b)是 False,而$c 必须是 True(答案是 D)。8 正确答案是 C。从 PHP4.2.0 开始,除非已经给定了一个伪随机整数列,否则不再需要用 srand()函数初始化随机数生成器。此外,即使随机数生成器没有被事先播种,脚本仍然会生成 49 个伪随机字符。尽管$array 变量是字符串,但可以用访问数组的方式进行访问使用数字索引访问某个位置上的字符。最后,for 循环将从 1 开始执行到 50,也就是执行了 49 次。9 用一系列的 ifelse 语句来检查一个条件的代码块,最适合用 switch 语句来替代。因为 if 语句中有一个捕捉所有其他条件的 else,对应的,switch 代码块需要一个 default。正确答案是 E。10通常情况下,foreach 语句是遍历数组的首选。但是,由于 foreach 语句是在数组的副本上进行操作,而我们需要给数组中每个元素重新赋值,所以在这里 foreach 就不适用了。尽管也可以用 while 循环和 dowhile 循环,但由于数组是顺序索引的,最合适的语句还是 for 语句。因此答案是 A。?php$myarray = array (My String, Another String, Hi, Mom!);for($i = 0; $i 11由于题目只允许填写一行代码,唯一合适的是 for 循环,因此答案只能是 C 或者 D。要选出能生成正确结果的 for 循环,我们必须先复习一下 for 循环的构成要素。PHP 中,for 循环是这样声明的:for(;)在循环开始时执行一次,然后 for 循环开始执行大括号内的代码,直到的值为 False。每完成一次循环,执行一次。因此,正确的代码块应该是:for ($idx = 1; $idx my_value 中储存的值是什么?(三选)my_value = $value;function set_value ($value)$this-$my_value = $value;$a = new my_class (a);$a-my_value = b;$a-set_value (c);$a-my_class(d);?AcBbCaDdEe3 如何让类中的某些方法无法在类的外部被访问?A把类声明为 privateB把方法声明为 privateC无法实现D编写合适的重载方法(overloading method)144 哪种 OOP 设计模式能让类在整个脚本里只实例化一次?AMVC 模式B抽象工厂模式(Abstract factory)C单件模式(Singleton)D代理模式(Proxy)E状态模式(State)5 借助继承,我们可以创建其他类的派生类。那么在 PHP 中,子类最多可以继承几个父类?A1 个B2 个C取决于系统资源D3 个E想要几个有几个6 以下脚本近似的表示了一种在 PHP4 中无法实现的特性,请问这个特性叫什么?A多重继承B接口C抽象方法DPrivate 方法E函数重载(function overloading)7 假设定义了一个 testclass 类,它的构造函数的函数名是什么?15A_constructBinitializeCtestclassD_testclassE只有 PHP5 才支持构造函数8 一个类如何覆盖默认的序列化机制?A使用_shutdown 和_startup 方法B调用 register_shutdown_function()函数C使用_sleep()和_wakeup()方法D无法覆盖默认序列化机制E使用 ob_start()将类放入输出缓冲中9 以下哪些面向对象的概念无法在 PHP4 中实现?抽象类Final 类Public、private、protected(PPP)方法接口A抽象类BPPP 方法CPPP 方法和接口D以上所有都不可用E以上所有都可用10如何在类的内部调用 mymethod 方法?A$self=mymethod();B$this-mymethod();C$current-mymethod();D$this:mymethod()E以上都不对11以下脚本输出什么?my_var = $value;$a = new my_class (10);echo $a-my_var;?A10BNullCEmptyD什么都没有E一个错误12以下脚本输出什么?my_value = 5;$b = $a;$b-my_value = 10;echo $a-my_value;?A10B5C2DNullE什么都没有13以下脚本输出什么?my_value = 5;$global_obj-my_value = 10;echo $a-my_value;?A5B10C什么都没有D构造函数将报错E51014考虑如下一段代码,执行时,$eight_tenths-to_string 方法返回的字符串是 8/10 而不是希望的 4/5,为什么?set_numerator($n);$this-set_denominator($d);function set_numerator($num) $this-numerator = (int)$num;function set_denominator($num) $this-denominator = (int)$num;function to_string() return “$this-numerator / $this-denominator”;function gcd($a, $b) return ($b 0) ? gcd($b, $a % $b) : $a;function reduce_fraction($fraction) 18$gcd = gcd($fraction-numerator,$fraction-denominator);$fraction-numerator /= $gcd;$fraction-denominator /= $gcd;$eight_tenths = new fraction(8,10);/* Reduce the fraction */reduce_fraction($eight_tenths);var_dump($eight_tenths-to_string();?Areduce_fraction 函数必须返回一个值Breduce_fraction 函数必须接受一个整型值Cgcd 函数有问题D必须通过引用的方式传递$eight_tenths 对象E对象的实例不能传递给方法以外的其他结构。15以下代码是做什么的?A静态调用 mymethod 方法B生成 myclass 的实例并调用 mymethod 方法C产生一个语法错误D默认 myclass 类最后被创建出的实例并调用 mymethod()E调用名为 myclass:mymethod()的函数16PHP 中有静态类变量吗?A有B没有17以下脚本输出什么?myvar = $x;class b extends avar $myvar;function b ($x = 2)$this-myvar = $x;parent:a();$obj = new b;echo $obj-myvar;?A1B2C一个错误,因为没有定义 a:$myvarD一个警告,因为没有定义 a:$myvarE什么都没有18如何即时加载一个类?A使用_autoload 魔术函数B把它们定义为 forward 类C实现一个特殊的错误处理手段D不可能E用有条件限制的 include 来包含它们19_提供了一个高性能的解决面向对象中重复出现的问题的方案?答案:_20以下脚本输出什么?AParent calledB一个错误C一个警告D什么都没有21答案1 类是对象的蓝图(对象是类的实例)。2 正确答案是 B、C 和 D。set_value 方法使用了错误的表达式$this-$my_value,因此该方法实际上是空的(这在 PHP5 里会导致一个错误,但在 PHP4 中不会。译者注)。3 答案是 C。PHP4 中无法限制对类成员的访问,而在 PHP5 中则可以通过 private 关键字实现。4 单件模式可以限制一个类被实例化的次数。5 尽管其他编程语言允许多重继承,但在 PHP 的对象模型中却不可以。因此答案是 A。6 方框中的代码表现的是抽象方法(abstract method)的实现。如果这个类继承自其他类,而 my_funct 方法在子类中被调用时没有覆盖,代码将抛出一个错误。虽然只是近似的实现了抽象方法,但在 PHP4 有限的对象模型中,这已经做得很好了。7 PHP5 有统一的构造函数(_construct()),但在 PHP4 中,构造函数就是和类有相同名称的方法。对于名为 testclass 的类,它的构造函数就是 testclass()。答案是 C。8 _sleep()和_wakeup()能被用来自定义对象的序列化过程。正确答案是 C。9 PHP4 中没有题目选项里所列的任何一个概念。答案是 D。10PHP 中,在类的内部访问其成员和方法,要用$this 这个特殊变量。因此答案是 B。11正确答案是 D。my_class:_my_class()不是合法的构造函数(方法名的开头多了个_),因此脚本不会输出任何东西。你可能觉得这题是在考眼力而不是知识,是的,我们就是这么打算。仔细想想你就会同意绝大多数的 bug 都是由错误的拼写造成的。这题并不是在戏弄你,而是考验你的排错能力。12PHP4 把对象视作标量进行处理,当$a 赋给$b 时,解释器创建对象的副本,因此对后一个对象的赋值不会影响到原先的对象。答案是 B。但是要注意,PHP5 里就不是这样处理的了(将会输出 10)。13一上来,构造函数 my_class 通过引用,将自身存储在了变量$global_obj 中。你可能会因此觉得,当我们后来吧$global_obj-my_value 的值变为 10 时,$a 也会相应改变。不幸的是,new 操作符只返回的不是引用,而是副本。脚本输出 5,答案是 A。14PHP 中,把对象传递给函数或者方法时,默认传递的是值。这意味着通过参数传递给函数的对象,其实是对象的副本。这点导致了在函数或方法里对对象进行改动时,不会影响函数外的原先的那个对象。22回到第 14 题中,这就说明对象$eight_tenths 从来没有被 reduce_fraction 函数改动过,而$fraction 对象(参数)则被改动了。如果要在函数内部改动对象,就必须以引用的方式传递参数:function reduce_fraction(&$fraction)答案是 D。15题中所示的语法是用来进行静态调用的。当方法被静态调用时,它们就像一个独立的函数,与任何类的实例无关。答案是 A。16没有。PHP4 只允许声明静态函数变量,没有静态类变量。17答案是 A。类 b 的属性$myvar 将在 b 的父类类 a 调用构造函数时被定义,此外,像 PHP4 中的普通变量一样,定义类变量时也不需要给它赋值。类 b 在其父类调用构造函数之前就给$myvar 赋了值,所以不管之后如何赋值,输出都是 1。18PHP4 中无法即时装载类它们必须在使用前就仔细声明好。PHP5 中,可以使用_autoload 魔术函数提醒解释器在找不到需要的类时尝试自动调用。因此答案是 D。19为软件设计和编程中的常规问题提供良好的解决方案,这显然是在说设计模式。20脚本什么都不输出(答案是 D)。因为子类的构造函数不会自动调用父类的构造函数。233Web 开发中的 PHP没有互联网,PHP 开发者将生活的非常艰苦。事实上,很多人甚至怀疑,如果没有互联网的飞速发展导致的轻量级开发需求大增,PHP 还能否存在。与网站开发打交道时,熟悉 HTML 和 HTTP 相关的知识非常重要。此外,本章习题还考察用会话来维持多个访问请求的知识。一旦你开始应用 PHP 这门语言,Web 开发将是和你接触最紧密的开发。因此,你必须掌握相关的概念以确保你能够通过本章测试,这点非常重要。24问题1 如何访问会话变量(session)?A通过$_GETB通过$_POSTC通过$_REQUESTD通过全局变量E以上都不对2 哪个函数能让服务器输出如下 header?set-Cookie: foo=bar;答案:_3 在忽略浏览器 bug 的正常情况下,如何用一个与先前设置的域名(domain)不同的新域名来访问某个 cookie?A通过 HTTP_REMOTE_COOKIE 访问B不可能C在调用 setcookie()时设置一个不同的域名D向浏览器发送额外的请求E使用 Javascript,把 cookie 包含在 URL 中发送4 index.php 脚本如何访问表单元素 email 的值?(双选)窗体顶端窗体底端A$_GETemailB$_POSTemailC$_SESSIONtextD$_REQUESTemailE$_POSTtext5 以下脚本将如何影响$s 字符串?(双选)25A尖括号会被转换成 HTML 标记,因此字符串将变长B没有变化C在浏览器上打印该字符串时,尖括号是可见的D在浏览器上打印该字符串时,尖括号及其内容将被识别为 HTML 标签,因此不可见E由于调用了 htmlentities(),字符串会被销毁6 如果不给 cookie 设置过期时间会怎么样?A立刻过期B永不过期Ccookie 无法设置D在浏览器会话结束时过期E只在脚本没有产生服务器端 session 的情况下过期7 思考如下代码:如果用户在两个文本域中分别输入“php”和“great”,脚本输出什么?窗体顶端窗体底端A什么都没有BArrayC一个提示DphpgreatEgreatphp8 在 HTTPS 下,URL 和查询字串(query string)是如何从浏览器传到 Web 服务器上的?A这两个是明文传输,之后的信息加密传输B加密传输26CURL 明文传输,查询字串加密传输DURL 加密传输,查询字串明文传输E为确保加密,查询字串将转换为 header,夹在 POST 信息中传输9 当把一个有两个同名元素的表单提交给 PHP 脚本时会发生什么?A它们组成一个数组,存储在超级全局变量数组中B第二个元素的值加上第一个元素的值后,存储在超级全局变量数组中C第二个元素将覆盖第一个元素D第二个元素将自动被重命名EPHP 输出一个警告10如何把数组存储在 cookie 里?A给 cookie 名添加一对方括号B使用 implode 函数C不可能,因为有容量限制D使用 serialize 函数E给 cookie 名添加 ARRAY 关键词11以下脚本输出什么??phpob_start();for ($i = 0; $i A12345678910B1234567890C0123456789D什么都没有E一个提示12默认情况下,PHP 把会话(session)数据存储在_里。27A文件系统B数据库C虚拟内容D共享内存E以上都不是13你在向某台特定的电脑中写入带有效期的 cookie 时总是会失败,而这在其他电脑上都正常。在检查了客户端操作系统传回的时间后,你发现这台电脑上的时间和 web 服务器上的时间基本相同。而且这台电脑在访问大部分其他网站时都没有问题。请问这会是什么原因导致的?(双选)A浏览器的程序出问题了B客户端的时区设置不正确C用户的杀毒软件阻止了所有安全的 cookieD浏览器被设置为阻止任何 cookieEcookie 里使用了非法的字符14假设浏览器没有重启,那么在最后一次访问后的多久,会话(session)才会过期并被回收?A1440 秒后B在 session.gc_maxlifetime 设置的时间过了后C除非手动删除,否则永不过期D除非浏览器重启,否则永不过期E以上都不对15哪个函数能把换行转换成 HTML 标签?答案:_28答案1 尽管在 register_globals 被设置为 on 时,可以通过全局变量来访问 session,但在较新版本的 PHP 中,为了避免造成安全隐患,php.ini 文件已经把 register_globals 设置为 off了。因此答案是 E。2 虽然 header 函数在这里也能用,但这题显然是在说 setcookie 或 setrawcookie 函数。3 答案是 B。浏览器不允许来自某个域名的 HTTP 事务更改另一个域名下的 cookie,否则这将造成严重的的安全问题。4 既然表单采用 post 方式传输,那么脚本将只可能从$_POST 和$_REQUEST 两个超级全局变量数组中取到值。元素名称(email)是键名,因此答案是 B 和 D。注意,由于可能导致潜在的安全问题,这里不鼓励使用$_REQUEST。5 本题考验你对 HTML 编码的认识以及代码查错能力。变量$s 在被函数 htmlentities()处理过后,结果返回给了变量$ss,而$s 自己并没有被改变。因此答案是 B 和 D。你可能觉得自己被戏弄了,但是记住,发现这样的小错误是捉虫能力中很重要的一部分。6 如果没有设置过期时间,cookie 将在用户会话结束时自动过期。cookie 不需要服务器端会话的支持,因此答案是 D。7 表单使用 post 方式传输,所以无论在文本框中输入什么,其值都会传给$_POST 超级全局变量,这里的$_GET 数组没有值。答案是 A。8 HTTPS 传输发生时,浏览器与服务端立刻完成加密机制的握手,之后的数据都是加密传输而不是明文传输包括 URL,查询字串。而在 HTTP 传输中,它们都是明文传输的,因此答案是 B。9 对于收到的查询字串和 POST 信息,PHP 只是简单的把元素添加进对应的超级变量数组中。结果就是如果有两个元素同名,前一个会被后一个覆盖。答案是 C。10只有 B 永远正确。虽然你可以用 implode 函数把数组转化成字符串,然后存在数组里,但却无法保证日后一定能用 serialize()把这个字符串还原成数组。浏览器对单个 cookie有容量限制,因此在 cookie 里存储数组不是个好主意。但事情也并非永远是这样,你仍然可以存储一些比较小的数组。11这又是一个考验 debug 能力的题。注意到了吗,在脚本的末尾,echo 语句中的$output变量拼错了!脚本不会输出任何东西,答案是 E。12答案是文件系统(A)。默认情况下,PHP 把所有会话信息存储在/tmp 文件夹中;在没有这个文件夹的操作系统中(比如 Windows),必须在 php.ini 中给 session.save_path 设置一个合适的位置(如 c:Temp)。2913B 和 D 是最有可能出问题并应该深入调查的地方。由于浏览器访问其他网站都正常,所以不可能是浏览器程序出了问题。杀毒软件通常不会选择性的只阻止安全的 cookie(不过有可能会阻止所有的 cookie)。你首先应当检查浏览器是否被设置为阻止所有cookie,这是最有可能导致该问题的原因。同时,错误的时区设置也可能是根源给cookie 设置有效期时用得是 GMT 时间。可能会出现 cookie 在写入时就立刻过期,从而无法被脚本接收的情况。14session.gc_maxlifetime 设置的是用户最后一次请求到 session 被回收之间的时间间隔。尽管数据文件并没有被真正删除,不过一旦 session 被回收,你将无法对此 session 进行访问。巧合的是,session.gc_maxlifetime 的默认设置正好是 1440 秒,但这个数字是可以被系统管理员调整的。所以答案应该是 B。15函数 nl2br 能实现这个功能。304数组PHP 最强大的功能大概就是处理数组了。PHP 允许开发者创建由各种不同数据类型的键和值组成的数组,并允许你对它进行排序、分割和组合等多种操作。力量越大,责任越大。找到最佳的办法来处理如此复杂的数组并不是一件轻松的事。本章一方面考察你对数组工作机制的认识不光是理论上的,还要求实践。另一方面考察你“人工处理”简单脚本指出哪里出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论