php面试题基础(一)

3 篇文章 0 订阅
一、选择题
01.输出为Mozilla/4.0(compatible;MSIE5.01;WindowNT5.0)时,可能的输出语句是:  B
A.$_SERVER['HTTP_USER_AGENT_TYPE'];
B.$_SERVER['HTTP_USER_AGENT'];
C.$_SERVER['USER_AGENT'];
D.$_SERVER['AGENT'];
 
02.下面功能PHP无法实现的是: D
A.服务器端脚本运行
B.命令行脚本运行
C.客户端图形界面(GUI)程序
D.浏览器端执行DOM操作
 
03.下面说法不正确的是: C
A.PHP有四种标量类型:布尔型(boolean),整型(integer),浮点型(float),字符串(string)
B.浮点型(float)与双精度型(double)是同一种类型
C.复合类型包括:数组(array),对象(object),资源(resource)
D.伪类型:混合型(mixed),数字型(number),回调(callback)
 
04.执行下面的代码后,
<?php
  echo function_exists('print');
?>
得到的输出是: A
A.空    
B.true
C.false
D.FALSE
 
05.下面不是PHP语法的组成部分的函数是: C
A.array
B.eval
C.each  //因为each是一个函数,
D.list
 
06.执行下面的代码的结果是什么? A
<?php
$bool=TRUE;
echo gettype($bool);
echo is_string($bool);  //布尔值false(没有输出)
?>
A.boolean
B.boolean0
C.booleanFALSE
D.booleanfalse
 
07.写出下面代码执行的结果:
<?php
$a=12;
$b=012;//八进制
$c=0x12;  //十六进制

echo $a,"\n",$b,"\n",$c;
?>
答案是:12  10  18
 
08.下面代码的执行结果是什么? C
<?php
echo 1+2+"3+4+5";
?>
A.0
B.3
C.6
D."33+4+5";
 
09.下面代码加入下面那个函数后返回TRUE:  B
return ?=='A';
A.ord(65)
B.chr(65) //返回相对应于 ascii 所指定的单个字符
C.65+''
D.''+65
 
10.下面代码的输出正确的是: C
<?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.下面代码的输出结果: D
<?php
$a[bar]='hello'; 

//数组下标为bar的常量值,若bar不是常量,则为bar字串
echo $a[bar];
echo $a['bar'];

?>
A.hello B.空空 C.报错 D.hello  hello
 
12.写出下面代码的结果: C
<?php
echo 1>>0;  //1
echo 2>>1;  //1
echo 3<<2;  //12
?>
A.012  B.106  C.1112  D.123
 
13.下面对于echo,print的描述正确的是: C
A.echo,print都可以打印多个参数
B.print可以打印多个参数,echo不可以
C.echo可以打印多个参数,print不可以
D.echo,print都不可以打印多个参数
 
14.对于正面的代码 B
<?php
$fruits=array('strawberry'=>'red','banana'=>'yellow');
?>
不能够正确得到结果'yellow'的代码是:
A.echo"Abananais{$fruits['banana']}";
B.echo"Abananais$fruits['banana']";
C.echo"Abananais{$fruits[banana]}";
D.echo"Abananais$fruits[banana]";
 
15.下面代码执行完成后的结果是什么? 
<?php
function change(){
static $i=0; //多次调用此函数时,此句的初始化只执行一次,而且共用
$i++;
return $i;
}

print change();
print change();

?>
答案是:1  2
 
16:以下代码的执行后是,$result值为: B
<?php
$srcArray=array('a','b','c','d');
$randValue=array_rand($srcArray);  //返回一个随机单元的键名
$result=is_string($randValue);

?>
A、a
B、false
C、true
D、b
E、c

17:<?php echo count(‘123’)?>输出的是? D
A、3
B、false
C、null
D、1
E、0

18:以下代码的执行后是,$result值为: B
<?php

$a='01';
$result=1;

if(in_array($a,array('1'))){
    $result=2;

}elseif($a=='1'){
    $result=3;

}elseif($a=='01'){

    $result=4;
}else{

$result=5;
}

?>
A、1
B、2
C、3
D、4
E、5
 
 
19:php函数名是否区分大小写? A
A、不区分
B、区分

20:以下代码的执行后是,$result值为: C
<?php
$x=””; 
$result=is_null($x);   // is_null   isset  empty

?>
A、null
B、true
C、false
D、1

21:哪种OOP设置模式能让类在整个脚本里只实例化一次? E
A、MVC(设计模式)
B、代理模式
C、状态模式
D、抽象工厂模式
E、单件模式(单例、单态)
 
class A{

    private static $a=null;

    //定义其他属性

    private function __construct(){

    }


    public static function makeA(){

    if(self::$a==null){
        self::$a = new A();
    }

    return self::$a;

    }

    //定义其他自己的方法

}

22:借助继承,我们可以创建其他类的派生类。那么在PHP中,子类最多可以继承几个父类? A
A、1个
B、2个
C、取决于系统资源
D、3个
E、想要几个有几个
 
