PHP中常见的面试题3,附答案

一、选择题

01. 输出为Mozilla/4.0(compatible;MSIE5.01;Window NT 5.0)时,可能的输出语句是:

A. $_SERVER['HTTP_USER_AGENT_TYPE'];

B. $_SERVER['HTTP_USER_AGENT'];

C. $_SERVER['USER_AGENT'];

D. $_SERVER['AGENT'];

02. 下面功能PHP无法实现的是:

A. 服务器端脚本运行

B. 命令行脚本运行

C.客户端图形界面(GUI)程序

D.浏览器端执行DOM操作

03. 下面说法不正确的是:

A. PHP有四种标量类型:布尔型(boolean),整型(integer),浮点型(float),字符串(string)

B. 浮点型(float)与双精度型(double)是同一种类型

C.复合类型包括:数组(array),对象(object),资源(resource)

D. 伪类型:混合型(mixed),数字型(number),回调(callback)

04. 执行下面的代码后, 得到的输出是:(说明: Echo print array eval list è语言结构)

<?php
      echo function_exists('print');
?>

A.

B. true

C. false

D. FALSE

05. 执行下面的代码的结果是什么?

   <?php
      $bool = TRUE;
      echo gettype($bool);
      echo is_string($bool);
   ?>

A. boolean

B. boolean0

C. booleanFALSE

D. Booleanfalse

06. 写出下面代码执行的结果:

  <?php
      $a = 12;
      $b = 012
      $c = 0x12;
      echo $a,"\n",$b,"\n",$c;
   ?>

结果: 12 10 18(二,十、八和十六进制之间转换,核心点二进制)

07. 下面代码的执行结果是什么?

   <?php
    echo 1+2+"3+4+5";
   ?>

A. 0 C. 6

B. 3 D. "33+4+5";

09. 下面代码加入下面那个函数后返回TRUE:

return ? == 'A';

A. ord(65)

B. chr(65)

C. 65+''

D. ''+65

10. 下面代码的输出正确的是:

   <?php
      $a = array(1=>5,5=>8,22,2=>'8',81);
      echo $a[7];
      echo $a[6];
      echo $a[3];
   ?>

A. 空2281

B.空8122

C.8122

D.空空空

11. 下面代码的输出结果:

  <?php
      $a[bar]='hello';
      echo $a[bar];
      echo $a['bar'];
   ?>

A. hello

B. 空空

C.报错

D.hellohello

12. 写出下面代码的结果:

<?php
  echo 1>>0;    //001 ==>1
  echo 2>>1;    //010 ==> 001=>1
  echo 3<<2;    //011 <== 01100 =>12
?>

A. 012

B. 106

C. 1112

D.123

13. 下面代码的执行结果:

   <?php

      for($i=0;i<10;$i++){

         print $i;

      }

   ?>

A. 0123456789

B. 012345678910

C. 无输出

D.死循环

14. 下面对于echo, print 的描述正确的是:

A. echo, print 都可以打印多个参数

B. print 可以打印多个参数,echo 不可以

C. echo可以打印多个参数,print不可以

D. echo, print 都不可以打印多个参数

15. 对于正面的代码

   <?php
      $fruits = array('strawberry'=>'red', 'banana'=>'yellow');
   ?>

不能够正确得到结果'yellow'的代码是:

A. echo "A banana is {$fruits['banana']}";

B. echo "A banana is $fruits['banana']";

C. echo "A banana is {$fruits[banana]}";

D. echo "A banana is $fruits[banana]";

16. 下面代码执行完成后的结果是什么?

   <?php
      function change(){
         static $i = 0;
         $i++;
         return $i;
      }
      print change();
      print change();
   ?>

结果: 1 2

18. 下面的语句输出结果 :

   <?php
         $foo = 'test';
         $bar = <<<EOT
         $foo bar
    EOT;
       echo $bar;
    ?>

a. $foo bar;

b. 'EOT' $foo bar EOT;

c. test bar;

d. 'EOT' test bar EOT;

