首页 > Web开发 > 详细

PHP 精典面试题(附答案)

时间:2019-11-11 22:46:48      阅读:103      评论:0      收藏:0      [点我收藏+]

1.输出Mozilla/4.0(compatible;MISIE5.01;Window NT 5.0)是,可能输出的语句是?

  A:$_SERVER[‘HTTP_USER_AGENT_TYPE‘];

  B: $_SERVER[‘HTTP_USER_AGENT‘];

  C: $_SERVER[‘USER_ACENT‘];

  D: $_SERVER[‘AGENT‘];

2.下面功能php无法实现的是?

  A: 服务端脚本运行;

  B: 命令行脚本运行;

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

  D: 浏览器执行DOM操作

3.下面说法不正确的是?

  A: PHP有四种标量类型:布尔型,整型,浮点型,字符串;

  B: 浮点型与双精度是同一种类型

  C: 复合类型包括:数组,对象,资源;

  D: 伪类型:混合型,数字型,回调;

4.执行代码后

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

输出的结果是?

  A: 空

  B: true

  C: false

  D: FALSE

5.下面不是PHP语法的组成部分的函数是?

  A: array

  B: eval

  C: each

  D: list

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

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

  A: boolean  

  B: boolean0

  C: booleanFalse

  D: booleanfalse

7.写出下面程序代码执行结果

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

  A: 22

  B: 10

  C: 6

  D: 12

8下面代码的执行结果是?

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

  A: 0

  B: 3

  C: 6

  D: "33+4+5"

9.下面代码加入下面那个函数后返回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: 空 22 81

  B: 空 81 22

  C: 81 22 空

  D: 空 空 空

11.下面代码的输出结果是?

  

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

  A: hello

  B: 空空

  C: 报错

  D: hello hello

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

  

<?php
      echo 1>>0;
      echo 2>>1;
      echo 3<<2;
  ?>

  A: 012

  B: 106

  C: 1112

  D: 123

13.下面代码执行结果?

  

<?php
      for($i=1;$i<10;$i++){
          print $i;
      }
  ?>

  A: 0123456789

  B: 01234567890

  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

17.

<?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

18.

$a = 3;
$b = 4;
 if($a || $b = 5){
   echo ‘tudou‘;
 }
    

  $b的值是?

  A: 4;

  B: 5

  C: 3;

  D: false;