23:以下哪种错误类型无法被自定义的错误处理器捕捉到? C
A、E_WARNING
B、E_USER_ERROR
C、E_PARSE
D、E_NOTICE
 
24:执行以下代码,输出结果是 C
<?php

abstract class a{

    function __construct(){
        echo "a";
    }

}

$a=new a();

?>
A、a
B、一个错误警告
C、一个致命性的报错    抽象类不可实例化
 
25:执行以下代码,输入结果是  A
<?php

class a{

    function__construct(){
        echo "EchoClassaSomething";
    }

}

class b extends  a{

    function __construct(){

        parent:: __construct();

        echo “EchoClassbSomething”;
    }

}

$a=new b();

?>
A、echoclassasomethingechoclassbsomething
B、echoclassbsomethingechoclassasomething
C、echoclassassomething
D、echoclassbsomething
 
26.下面哪个选项没有将john添加到users数组中? C
(A) $users[] = 'john';
(B) array_push($users, 'john');
(C) $users ||= 'john';
(D) array_unshift($users, 'john');  //在数组开头插入一个或多个单元
 
27.在PHP中,'+'操作符的功能不包括  A
A.字符串连接
B.数组数据合并
C.变量数据相加
 
28.下面哪个表达式不能将两个字符串$s1和$s2串联成一个单独的字符串? A
A.$s1+$s2
B.“{$s1}{$s2}”
C.$s1.$s2
D. implode(‘’,array($s1,$s2))
 
29.下面的脚本运行以后,$array数组所包含的值是什么? B
$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)
 
30、array_shift()函数的作用是?  B
A 在数组中新增一个元素
B 移除数组中的一个元素
C 交换一个数组的key和value
D 清除一个数组
 

二、填空题
1、执行程序段<?php echo 8%(-2) ?>将输出__0__。

2、以Apache模块的方式安装PHP,在文件http.conf中首先要用语句 LoadModule 动态装载PHP模块,然后再用语句 AddType application/x-httpd-php .php__使得Apache把所有扩展名为php的文件都作为PHP脚本处理。

3、类的属性可以序列化后保存到session中,从而以后可以恢复整个类,这要用到的函数是 unserialize_。

4、_____函数能返回脚本里的任意行中调用的函数的名称。该函数同时还经常被用在调试中,用来判断错误是如何发生的。__FUNCTION__
 
5、以下代码输出是:abcde ok
<?php
$str="cd";
$$str="abcde";   //$cd=’abcde’;
$$str.="ok";
echo $cd;

?>


三、编程题
1、请指出以下代码的错误之处(圈出来并加以改正)
function baz($y,$a) {

    $x = new Array();   //$x = array();

    $x[sales] = 60;    //$x['sales'] = 60;

    $x[profit] = 20;  //$x['profit'] = 20;

    foreach($x as $key => $value) {

        echo $key + " " + $value + "<BR>";   //echo $key." ".$value."<BR>";
    }

}

2、写出以下程序的输出结果 
$b=201;
$c=40;
$a=$b>$c?4:5;
echo $a;   
答案:4
 
3、下面的程序会输出什么 
$num = 10;

function multiply(){
    $num = $num * 10;
}

multiply();
echo $num; 
答案:10
 
4、请写出下列PHP代码的执行结果
<?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) ."\n";  4   此时$var1:7   $my_var:8
echo $my_var ."\n";   8
echo $var1 ."\n";     7
echo $var2 ."\n";     10
$bar = 'foo';
$my_var = 10;
echo $bar($my_var) ."\n";  4
答案是:4  8  7  10  4
 
5、写出下列代码的输出结果:
function myfunc($argument){
    echo $argument + 10;
}

$variable = 10;
echo "myfunc($variable)=".myfunc($variable);
答案是:20myfunc(10)=
 
6、写出如下程序的输出结果(5分)
$test='aaaaaa';
$abc=&$test;
unset($test); //只删除test变量名,abc还在
echo $abc;  
 
答案是:aaaaaa
 
7、写出程序运行的结果
<?php

$a=0;
$b=0;

if($a=3||$b=3){  //此时 $a: bool(true),   $b: int(0)
    $a++;     //true加加无效,还是true
    $b++;
}

echo $a.",".$b;    //1,1   类型:bool(true), int(1)



$a=0;
$b=0;

if($a=3|$b=3){    //此时 $a: int(3),   $b: int(3)
    $a++;
    $b++;

}

echo $a.",".$b;  //4, 4

结果:
1.1,  1,
2.4,  4
 
8、以下程序
<?php

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

foreach($data as $key=>$val) {

    $val = &$data[$key]; //将data的key位置的别名设为val

                        //变量val指向了数组key下标位置
}

?>
问题1:程序执行时,每一次循环结束后变量$data的值是什么?请解释。
答案是:a b c;  b,b,c  b,c,c

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

