一、问题部分
1. 对象的蓝图是什么?
答案:____________
2. 以下代码执行后,数组$a->my_value 中储存的值是什么?(三选)
A.c
B.b
C.a
D.d
E.e
3. 如何让类中的某些方法无法在类的外部被访问?
A.把类声明为 private
B.把方法声明为 private
C.无法实现
D.编写合适的重载方法(overloading method)
4. 哪种 OOp 设计模式能让类在整个脚本里只实例化一次?
A.MVC 模式
B.抽象工厂模式(Abstract factory)
C.单件模式(Singleton)
D.代理模式(proxy)
E.状态模式(State)
5. 借助继承,我们可以创建其他类的派生类。那么在 pHp 中,子类最多可以继承几个父类?
A.1 个
B.2 个
C.取决于系统资源
D.3 个
E.想要几个有几个
6. 以下脚本近似的表示了一种在 pHp4 中无法实现的特性,请问这个特性叫什么?
A.多重继承
B.接口
C.抽象方法
D.private 方法
E.函数重载(function overloading)
7. 假设定义了一个 testclass 类,它的构造函数的函数名是什么?
15
A.__construct
B.initialize
C.testclass
D.__testclass
E.只有 pHp5 才支持构造函数
8. 一个类如何覆盖默认的序列化机制?
A.使用__shutdown 和__startup 方法
B.调用 register_shutdown_function()函数
C.使用__sleep()和__wakeup()方法
D.无法覆盖默认序列化机制
E.使用 ob_start()将类放入输出缓冲中
9. 以下哪些面向对象的概念无法在 pHp4 中实现?
抽象类
Final 类
public、private、protected(ppp)方法
接口
A.抽象类
B.ppp 方法
C.ppp 方法和接口
D.以上所有都不可用
E.以上所有都可用
10.如何在类的内部调用 mymethod 方法?
A.$self=>mymethod();
B.$this->mymethod();
C.$current->mymethod();
D.$this::mymethod()
E.以上都不对
11.以下脚本输出什么?
A.10
B.Null
C.Empty
D.什么都没有
E.一个错误
12.以下脚本输出什么?
A.10
B.5
C.2
D.Null
E.什么都没有
13.以下脚本输出什么?
A.5
B.10
C.什么都没有
D.构造函数将报错
E.510
14.考虑如下一段代码,执行时,$eight_tenths->to_string 方法返回的字符串是 8/10 而不是希望的 4/5,为什么?
class fraction {
var $numerator;
var $denominator;
function fraction($n, $d) {
$this->set_numerator($n);
$this->set_denominator($d);
}
function set_numerator($num) {
$this->numerator = (int)$num;
}
function set_denominator($num) {
$this->denominator = (int)$num;
}
function to_string() {
return “{$this->numerator} / {$this->denominator}”;
}
}
function gcd($a, $b) {
return ($b > 0) ? gcd($b, $a % $b) : $a;
}
function reduce_fraction($fraction) {
$gcd = gcd($fraction->numerator,
$fraction->denominator);
$fraction->numerator /= $gcd;
$fraction->denominator /= $gcd;
}
$eight_tenths = new fraction(8,10);
/* Reduce the fraction */
reduce_fraction($eight_tenths);
var_dump($eight_tenths->to_string());
?>
A.reduce_fraction 函数必须返回一个值
B.reduce_fraction 函数必须接受一个整型值
C.gcd 函数有问题
D.必须通过引用的方式传递$eight_tenths 对象
E.对象的实例不能传递给方法以外的其他结构。
15.以下代码是做什么的?
A.静态调用 mymethod 方法
B.生成 myclass 的实例并调用 mymethod 方法
C.产生一个语法错误
D.默认 myclass 类最后被创建出的实例并调用 mymethod()
E.调用名为 myclass::mymethod()的函数
16.pHp 中有静态类变量吗?
A.有
B.没有
17.以下脚本输出什么?
A.1
B.2
C.一个错误,因为没有定义 a::$myvar
D.一个警告,因为没有定义 a::$myvar
E.什么都没有
18.如何即时加载一个类?
A.使用__autoload 魔术函数
B.把它们定义为 forward 类
C.实现一个特殊的错误处理手段
D.不可能
E.用有条件限制的 include 来包含它们
19.__________提供了一个高性能的解决面向对象中重复出现的问题的方案?
答案:__________
20.以下脚本输出什么?
A.parent called
B.一个错误
C.一个警告
D.什么都没有