一、选择题
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);