课程咨询 :13623629309

太原PHP培训 > 雇主企业 > 企业面试题 > 2015经典php笔试题与答案
  • 2015经典php笔试题与答案

    发布:达内      来源:太原达内PHP学院      时间:2015-08-27

    • 1. 选择合适的答案填入空白处
      PHP 是一种______脚本语言,基于______引擎。PHP 最常被用来开发动态的______内
      容,此外,它同样还可被用来生成______(以及其他)文档。
      A.动态,PHP,数据库,HTML
      B.嵌入式,Zend,HTML,XML
      C.基于 Perl 的,PHP,Web,静态
      D.嵌入式,Zend,Docbook 文档,MySQL
      E.基于 Zend 的,PHP,图像,HTML
      1. 唯一有意义的答案是 B。PHP 是一种基于 Zend 引擎的脚本语言,它通常被嵌入在 HTML
      代码中。它主要被用来开发 HTML 文档,但是也可以用它来开发其他类型的文档,比
      如 XML。


      2.以下哪种标签不是 PHP 起始/结束符?
      A.<% %>
      B.//
      C.<?php ?>
      D./* */
      E.

      2. PHP 编程中,人们不太使用<% %>和两个标签,但它们确实是合法的 PHP 界定符。
      标签是非法的,因此正确的答案是 D。记住,根据 php.ini 文件中的配置不同,这
      当中的某些标签无法在特定的情况下使用。

      3.以下代码哪个不符合 PHP 语法?
      A.$_10
      B.${“MyVar”}
      C.&$something
      D.$10_somethings
      E.$aVaR
      3. PHP 变量以一个美元符号为开头,后面跟上任意数量的数字、字母和下划线。${“MyVar”}
      是一个合法的变量名,它使用的是较松散的命名约定。&$something 是对$something 的
      引用。然而,变量名不能以数字为开头,$10_somethings 是非法的,因此答案是 D。


      4.运行以下代码将显示什么?
      define(myvalue, "10");
      $myarray[10] = "Dog";
      $myarray[] = "Human";
      $myarray['myvalue'] = "Cat";
      $myarray["Dog"] = "Cat";
      print "The value is: ";
      print $myarray[myvalue]."\n";
      ?>
      2
      A.The Value is: Dog
      B.The Value is: Cat
      C.The Value is: Human
      D.The Value is: 10
      E.Dog

      4. 注意,$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.没有区别:两个函数都打印文本!

      5. 尽管 print()和 echo()在绝大多数情况下可以互换使用,但它们之间还是有一处不同。
      print()是函数,有返回值;echo()实际上是一个语言结构,没有返回值,并且不能在表
      达式中使用。因此,答案是 A。

      6.以下脚本输出什么?
      $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

      6. %运算符表示取模,它返回两个操作数相除的余数。<<是左移运算符,相当于乘以 2
      的 N 次方。最后的答案乘以了一个浮点数,改变了它的数据类型。但是,由于小数点
      后是零,因此输出的结果不包含小数部分。答案是 256(D)。

      7.如何给变量$a,$b 和$c 赋值才能使以下脚本显示字符串“Hello, World!”?
      $string = "Hello, World!";
      $a = ?;
      3
      $b = ?;
      $c = ?;
      if($a) {
      if($b && !$c) {
      echo "Goodbye Cruel World!";
      } else if(!$b && !$c) {
      echo "Nothing here";
      }
      }
      else {
      if(!$b) {
      if(!$a && (!$b && $c)) {
      echo "Hello, World!";
      } else {
      echo "Goodbye World!";
      }
      } else {
      echo "Not quite.";
      }
      }
      ?>
      A.False, True, False
      B.True, True, False
      C.False, True, True
      D.False, False, True
      E.True, True, True
      7. 根据条件式的逻辑,要想得到 Hello, World!字符串,必须要在第一个 if 结构中满足 else
      的条件。因此$a 必须为 False,然后$b 也必须为 False。最内层的条件语句的实现要求
      先前的两个变量($a 和$b)是 False,而$c 必须是 True(答案是 D)。


      8.以下脚本输出什么?
      $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’组成的字符串
      8. 正确答案是 C。从 PHP4.2.0 开始,除非已经给定了一个伪随机整数列,否则不再需要
      用 srand()函数初始化随机数生成器。此外,即使随机数生成器没有被事先播种,脚本
      仍然会生成 49 个伪随机字符。尽管$array 变量是字符串,但可以用访问数组的方式进
      行访问——使用数字索引访问某个位置上的字符。最后,for 循环将从 1 开始执行到 50,
      也就是执行了 49 次

      9.哪种语句结构用来表现以下条件判断最合适?
      if($a == 'a') {
      somefunction();
      } else if ($a == 'b') {
      anotherfunction();
      } else if ($a == 'c') {
      dosomething();
      } else {
      donothing();
      }
      ?>
      A.没有 default 的 switch 语句
      B.一个递归函数
      C.while 语句
      D.无法用别的形式表现该逻辑
      E.有 default 的 switch 语句

      9. 用一系列的 if…else 语句来检查一个条件的代码块,最适合用 switch 语句来替代。
      switch($a) {
      case 'a':
      somefunction();
      break;
      case 'b':
      10
      anotherfunction();
      break;
      case 'c':
      dosomething();
      break;
      default:
      donothing();
      }
      ?>
      因为 if 语句中有一个捕捉所有其他条件的 else,对应的,switch 代码块需要一个 default。
      正确答案是 E。

      10.要修改每个元素的值,如何遍历$myarray 数组最合适?
      $myarray = array ("My String","Another String","Hi, Mom!");
      ?>
      A.用 for 循环
      B.用 foreach 循环
      C.用 while 循环
      D.用 do…while 循环
      E.办不到!


      10.通常情况下,foreach 语句是遍历数组的首选。但是,由于 foreach 语句是在数组的副
      本上进行操作,而我们需要给数组中每个元素重新赋值,所以在这里 foreach 就不适用
      了。尽管也可以用 while 循环和 do…while 循环,但由于数组是顺序索引的,最合适的
      语句还是 for 语句。因此答案是 A。
      $myarray = array ("My String", "Another String", "Hi, Mom!");
      for($i = 0; $i < count($myarray); $i++)
      {
      $myarray[$i] .= " ($i)";
      }
      ?>


      11.考虑如下代码片段:
      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($result as $key => $val)
      B.while($idx *= 2)
      C.for($idx = 1; $idx < STOP_AT; $idx *= 2)
      D.for($idx *= 2; STOP_AT >= $idx; $idx = 0)
      E.while($idx < STOP_AT) do $idx *= 2


      11.由于题目只允许填写一行代码,唯一合适的是 for 循环,因此答案只能是 C 或者 D。
      要选出能生成正确结果的 for 循环,我们必须先复习一下 for 循环的构成要素。PHP 中,
      for 循环是这样声明的:
      for(<初始化>;<继续执行,直到>;<重复执行>)
      <初始化>在循环开始时执行一次,然后 for 循环开始执行大括号内的代码,直到<继续
      执行,直到>的值为 False。每完成一次循环,执行一次<重复执行>。因此,正确的代
      码块应该是:
      for ($idx = 1; $idx < STOP_AT; $idx *= 2)
      答案是 C。
      12.为用户定义函数 is_leap()选择一个合适的函数声明。is_leap 使用 2000 作为默认年份。
      /* 函数声明处 */
      {
      $is_leap = (!($year %4) && (($year % 100) ||
      !($year % 400)));
      return $is_leap;
      }
      var_dump(is_leap(1987)); /* Displays false */
      var_dump(is_leap()); /* Displays true */
      ?>
      A.function is_leap($year = 2000)
      B.is_leap($year default 2000)
      C.function is_leap($year default 2000)
      6
      D.function is_leap($year)
      E.function is_leap(2000 = $year)


      12.5 个选项中,只有两个是合法的 PHP 函数声明(A 和 D)。在这两个选项中,只有一
      个设置了参数的默认值——答案是 A。

      13.运行以下代码将显示什么值?假设代码运行时的 URL 是:testscript.php?c=25
      function process($c, $d = 25)
      {
      global $e;
      $retval = $c + $d - $_GET['c'] - $e;
      return $retval;
      }
      $e = 10;
      echo process(5);
      ?>
      A.25
      B.-5
      C.10
      D.5
      E.0
      13.本题考察 PHP 中变量作用域的相关知识。你必须明确 global 关键字是如何将变量引入
      本地域的,以及$_GET、$_POST、$_COOKIE、$_REQUEST 等超级全局变量的作用
      域。本题中,最终的数学表达式是 5+25-25-10,等于-5,答案是 B。



      14.考虑如下代码:
      function myfunction($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;
      /* Group A */
      $name = $s[?].$s[?].$s[?].$s[?].$s[?].$s[?];
      /* Group B */
      $name(${$s[?]}, ${$s[?]});
      ?>
      脚本中的每个问号(?)代表$s 数组的一个数字索引。要想代码执行时显示 Hello, World!字符
      串,该如何选择数字索引?
      A.Group A: 4,3,0,4,9,9 Group B: 7,8
      B.Group A: 1,3,0,4,9,9 Group B: 7,6
      C.Group A: 1,3,2,3,0,4 Group B: 5,8
      D.Group A: 0,4,9,9,9,9 Group B: 7,8
      E.Group A: 4,3,0,4,9,9 Group B: 7,8


      14.函数能被以一个包含着函数名的变量后面加上括号(以及必要的参数)的形式动态
      调用。对于Group A来说,合适的索引组合是0,4,9,9,9,9,产生字符串myfunction。
      另一方面,参数将使用${}结构的可变变量。对Group B来说,合适的索引应该是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.以上皆可


      15.在较新版本的 PHP 中,require(或 requier_once())和 include()(或 include_once())只有
      一个区别——如果包含的文件不存在,前者将产生一个致命错误,同时终止脚本的执
      行;而后者只会产生一个警告。因此答案 E 正确。
      16.什么情况下声明函数时不能给参数赋默认值?
      A.当参数是布尔值时
      B.当函数是类中的成员时
      C.当参数是通过引用传递时
      D.当函数只有一个参数时
      E.永远不会


      16.当参数被声明为通过引用传递时,你不能给它赋默认值,此时解释器期望获得一个能
      在函数内部进行修改的变量。答案是 C。

      17.______操作符在两个操作数中有一个(不是全部)为 True 时返回 True。
      答案:____________

      17.正确答案是逻辑异或(xor)运算符。


      18.全等运算符===如何比较两个值?
      A.把它们转换成相同的数据类型再比较转换后的值
      B.只在两者的数据类型和值都相同时才返回 True
      8
      C.如果两个值是字符串,则进行词汇比较
      D.基于 strcmp 函数进行比较
      E.把两个值都转换成字符串再比较


      18.全等运算符比较两个操作数的数据类型和值,两者中有一个不同,都会返回 False。因
      此答案是 B。

      19.以下哪个选项是把整型变量$a 的值乘以 4?(双选)
      A.$a *= pow (2, 2);
      B.$a >>= 2;
      C.$a <<= 2;
      D.$a += $a + $a;
      E.一个都不对


      19.答案是 A 和 C。A 选项中,pow 函数计算 2 的平方,答案是 4。C 选项中,左移运算
      符将$a 的值左移两位,相当于乘以 4。

      20.一段脚本如何才算彻底终止?
      A.当调用 exit()时
      B.当执行到文件结尾时
      C.当 PHP 崩溃时
      D.当 Apache 由于系统故障而终止时

      20.答案是 A。一段脚本并不会在执行到文件末尾时终止,所以当前文件才能被其他脚本
      包含。至于 PHP 和 Apache 崩溃,这两个说法就太恶搞了。

上一篇:PHP_面试笔试题--选择题

下一篇:PHP+MySQL技术职位笔试题

最新开班日期  |  更多

php高级开发名企定制班(剩2个名额)

php高级开发名企定制班(剩2个名额)

开班日期:12-29

php高级开发周末班(剩5个名额)

php高级开发周末班(剩5个名额)

开班日期:12-29

php高级开发免费试听(剩5个名额)

php高级开发免费试听(剩5个名额)

开班日期:12-29

更多高级开发工程师精品班

更多高级开发工程师精品班

开班日期:12-29

  • 地址:山西省太原市小店区学府街长治路高新国际A座24层
  • 课程培训电话:13623629309     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56