Getting Up To Scratch
The first thing I would say is that I don't recommend this exam for anyone who doesn't have a year or two using PHP regularly. It doesn't have to be as a job, if you're coding for fun or as a sideline then that's fine, but in general it is pretty difficult to get the sheer breadth of knowledge needed for ZCE without actually knowing and using PHP. If you're a beginner or improver programmer, then consider working your skills up a bit before you go forward to the exam. If you're programming at work, then set up PHP at home and get used to installing and configuring it. If you're using a framework, try writing code without it and understanding the program flow (a great example is on Rasmus' blog). Build a project of your own and implement any elements of the syllabus that are unfamiliar, and look for some resources out there that will help you get to grips with it - remember this is PHP so there are some great materials freely available. For example if you want some content on the object-oriented concepts, read my series on ThinkVitamin which covers it all in small pieces (link goes to the last article, which has all the others in the series linked from it)
There is currently little supporting material around ZCE 5.3. You can take Zend's training course, either as a classroom course or as a virtual course. There isn't a full study guide as there was for the 5.0 exam but most of the material in that book still applies, with the exception of the PHP 4/5 Differences part. There are some new areas added for PHP 5.3, I recommend you read the syllabus for ZCE and download the free PDF study guide from the same page (right hand bar) - the study guide is currently (December 2010) a bit of a work in progress but I assume it will improve (yes, I'm an optimist!). Currently I can't find links to the old 5.0 practice tests, but it is still worth taking those since there is a lot of overlap in the materials and also the questioning styles are quite similar. The style of questions is one of the main reasons that, as a trainer, I always recommended the practice tests for the previous version of the certification.
The Night Before
There is a lot of content covered ZCE. My top tips for things to read the night before (or to tape to the door of your downstairs loo for a few weeks beforehand!) are:
- The operator precedence table because this is a great source of trick questions. If you've forgotten how to do binary, hexadecimal or octal maths, this is a good time to quickly recap (personally I love this stuff, maybe I will write a separate post on it!)
- Read all of the string and array functions. You need to know function names, what each one does, what arguments it takes, the argument order, and the return values. It isn't possible to hold all these in your head (not for me anyway!) but if you can stuff a few extra ones in the night before that can only be useful
- The superglobals is also worth a recap
The Exam Itself
First of all, don't panic! The exam is 90 minutes long and you will get 70 questions (approximately, apparently they are all weighted so you might get one more or fewer to make your exam worth the correct weight). This means that you have literally all the time in the world!! Even when walking through a practice test with a group and discussing every question, I have never run out of time on one of these tests.
Look out for trick questions! This is a test about accuracy and attention to detail (how useful trick questions are at identifying programming skill is a debate for another day) so bear that in mind and do not rush. Things to look out for are functions which are never called, variables called the same but in totally different scopes, functions which don't return values, parameters passed as references, and stuff that executes but doesn't have any output functions called.
The questions are electronically marked, which means that the answers are either multiple choice, or you will be presented with a text box to type in the output of the code, the name of the function, or whatever. Multiple choice questions are usually radio buttons; some questions will ask you to choose more than one answer and in this case it will tell you how many and you will be presented with checkboxes instead. You can skip over questions if you want to and come back to them later, and there is a function for you to add a flag to questions. There is no negative marking so even if you have no clue, it is better to guess than to not answer. You will be given something to write on and with in the exam room so give yourself all the help you can at writing all the steps down as you trace through a code sample.
When you get to the end you see a grid with all the question numbers shown and the ones that are flagged or not answered yet are indicated and you can easily skip around and revisit these in any order you want to (you can also go back and check any question numbers you want to, whether they are answered, flagged, or not). Once you indicate that you are happy with your answers, the test will end and you will immediately see a screen telling you whether you have passed! The test centre will also give you a printout before you leave, and Zend sends your certificate to you through the post.
Over To You
Are you studying for ZCE? Thinking of it? Or already certified? What are you doing to prepare, and what would you recommend for others to get up to scratch? I've linked a couple of resources here, but not many - what did I miss?