四、问答题
1、实现中文字串截取无乱码的方法。(3分)  mb_substr( )
2、输出用户的IP地址,并且判断用户的IP地址是否在192. 168.1.100 --- 192.168.1.150之间(5分)。
<?php

$start = ip2long("192.168.1.100"); //将字串式的ip地址转成整形
$end = ip2long("192.168.1.150");

$ip = "192.168.2.120";
$m = ip2long($ip);

if($m>=$start && $m<=$end){

    echo "ok";
}else{

    echo "no";
}
 
3、不断在文件hello.txt头部写入一行“Hello World”字符串,要求代码完整
<?php

$f = fopen("hello.txt","r");
$str="";

while($s=fread($f,1024)){
   $str.=$s;
}

fclose($f);
echo $str;
 
4、请列出3种PHP数组循环操作的语法,并注明每种循环的优缺点 
使用:for 缺点只适合循环索引式的且下标从0开始的连续数组
    foreach 循环数组,优点:遍历所有数组,不管只限是否遍历过
   while/list/each/reset/  遍历,缺点:复杂一些。
 
5、求两个日期的差数,例如2020-2-5~2020-3-6的日期差数
<?php

$m1 = strtotime("2007-2-5");  //将指定日期转成时间戳
$m2 = strtotime("2007-3-6");

echo ($m2-$m1)/(3600*24)."天";
 
6、请将2维数组按照name的长度进行重新排序,按照顺序将id赋值(从1开始)。
<?php
$Tarray = array(

array(‘id’ => 0, ‘name’ => ‘123’),
array(‘id’ => 0, ‘name’ => ‘1234’),
array(‘id’ => 0, ‘name’ => ‘1235’),
array(‘id’ => 0, ‘name’ => ‘12356’),
array(‘id’ => 0, ‘name’ => ‘123abc’));

)

代码实现:
<?php
usort($tarray,"fun"); //自定义

function fun($a,$b){
    return strlen($b['name'])-strlen($a['name']);
}

//重排id的值
foreach($tarray as $k=>$v){
    $tarray[$k]['id']=$k+1;
}

//或

//foreach($tarray as $k=>&$v){
    //$v['id']=$k+1;
//}

7、在PHP中error_reporting这个函数有什么作用?  
设置错误输出等级

8、简述如何得到当前执行脚本路径,包括所得到参数。
echo dirname(__FILE__);
从$_REQUEST中获取参数
 
9、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? 
mysql_fetch_row()以索引数组方式解析结果集
mysql_fetch_array()以索引加关联两种数组方式解析结果集
 
10、用PHP写出显示客户端IP与服务器IP的代码
$ _SERVER["SERVER_ADDR"]    
$ _SERVER["REMOTE_ADDR"]
 
11、在开发项目中,需要上传超过8M的文件,请说明在php.ini需要修改的配置项。
upload_max_filesize = 2M //将这个改为允许的大小8M
post_max_size = 8M  //注意要将此值设为大于(upload_max_filesize)8M
 
12、Php是否有安全问题,如果有,请列举说明。
SQL注入、权限、系统命令、挂马等
参数注入
fwrite写模式
ajax的操作(尽量只做读操作)
 
13、从PHP4.2.0开始 PHP默认配置将register_globals配置设定为off,请指出这个设定的作用和对PHP相关程序的影响。
影响: 不用$_GET[“name”],$_POST[“name”]  $_SESSION[]页可以直接获取到值$name
 
14、PHP如何执行shell的两种方式
函数:shell_exec()或  exec()  ``
 
15、写出一个函数,参数为年份和月份,输出结果为指定月的天数
使用switch case 语句判断输出
<?php
function fun($y,$m){

    $day=0;

    switch($m){

        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
        $day=31;
        break;

        case 4:
        case 6:
        case 9:
        case 11:
        $day=30;
        break;

        case 2:
        if($y%4==0 && ($y%100!=0 || $y%400==0)){
            $day=29;

        }else{

            $day=28;
        }

        break;
    }

    return $day; 

}

echo date("t",strtotime("2013-04-01"));
 
16、用PHP写一段代码,实现不使用第3个变量,交换$a,$b的值,$a,$b的初始值自己定。
<?php
$a = 50;
$b = 200;

$a = $b-$a;
$b = $b-$a;
$a = $a+$b;

17 用代码写出冒泡排序法:
<?php

$a = array(100,80,600,15,34,200,5);

print_r($a);
echo "<br/><br/>";


//排序的循环次数
for($i=0;$i<count($a)-1;$i++){

    //执行排序,负责一次找出一个
    for($j=0;$j<count($a)-$i-1;$j++){

        //确定顺序(大于:从小到大)
        if($a[$j]>$a[$j+1]){

        //执行交换位置
        $tmp = $a[$j];
        $a[$j]=$a[$j+1];
        $a[$j+1]=$tmp;

        }
    }

}

print_r($a);

echo "<br/><br/>";

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值