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

时间:2022-10-24 18:28:54

一、选择题

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);