文档库 最新最全的文档下载
当前位置:文档库 › oop测试题(含答案)

oop测试题(含答案)

oop测试题(含答案)
oop测试题(含答案)

OOP阶段测试题

【时间:90分钟】

一.选择题(本答题中所有小题只有一个正确选项,每题2分,共60分)

1、以下是一个类的声明,其中有两个成员属性,对成员属性正确的

赋值方式是( B )

class Demo {

private $one;

public static $two;

function setOne($value) {

$this->one=$value;

}

}

$demo=new Demo();

A.$demo->one="abc";

B.Demo::$two="abc";

C.Demo::setOne("abc");

D.$demo->two="abc";

2、以下说法错误的是(B )

A. final关键字标识的类不能被继承

B. final关键字既可以标识成员方法,也可以标识成员属性

C. 静态方法可以通过类名直接调用

D. 将类中的成员属性定义为常量使用const

3、以下说法错误的是(B )

A. 在外部访问静态成员属性时使用类名::静态成员属性名

B. 在外部访问静态成员属性时使用$实例化对象->静态成员属性名

C. 在外部访问静态方法时使用$实例化对象 ->静态方法名

D. 在外部访问静态方法时使用类名::静态方法名

4、以下代码执行结果为()

$a=”hello”;

function print_A()

{

$a=”php mysql”;

global $a;

echo $a;

}

echo $a;

print_A();

?>

A hello

B php mysql

C hello hello

D hello php mysql

5、PHP中调用类文件中的this表示(A )

A本类实例化的对象变量B本页面C本方法D本变量

6、PDO通过执行SQL查询与数据库进行交互,可以分为多种不同的策略,使用哪一种方法取决于你要做什么操作。如果向数据库发送delete语句,下面哪种方式最合适也最安全(C )

A.使用PDO对象中的exec()方法

B.使用PDO对象中的query()方法

C.使用PDO对象中的prepare()和PDOStatement对象中的execute()两个方法结合

D.以上方式都可以

7、在PHP中哪个变量数组总是包含所有客户端发出的Cookies数据(B )

A.$_COOKIES B.$_COOKIE C.$_GETCOOKIE D.$_GETC OOKIES

8、阅读下面PHP程序代码,写出执行结果:

c lass test{ C

private $name;

public function __construst($name)

{

$this->name=$name;

echo “{$this->name}”被构造;

}

public function __destruct($name)

{

$this->name=$name;

echo “{$this->name}”被析构;

}

}

$t1 = new test(“X”);

$t2 = new test(“Y”);

A. X被构造Y被构造X被析构Y被析构

B. X被构造X被析构Y被构造Y被析构

C. X被构造Y被构造Y被析构X被析构

D. X被构造X被析构Y被析构Y被构造

9、下列那个选项是正确的引用文件的方法(A )A.require和include B.require和function C.define和include D.function和include

10、写出如下程序的输出结果

$str1 = null;

$str2 = false;

echo $str1= =$str2 ? '相等' : '不相等';

$str3 = '';

$str4 = 0;

echo $str3= =$str4 ? '相等' : '不相等';

$str5 = 0;

$str6 = '0';

echo $str5 = = = $str6 ? '相等' : '不相等';

?>

A 相等相等不相等

B 相等相等相等

C不相等相等不相等D不相等不相等不相等

11、以下哪个错误级别会使程序崩溃,阻止并退出程序?( C )A.E_WARNING B.E_NOTICE C.E_ERROR D.以上都可以

12、下面程序运行结果为( B )。

$nextWeek = time() + (7 * 24 * 60 * 60);

echo 'Now: '.date('Y-m-d')."
";

echo 'Next Week: '.date('Y-m-d', $nextWeek)."
";

?>

A.得到今天的日期(月-日)

B.得到今天的日期(年-月-日)与下周的日期(年-月-日)

C.得到现在的时间(小时-分-秒)

D.得到现在到下周的时间间隔

13、下面那种说法是错误的:D

A.子类中的私有方法可以调用父类中的受保护的属性

B.子类中的公有方法可以调用父类中受保护的属性

C.父类中私有的方法可以调用子类中公有的属性

D.父类中受保护的方法可以调用子类中私有的方法

14、下面四个魔术方法哪一个是需要两个参数 B

A.__get

B.__set

C.__isset

D.__unset

15、当PDO对象创建成功后,与数据库的连接已经建立,就可以使用PDO对象了,下面哪个不是PDO对象中的成员方法( B )

A errorInfo()

B bindParam()

C exec()

D prepare()

16、

16、的意思是(A )

A. 图像相对于周围的文本左对齐

B. 图像相对于周围的文本右对齐

C. 图像相对于周围的文本底部对齐