19.下面那个表达式不能将两个字符串$s1和$s2串联成一个单独的字符串?

  A: $s1+$s2

  B: "{$s1}{$s2}"

  C: $s1.$s2

  D: implode(",array($s1,$s2))

    E: 以上方法都能实现

20.下面的脚本运行以后,$array数组所包含的值是什么?

<?php
$array = array(‘1‘,‘1‘);
  foreach($array as $k => $v){
      $v = 2;
  }
?>

  A: array(‘2‘,‘2‘)

  B: array(‘1‘,‘1‘)

  C: array(2,2)

  D: array(Null,Null)

21.cron后台常驻程序(daemon)用于?

  A: 负责文件在网络中共享

  B: 管理打印子系统Manages theprinting subsystem

  C: 跟踪管理系统信息和错误

  D: 管理系统日常任务的调度(scheduing)

22.怎么了解您在当前的目录下还有多大空间?

  A: Use df

  B: Use du /

  C: Use du .

  D: Use df .

23.有一个备份程序mybackup,需要在周一至周五下午一点和晚上八点各运行次,下面那一条crontab的项可以完成工作?

  A: 0 13,20 * * 1,5 mybackup

  B: 0 13,20 * * 1,2,3,4,5 mybackup

  C: *13,20 * * 1,2,3,4,5, mybackup

  D: 0 13,20 1,5 * * mybackup

24.下面那条命令可以吧f1.txt复制为f2.txt ?

  A: cp f1.txt f2.txt

  B: cat f1.txt|f2.txt

  C: cat f1.txt||f2.txt

  D: copy f1.txt|f2.txt

25.使用命令可以查看linux的启动信息?

  A: mesg -d

  B: dmesg

  C: cat /etc/mesg

  D: cat /var/mesg

26.在vi 中退出不保存的命令是?

  A: :qt

  B: :r

  C: :wq

  D: :q!

27.下面那个选项没有将john添加到users数组中?

  A: $users[] = ‘john‘;

  B: array_add($users,‘john‘);

  C: array_push($users,‘john‘);

  D: $users ||= ‘john‘;[a,c]

28.下列不属于Javascript语法关键字/保留字的是?

  A: var

  B: $

  C: functiom

  D: while

29.下列不属于JavaScript DOM事件的是?

  A: onclick

  B: onkeydown

  C: onbodyload

  D: onmouseover

30.下列PHP函数中不能直接在页面上输出字符串的函数是?

  A: echo

  B: sprintf

  C: printf

31.在PHP中,‘+‘操作符的功能不包括

  A: 字符串连接

  B: 数组数据合并

  C: 变量数据相加

32.用php获取当前时间并打印,打印格式为2006-5-10 22:21:21

echo date(‘Y-n-m H:i:s‘);

33,字符串转数组,数组转字符串,字符串截取,字符串替换,字符串查找的函数分别是什么?

  字符串转数组函数:

    str_split()

    explode()

  数组转字符串

    join()

    implode()

  字符串截取

    substr()

    mb_substr()

  字符串替换

    str_replace()

    preg_replace()

  字符串查找

    preg_match()

    preg_match_all()

    strops()

    strrops()

34.解释一下php类中pretect,public,private,interface,abstract,final,static的含义

  pretect:受保护的

  public:公有的

  private:私有的

  interface:接口

  abstract:抽象类或者抽象方法

  final:最终版本的类或者方法

  static:静态属性或者方法

35.如何把字符串‘08/26/2004‘替换成‘2004-08-26‘?

  

$date = ‘08/26/2004‘;
echo preg_replace(‘/(\d+)\/(\d+)\/(\d+)/‘,$3-$1-$2,$date);

36.从表login中选出name字段包含admin的前10条结果所有信息的sql语句

  

select * from login where name ‘%admin%‘ limit 10;

 

37.解释左连接,右连接,内连接,索引:

  左连接: left join on

  左连接是以左边的表为主表,先输出左边表的所有数据,右边匹配输出,不匹配的为null

  右连接:right join on

  右连接是以右边的表为主表,先输出右边表的所有数据,左边匹配输出,不匹配的为null

  内连接:inner join on

  内连接必须同时符合条件的内容才会输出,相等于普通的多表查询

38.写一个函数。尽可能高效的。从一个标准的url里取出文件的扩展名,已知url如下: $url = ‘http://www.baidu.com/web/index.php?id=4&name=lisi‘;

  

$arr = parse_url($url);
$arr2 = path_info($arr[‘path‘]);
$ext = $arr2[‘extension‘];

39.解决网站服务器大流量高并发的问题:

  把apache服务器(3000)换成nginx服务器(30000)

  修改Apache或者nginx的默认配置,把其中的并发数调到最高

  多增加几台服务器同时对用户提供服务(负载均衡技术)

  减少客户在服务器上的链接时间断开时间

  php代码的优化

  数据缓存(文件缓存,或者内存缓存redis,memcache等)

40.如何设计或者配置mysql ,才能达到高效的目的

  服务器优化:max_connections = 1500 并发链接数调到最大

        wait_timeout = 10 链接关闭时间

  表优化:字段索引:主键索引,唯一索引,普通索引

  负载均衡(mysql主从复制)

41.如何进行防sql注入

  表单尽量使用post提交

  使用HTTP_REFERER检查源文件

  开启addslashes在特殊符号前加\

  使用htmlspecialchars对字符进行转义

42.防止盗链

  使用HTTP_REFERER检查源文件

43.用PHP写出一个安全的用户登录系统需要注意哪些方面?

  表单使用post提交

  限制错误登录次数

  使用验证码防止机器破解

  同时做前后端表单验证

44.使用过哪些版本控制工具?

  svn

  git

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

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

  主要特征:封装,继承,多态

46.HTTP状态中302,403,500代码的含义:

  302重定向,403服务器拒绝访问,500服务器内部错误

47.linux下建立压缩包,解压缩包的命令是?

  tar czf test.tar.gz test.php

  tar xzf test.tar.gz

48.myisam和innodb的基本区别:

  在增删改查方面,myisam要优于innodb表引擎,当数据量特别大时,他们的速度相差不大,
       innodb支持事务,存储过程,行锁等等

49.isset()和empty()的区别:

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

  empty 是判断变量是是否为空

50.如何在页面之间传递变量(至少两种)

  get,post,ajax,curl,cookie,session

51.写出匹配url的正则表达式:

$url = "wwww.baidu.com";
preg_match(‘/^(\w+\.)?\w+\.\w+$/‘,$url);

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

  冒泡排序,快速排序

function mysort($arr){
            for($i=0;$i<count($arr)-1;$i++){
                for($j=0;$j<count($arr)-$i-1;$j++){
                    if($arr[$i]>$arr[$j+1]){
                        $x = $arr[$j];
                        $arr[$j] = $arr[$j+1];
                        $arr[$j+1] = $x;
                    }
                }
           }
      return $arr
 }

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

  查出每个班级中的学生,按照成绩降序排序

  select * from student order by class asc,score desc;

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

  select class,sum(if(score>=60,1,0)) jige,sum(if(score<60,1,0)) bujige from student group by class;

54.请写出你认为语言中的高级函数

  array_filter()

  array_map()

  array_multisort()

  array_count_values()

  array_splice()

  htmlspecialchars()

55.表结构入下

名称 类型
uid int
name varchar
age tinyint

  

 

 

需求:

  增加一个字段性别sex,写出修改语句

alter table user add sex varchar(10) not null default ‘男‘;

  查询出年龄介于20到30岁之间的用户

select uid,name,age from user where age>20 && age<30;

  如果提个web频繁的访问查询,上题的查询如何优化?

给age字段添加索引
create index in_age on user(age);

 

56.web开发的遇到的问题有哪些?

  功能需求分析

  数据库设计

  sql语句的优化

  前端编写js特效

57.求两个日期的差数,例如:2007-2-5~2007-3-6的日期差数

  

$s = strtotime(‘2007-3-6‘) - strtotime(‘2007-2-5‘);//秒差
echo $s/86400;//相差天数

58.写出如下程序运行结果

<?php
 $test = ‘hello‘;
 $abc = &$test;
 unset($test);
 echo $abc;
?>

正确答案:hello

59.在空表news中,字段id为自增主键,批量插入17条记录后,发现最后三条数据有误,删除此三条数据后重启mysql数据库,再重新插入三条记录,请问最后一条记录值的id是多少?

  myisam 引擎 18

  innodb 引擎 20

60.至少写出一种验证139开头的11位手机号码的正则表达式:

$str = "13911111111";
preg_match(‘/^139\d{8}$/‘,$str);

61.请写出一个函数,实现如下功能:

  字符串"open_door" 转换为 "OpenDoor","make_id"转换为"MakeId"

<?php
         $str = "make_hello";
         $arr = explode(‘_‘,$str);
         $str2 = ‘‘;
         foreach($arr as $val){
             $str2.=ucfirst($val);
         }
         echo $str2;
     ?>

62.请写一个函数将1234567890转成1,234,567,890,每3位用逗号隔开的形式 

<?php
         $str = "1234567890";
         $str2 = strrev($str);//翻转字符串
         $arr = str_split($str2,3);
         $str3 = join(‘,‘,$arr);
         $str4 = strrev($str3);
         echo $str4;
         //还有一个函数直接能搞定:
         $str = "1234567890";
         echo number_format($str);
     ?>

63.有A(id,sex,par,c1,c2),B(id,age,c1,c2)两张表,其中A.id与B.id关联,现在要求写出一条sql语句,将B中的age>50的记录的c1,c2更新到A表中统一记录中的c1,c2字段中:

update A,B set A.c1 = B.c1,A.c2 = B.c2 where A.id = B.id and B.age>50;

64.如何实现每天的0点钟重启linux服务器?

crontab -e
00 00 * * * /sbin/init 6

65.当前目录下有一个文件showdown.sh,如何修改文件,将其指定为使用/bin/bash运行,如何修改其权限为所有用户可读写,所有用户可执行?

vim showdown.sh
#!/bin/bash

chmod 777 showdown.sh

66.当前目录下有一个文件为showdown.sh,如何修改其所有人为root

chown root showdown.sh
chown root:root showdown.sh//修改所有人为root,并且修改所属组为root

67.请用用php程序,编写读取www.baidu.com 的首页的内容,并将其存入字符串$str中

$str = file_get_contents(‘http://www.baidu.com‘);

68.请用php将上题中读取出来的网页内容的<title>标签的值解析出来

preg_match(‘/<title>(.*)<\/title>/‘,$str,$arr);

69.通过php函数的方式对目录进行遍历,写出程序:

<?php
     function delDir($dir){
         $files = scandir($dir);
         foreach($files as $file){
             if($file!=‘.‘ && $file!=‘..‘){
                 $path = $dir.‘/‘.$file;
                 if(is_dir($path)){
                     delDir($path);
                 }else{
                     unlink($path);
                 }
             }
         }
     rmdir($dir);
     }
 ?>

70.什么是数据库索引,主键索引,唯一索引的区别,索引的缺点是什么?

  数据库索引是给数据库中的每张表建立索引,便于提高查询检索效率

  主键索引是给每张表的主键设置索引

  唯一索引是给每张表的唯一值字段设置索引

  索引的缺点是建立索引需要增加存储空间,空间利用率低,并且当数据发生变化时改索引资源消耗比较大

71.通过js 实现前进和后退操作:

<a href="javascript:Window.history.go(1)">前进</a>
<a href="javascript:Window.history.go(-1)">后退</a>

72.写出程序运行结果:

<?php
     $a = 0;
     $b = 0;
     if($a=3 || $b = 3){
         $a++;
         $b++;
     }
      echo $a.",".$b; 
?>
正确答案是:1,1
<?php
     $a = 0;
     $b = 0;
     if($a = 4 | $b = 3){
         $a++;
         $b++;
     }
     echo $a.",".$b;
 ?>
正确答案是:8,4(未或运算)

73.写出下列代码的输出结果?

  

<?php
     function myfunc($argument){
         echo $argument+10;
     }
     $variable = 10;
     echo "myfunc($variable)=".myfunc($variable);
 ?>
正确答案是:10myfunc(10)=;

74.请用尽可能少的语句实现对输出email地址进行验证功能:

$email = "test@qq.com";
preg_match(‘/^\w+@\w+\.\w+$/‘,$email,$arr);

75.如何判断sql语句的运行效率,如何优化一个查询sql

desc select * from table;
explain select * from table;
给查询条件增加索引

76.apache默认使用的是进程管理还是线程管理?

  apache默认使用的是进程管理

77.实现中文字符串截取无乱码的方法是?

  mb_substr();

78.用php写出显示客户端ip和服务端的ip代码:

  $_SERVER[‘REMOTE_ADDR‘]

  $_SERVER[‘SERVER_ADDR‘]

79.在http1.0中,状态码为401的含义是?如果返回"找不到文件"的提示,则用header函数,其语句为?

  401代表未被授权

  header("HTTP/1.0 404 Not Found");

80.在php中error_reporting这个函数的作用是?

  设置错误级别与错误信息回报

81.简述如何得到当前执行脚本路径,包括所得到的参数?

  $_SERVER[‘REQUEST_URI‘];

82.mysql_fetch_row和mysql_fetch_array之间的区别?

  mysql_fetch_row获取一个索引数组

  mysql_fetch_assoc获取一个关联数组

83.下面程序会输出什么?

<?php
     $num = 10;
     function multiply(){
         $num = $num*10;
     }
     multiply();
     echo $num;
 ?>
正确答案是:10

84.写出下面程序的输出结果?

  

<?php
     $b = 201;
     $c = 40;
     $a = $b>$c:4:5;
     echo $a;
 ?>
正确答案是:4

85.$a = ‘abcdef‘;请取出$a的值并打印第一个字母:

  echo $a{0};

86.请写出php5的权限修饰符

  public 公有的

  private 私有的

  protected 受保护的

87.ftp://pub.foo.bar.com:2121/incoming/rls.sfv请给出这个url的各部分的含义

  ftp:// 是协议

  pub.foo.bar.com 是域名

  2121 是端口

  /incoming/ 是目录

  rls.sfv 是文件

88.服务器常用端口?

  80 http协议

  21 ftp协议

  22 ssh协议

  53 dns协议

  443 https协议

89.请写出5条linux命令

  ls

  cd

  pwd

  mkdir

  rmdir

90.请列出5个常用的php操作mysql函数:

  mysql_connect()

  mysql_query();

  mysql_select_db()

  mysql_fetch_assoc()

  mysql_fetch_row

91.有两张数据表,表user(id,name)记录了用户的id和昵称,表article(id,uid,title,content,time)记录了用户发表的文章标题,内容和时间,写一个sql语句打印出每个用户的昵称及其发表的文章总数?

select user.name,count(*) from user left join article on user.id = article.id group by user.id;

92.把左连接中产生的null替换成"0":

select user.name,count(article.uid) from user left join article on user.id = article.uid group by user.id;

93.请写出3个php中预定义全局变量

  __LINE__

  __FILE__

  __FOUCTION__

94.请写出下列代码的执行结果

<?php
               $var1 = 5;
               $var2 = 10;
               function foo(&$my_var){
                   global $var1;
                   $var1 +=2;
                   $var2 = 4;
                   $my_var +=3;
                   return $var2;
               }
               $my_var = 5;
               echo foo($my_var);//4
               echo $my_var;//8
               echo var1;//7
               echo $var2;//10
               $bar = ‘foo‘;
               $my_var = 10;
               echo $bar($my_var);//4

           ?> 

95.输出用户的ip地址,并判断用户的IP地址是否在192.168.1.100-----192.168.1.150之间

$sip = ip2long(‘192.168.1.100‘);
$eip = ip2long(‘192.168.1.150‘);
$getip = ip2long(‘192.168.1.120‘);
if($getip>=$sip and $getip<=$eip){
    echo ‘yes‘;
}else{
     echo ‘no‘;
}

96.将二维数组按照name的长度进行重新排序,按照顺序将id赋值(从1开始),二维数组如下:

$arr = array(
                  array(‘id‘=>0,‘name‘=>‘123833‘),
                  array(‘id‘=>0,‘name‘=>‘aaa‘),
                  array(‘id‘=>0,‘name‘=>‘dfsdfsdfsdfs‘),
                  array(‘id‘=>0,‘name‘=>‘12245‘),
                  array(‘id‘=>0,‘name‘=>‘122lll‘)
   );

实现代码如下:
          foreach($arr as $val){
                 $arr2[] = strlen($val[‘name‘]);
          }
          array_multisort($arr2,$arr);
          foreach($arr as &$val2){
                  $val2[‘id‘] = ++$i;
          }
          print_r($arr);

97.实现不用第三个变量交换,$a,$b的值,$a,$b的初始值自己定:

  $a = "linux";
  $b = "php";
  $b = array($a,$b);
  $a = $b[1];
  $b = $b[0];
  echo $a;

98.用php打印前一天的日期格式为:2006-5-10 22:22:21:

date(‘Y-n-d H:i:s‘ ,strtotime(‘-1 day‘));

99.下面程序输出什么?

<?php
        $int_a = 5;
       function factorial(){
         for($int_i=$int_a;$int_i>0;$int_i--){
             $int_a = $int_a * $int_i;
       }
    }
   factorial();
   echo $int_a;
  ?>
正确答案是:5

100.在项目开发中,需要上传超过8M的文件时,请说明php.ini需要修改的配置项

upload_max_filesize = 8
post_max_size = 9一定要大于等于上面的那个

101.php代码如下

<?php
    $data = array(‘a‘,‘b‘,‘c‘);
    foreach($data as $key => $val){
       $val = &$data[$key];
    }
  ?>

  问题1:程序执行时,每一次循环结束后变量$data的值是什么?请解释

    第一次:

      $data = array(‘a‘,‘b‘,‘c‘);

    第二次:

      $data = array(‘b‘,‘b‘,‘c‘);

    第三次:

      $data = array(‘b‘,‘c‘,‘c‘);

  问题2:程序执行完成后,变量$data的值是什么?请解释

    $data = array(‘b‘,‘c‘,‘c‘);

PHP 精典面试题(附答案)

原文:https://www.cnblogs.com/lixiansen/p/11839015.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!