19.$b的值是:

$a=3; $b=4;

if($a||$b=5){

echo 'tudo';

}

a. 4;

b. 5;

c. 3;

d. false

二、简答题

1. 什么事面向对象?主要特征是什么?

  1)面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。

  2)主要特征:封装、继承、多态

2. HTTP 状态中302、403、 500代码含义?

  302重定向、

  403服务器拒绝访问

  500服务器内部错误

4. Linux 下建立压缩包,解压缩包的命令。

  压缩 tar czf test.tar.gz test.php

  解压 tar xzf test.tar.gz

5. 请写出数据类型(int char varchar datetime text)的意思;请问 varchar 和 char有什么区别?

  1)类型介绍:

  int是数字类型,

  char固定长度字符串,

  varchar长度变字符串,

  datetime日期时间型,

  text文本字符串

  2)varchar 和 char的区别:

  1. Char定义的为固定长度, 范围是0~255, varchar定义的为变长长度, 范围为0~65535

  2.char在存储时会自动补空格, varchar不会.

  3.varchar在存储时会多占用1~2个字节记录长度, char不会.

6. MyISAM 和 InnoDB 的基本区别?

  1.查询速度 myisam快一些

  2.事务 innodb支持, myisam不支持

  3.全文索引 myisam支持, innodb不支持

  4.锁机制 myisam支持表所, innodb支持行锁

  5.存储文件 myisam产生三个文件(.frm .myd .myi), innodb产生两个文件(.frm .ibd)

7. 不使用cookie向客户端发送一个cookie.

  header('set-cookie: abc=abc;max-Age=3600;path=/');

8. isset() 和 empty() 区别,对不同数据的判断结果

  1)isset()是判断变量是否存在,是否定义

  2)empty()是判断变量的值是否为空.

9. 如何在页面之间传递变量(至少两种方式) ?

  1)get

  2)post

  3)ajax

  4)curl

  5)cookie

  6)session

三、PHP 代码题

1. 写出匹配URL的正则表达式.

  http://www.baidu.com/index.php?id=1&name=user1

  (http|ftp):\/\/(www.)?(\S*)(\?\S*\&\S*)?(.*)\/\/(.*)\?(.*)?

2. 请写出常见的排序算法,并用PHP实现冒泡排序,将数组$a = array()按照从小到大的方式进行排序

  快速排序

  冒泡排序

  插入排序

  归并排序

<?php
Function mysort($arr){
       For($i=0; $i<count($arr); $i++){
              For($j=0; $j<count($arr)-1; $j++){
                            If($arr[$j] > $arr[$j+1]){
                                          $tmp=$arr[$j];
                                          $arr[$j]=$arr[$j+1];
                                          $arr[$j+1]=$tmp;
                }
        }
    }
       Return $arr;
}
$arr=array(3,2,1);
print_r(mysort($arr));

3. 在数据库test中的一个表student,字段是name,class,score。分别代表姓名、所在班级,分数。

  1) 算出每个班级中的学生,按照成绩降序排序;

  select name,class,score from student order by score desc;

  2) 查出每个班的及格人数和不及格人数,格式为:class、及格人数、不及格人数

  SELECT

    sum(case when score >= 60 then 1 else 0 end) jige,

    sum(case when score < 60 then 1 else 0 end) bujige,

    class

  FROM `score`

  GROUP BY `class`

  3) 用PHP写入连接数据库("localhost","msuser","mspass")、执行以上SQL、显示结果、判断错误、关闭数据库的过程

  $conn=mysql_connect(‘localhost’,'msuser’,’mspass′);

  Mysql_select_db(‘test’);

  $sql="SELECT

      sum(case when score >= 60 then 1 else 0 end) jige,

      sum(case when score < 60 then 1 else 0 end) bujige,

      class

     FROM `score`

     GROUP BY `class`";

  if($result=Mysql_query($sql)){

  while($row=mysql_fetch_assoc($result)){

  print_r($row);

   }

  }

  Mysql_close($conn);