PHP ZCE mock test, interview preparation, daily lessons under chalk talk

Friday, January 20, 2012

PHP instanceOf and Type Hinting usage

instanceOf: It is one of the type operator present in php.


- It is used to determine whether a PHP variable is an instantiated object of a particular class.


- It can also be used to determine whether a variable is inheriting properly from another class. 


- Also used to determine whether a variable is an instantiated object of a class that implements an interface.




Example:


<?php
class ParentClass
{
}

class MyClass extends ParentClass
{
}

$a = new MyClass;

var_dump($a instanceof MyClass);
var_dump($a instanceof ParentClass);
?>

Output:

bool(true)
bool(true)




Type Hinting: It is a feature that is added in PHP5


- It allows functions to force parameters to be objects by specifying the name of the class in the function prototype.


- It allows to use NULL as default parameter value.


Example:


    //First parameter must be an object of type OtherClass
     public function test(OtherClass $otherclass)

    //First parameter must be an array    public function test_array(array $input_array) 


Question 1:



When checking to see if two variables contain the same instance of an object, which of the following comparisons should be used?
 1)    if($obj1->equals($obj2) && ($obj1 instanceof $obj2))
 2)    if($obj1->equals($obj2))
 3)    if($obj1 === $obj2)
 4)    if($obj1 instanceof $obj2)
 5)    if($obj1 == $obj2)




Question 2:



In PHP 5 you can use the ______ operator to ensure that an object is of a particular type. You can also use _______ in the function declaration.
1)     instanceof, is_a
2)     instanceof, type-hinting
3)     type, instanceof
4)     ===, type-hinting
5)     ===, is_a


Solution 1:
3)     if($obj1 === $obj2)


Solution 2:
2)     instanceof, type-hinting

Zend Certified Engineer PHP5.3 ZCE




I passed the ZCE exam on 24th dec, 2011. I would like to share my exam experience with you.
I went for exam at NIIT Ltd , Cannought Place, New Delhi. I already scheduled my exam via Pearson Vue.
At Exam Center, When I Informed that I have already scheduled my exam at 11AM, they were surprised!!! It seemed that usually people directly go to exam center without even scheduling.

For exam, I wasn't allowed to keep any blank paper or pen. They gave a writing board and a marking pen.
There were total 70 questions and time allotted was 90 minutes. Questions were of single choice, multiple-choice and open text questions. For multiple-choice questions , it was clearly mentioned on how many to choose. On choosing more answers it gave an alert. However, if you choose less, loss is all yours.

During the exam, Computer got switched off twice. As expected on restarting time counting started from where it was left.

I was done with the paper in about 50 minutes. Rest of the time I reviewed my answers. As per my review, out of 70 questions 48 were for sure correctly answered. Answer for 1 question was a blind guess. And for the rest of the question, I gave logical answers. In all I guess about 60 questions got correct. I was lucky enough to get the exam passed.

I have 2 years of experience of developing with PHP, and I believe that practical exposure is must in order to clear the exam. Exam wasn't about the theory part at all.

You must be clear about below types of questions before going to attemp

1)
function stringAppend($str)
{
$str = $str."append";
}
function stringPrepend($str)
{
$str = "prepend".$str;
}

$aString = "PHP";
echo stringPrepend(stringAppend($aString));

2)
function updateValue(&$number)
{
$number = $number +1;
}
$val = 9;
echo updateValue(&$val);


3)
$foo = 'charanjeet/working/with/php';
echo strrpos($foo, '/', -5);


4)
class MyException extends Exception { }
class Test {
        public function testing()
        {
                try
                {
                        try
                        {
                                throw new MyException('foo!');
                        }
                        catch (Exception $e)
                        {
                                echo 'cought1';
                                /* rethrow it */
                                throw $e;
                        }
                        catch (MyException $e)
                        {
                                echo 'cought2';
                                /* rethrow it */
                                throw $e;
                        }
                }
                catch (MyException $e)
                {
                        echo 'cought3';
                        echo $e->getMessage();
                }
        }
}

$foo = new Test;
$foo->testing();


5)
Which of the following are valid PHP variables?

1. @$foo
2. &$variable
3. ${0x0}
4. $variable
5. $0x0


6)What is the output of the following PHP code?
<?php
define('FOO', 10);
$array = array(10 => FOO,          
    "FOO" => 20);
print $array[$array[FOO]] * $array["FOO"];

7)

What is the output of the following PHP script?

<?php
$a = 1;
$b = 2.5;
$c = 0xFF;

$d = $b + $c;
$e = $d * $b;
$f = ($d + $e) % $a;

print ($f + $e);

?>
1. 643.75
2. 432
3. 643
4. 257
5. 432.75
Click here for answer

8)

What is the output of the following code?

<?php
$string = "111221";
for($i = 0; $i < strlen($string); $i++) {
 $current = $string[$i];
 $count = 1;
 while(isset($string[$i + $count]) && ($string[$i + $count] == $current)) $count++;
 $newstring .= "$count{$current}";
 $i += $count-1;
}

print $newstring;
?>
1. 312211
2. 3312212
3. 11221221
4. 221131
5. 3211122



9)

What is the best way to ensure that a user-defined function is always passed an object as its single parameter?


1. function myfunciton($a = stdClass)
2. Use is_object() within the function
3. There is no way to ensure the parameter will be an object
4. function myfunction(Object $a)


10)

function stringAppend(&$str)

{

return $str = $str."append";

}

function stringPrepend(&$str)

{

$str = "prepend".$str;

}


$aString = "PHP";

echo stringPrepend(stringAppend($aString));

Next parts would come soon!!!

Thursday, January 19, 2012

Output of the following code?

What will be the output of the following code?

<?php
function changeme()
{
static $var=5;
return $var++;
}
echo changeme();
echo changeme();
echo changeme();
?>


a) 678
b) 567
c) 555
d) None of these


Solution: any guesses?
its b) 567

Thursday, January 12, 2012

ZCE Zend Certified Engineer String return problem


View the Complete Blog on ZCE

function stringAppend(&$str)

{

        return $str = $str."append";

}

function stringPrepend(&$str)

{

         $str = "prepend".$str;

}


$aString = "PHP";

echo stringPrepend(stringAppend($aString));

Answer: NULL
becuase stringPrepend dint return anything