PHP面试(2)

1.输出为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'];

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

     A.服务器脚本运行

     B.命令行脚本运行

     C.客户端推行界面(GUI)程序

     D.浏览器执行DOM操作

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

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

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

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

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

4.执行下面的代码后,

     <?php

         echo function_exists('print');

     ?>

     Echo print array eval list =>语言结构

     得到的结果是:

     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;

     ?>

      12 10 18

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

      <?php

          echo 1+2+"3+4+5";

      ?>

      6

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.空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

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 'tudo';

      }
     $b的值是():

     A.4;

     B.5;

     C.3;

     D.false; 
简答题:
1. 什么是面向对象?主要特征是什么?
      面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。


2. SESSION 与 COOKIE的区别是什么,请从协议,产生的原因与作用说明?
     (1)http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户。
     (2)SESSION存储在服务器端,COOKIE保存在客户端。Session比较安全,cookie用某些手段可以修改,不安全。Session依赖于cookie进行传递。
     (3)禁用cookie后,session不能正常使用。Session的缺点:保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。Session保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由php配置文件的session.save_path指定。Session文件是公有的。


3. HTTP 状态中302、403、 500代码含义?
     一二三四五原则: 一. 消息系列 二 成功系列 三. 重定向系列 四. 请求错误系列 五. 服务器端错误系列
    302:临时转移成功,请求的内容已转移到新位置 403:禁止访问 500:服务器内部错误 401代表未授权。

4. Linux 下建立压缩包,解压缩包的命令
    Tar.gz:
    打包: tar czf file.tar.gz file.txt
    解压: tar xzf file.tar.gz
    Bz2:
    打包: bzip2 [-k] 文件
    解压: bunzip2 [-k] 文件
    Gzip(只对文件,不保留原文件)
    打包: gzip file1.txt
    解压: gunzip file1.txt.gz
    Zip: -r 对目录
    打包: zip file1.zip file1.txt
    解压: unzip file1.zip


5. 请写出数据类型(int char varchar datetime text)的意思;请问 varchar 和 char有什么区别?
    Int 整数 char 定长字符 Varchar 变长字符 Datetime 日期时间型 Text 文本型 Varchar 与char的区别 char是固定长度的字符类型,分配多少空间,就占用多长空间。 Varchar是可变长度的字符类型,内容有多大就占用多大的空间,能有效节省空间。 由于varchar类型是可变的,所以在数据长度改变的时,服务器要进行额外的操作,所以效率比char类型低。

6. MyISAM 和 InnoDB 的基本区别?索引结构如何实现?
    MyISAM类型不支持事务,表锁,易产生碎片,要经常优化,读写速度较快,而InnoDB类型支持事务,行锁,有崩溃恢复能力。读写速度比MyISAM慢。
创建索引:alert table tablename add index (`字段名`)

         

       MyISAM的读写锁调度是写优先,这也是myisam不适合做写为主表的引擎,因为写锁后,其他线程不能做任何操作,大量的更新会时查询很难得到锁,从而造成永远阻塞。

7. 不使用cookie向客户端发送一个cookie.
    (1)理解:session_start()开启时,生成一个常量 SID,当COOKIE开启时,这个常量为空,当COOKIE关闭时,这个常量中存储了PHPSESSID的值。通过在URL后加一个SID参数来传递SESSIONID的值,从而使客户端页面可以使用SESSION里面的值。 当客户端开启COOKIE和服务器端开启SESSION时。 浏览器第一次请求,服务器会向浏览器端发送一个COOKIE里面存储SESSIONID. 当浏览器第二次请求时,会把已存在
     (2)将php.ini中的session.use_trans_sid改为1。
8. isset() 和 empty() 区别
    Isset判断变量是否存在,可以传入多个变量,若其中一个变量不存在则返回假,empty判断变量是否为空为假,只可传一个变量,如果为空为假则返回真。

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

        GET,POST,COOKIE,SESSION,ajax

代码题:

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

‘/^(https?|ftps?):\/\/(www)\.([^\.\/]+)\.(com|cn|org)(\/[\w-\.\/\?\%\&\=]*)?/i’

2. 请写出常见的排序算法,并用PHP实现冒泡排序,将数组$a = array()按照从小到大的方式进行排序。
    常见的排序算法: 冒泡排序法、快速排序法、简单选择排序法、堆排序法、直接插入排序法、希尔排序法、合并排序法。
    冒泡排序法的基本思想是:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻两个关键字的次序与排序要求的规则不符时,就将这两个记录进行交换。这样,关键字较小的记录将逐渐从后面向前面移动,就象气泡在水中向上浮一样,所以该算法也称为气泡排序法。

// 冒泡排序法
function mysort($arr){
	for($i=0; $i<count($arr)-1;$i++){
		for($j=0; $j<count($arr)-1-$i;$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,66,33,55,73,23);
print_r(mysort($arr));

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

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

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

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

select class ,sum(IF(score>=60,1,0))jige,sum(if(score<60,1,0))bujige from student GROUP BY class;

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

$conn = mysql_connect('localhost','msuser','mspass');
mysql_select_db('test');
$sql = "select class ,sum(IF(score>=60,1,0))jige,sum(if(score<60,1,0))bujige from student GROUP BY class";
if($result = mysql_query($sql)){
    while($row = mysql_fetch_assoc($result)){
        print_r($row);
    }
}
mysql_close($conn);

 

面向对象中接口和抽象类的区别:

    (1)抽象类中可以有非抽象的方法而接口中只能有抽象的方法。

    (2)一个类可以继承多个接口,而一个类只能继承一个抽象类。

    (3)接口的使用方法通过implements关键字进行,抽象类则是通过继承extends关键字进行。

 

linux知识点:

1.如何实现每天0点钟重新启动服务器:

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

2.当前目录下有一个文件为showme.sh,如何修改文件,将其指定为使用/bi

n/bash运行,如何修改其权限为所有用户可读写,所有用户可执行:

vi showme.sh
#!/bin/bash




chmod 777 showme.sh

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

chown root showme.sh

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值