D. 图像相对于周围的文本顶部对齐

17、链接元素a有很多属性,其中用来指明链接所指向的URL的属性是(A )

A. href

B. herf

C. target

D. Link

18、以下代码运行的结果为(C )

$a[]=1;

$a[]=2;

$a[]=3;

$a[2]=4;

for($i=0;$i

if($i==2){

echo $a[$i];

}

}

?>

A.2

B.3

C.4

D.1

19、下面给出正则表达式,请选择能正确匹配的字串。正则:"/ax{4}b/". D

A. axxxxxb

B. axxxb

C. axaxaxaxb

D. axxxxb

20、下面哪条命令可把 ./dir1目录 (包括它的所有子目录 )内容复制到 ./dir2中?( D )

A. cp -i ./dir1/* ./dir2

B. cp -P ./dir1/* ./dir2

C. cp -d ./dir1/* ./dir2

D. cp -r ./dir1/* ./dir2

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

22、请看代码,数据库关闭指令将关闭哪个链接标识? B

$link1=mysql_connect(“localhost”,”root”,””);

$link2=mysql_connect(“localhost”,”root”,””);

mysql_close();

?>

A.$link1 B $link2 C 全部关闭 D 报错

23、下面语句执行的结果是:____B___

$i=0;

echo ++$i;

echo $i++;

$a=++$i;

echo $a++;

$i=$a;

echo $i;

A:1 2 3 4 B:1 1 3 4C:1 2 3 3 D:1 2 3 5 E:以上都不是

24、下面那些说法是错误的:__A__

A: 如果一个类的成员前面有访问修饰符private , 那么这些成员不能被继承,并且在类的外部不可见。但如果成员被指定为protect和public,则可以被继承,在类的外部也是可见的。

B:PHP5中,final 关键字可以禁止继承和重载。

C:PHP5中析构函数的名称是:__destruct().并且不能有任何参数。

D: 继承接口的类要实现接口中声明的方法,在php中,如果继承接口的类没有实现接口中的所有方法,则必须被声明为一个抽象类。

25、下面关于php与mysql数据库操作函数叙述错误的是:D

A. mysql_fetch_row() -- 从结果集中取得一行作为索引数组

B. mysql_fetch_assoc() -- 从结果集中取得一行作为关联数组

C. mysql_fetch_array() -- 从结果集中取得一行作为关联数组或索引数组或二者兼有

D. mysql_fetch_object() -- 从结果集中取得一行作为索引数组

26、如下表结构:C

mysql> select * from student;

A. SELECT * FROM student

B. SELECT * FROM student WHERE sage=22

C. SELECT * FROM student LIMIT 1,1

D. SELECT * FROM student WHERE sname LIKE '%q%'

27、下面的脚本运行以后,$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)

28、下面哪个表达式不能将两个字符串$s1和$s2串联成一个单独的

字符串?(A )

A.$s1+$s2 B.“{$s1}{$s2}” C.$s1.$s2

29、mysql_insert_id()函数的作用是: B

A. 查看下一次插入记录时的ID号

B. 查看刚刚插入过的自动增长ID值

C. 查看一共做过多少次insert操作

D. 查看一共有多少条记录

30、借助继承,我们可以创建其他类的派生类。那么在PHP中,子

类最多可以继承几个父类?(A )

A.1个B.2个C.取决于系统资源D.想要几个有几个

二.简答题(根据题目回答问题,共20分)

1.完成一个正则表达式,验证用户输入是否Email地址,要求后缀域

名最多只有三级。(4分)

答案:

$email_pattern = '/\w{1,}@(\w{1,}\.){1,2}\w{1,}/i';

2.PDO中开启、提交、回滚事务的三个方法是什么?(3分)

beginTransaction() commit() rollback()

3.如何在子类中调用被覆盖掉的父类方法?(3分)

答案:parent::方法名

4.三种访问控制修饰符在本类、子类和类外的访问权限分别是什么?

以表格的形式呈现。(10分)

三P控制 public(公有) protected(受保护) private(私有)

=========================================================== 在本类中 Y Y Y

在子类中 Y Y N

在类外边 Y N N

三.程序题(根据题目要求写程序,共20分)

1.使用PDO用别名参数绑定值的方式写一个删除Stu表中id为10

的学生信息,id通过$_GET方式传入。(5分)

2.写一个具有单态设计模式的类。(5分)

3.声明一个Person类,其中受保护成员属性有:name、sex、age。

在构造方法中传入默认值name=’赵四’,sex=’男’,age=29;在类的外部实例化一个对象,外部改变赵四的年龄为18,然后输出age 的属性值。在类的内部声明一个say()方法介绍自己的姓名、年龄、性别,在类外部调用该方法。(10分)

相关文档