Delphi Certification - Review by Sergey Nosov
About the Delphi 5.0 Enterprise Foundations Exam.
This information is directly based on my experience with taking the Delphi 5.0 Enterprise Foundations Exam. I thought it would be a good idea to put this message together, so guys and gals who are taking the exam for the first time do not make same mistakes I made.
Any information in this document is presented as is without any warrantees of any kind.
I tried my best to insure that information is accurate in relation to the specific exam that was administered via Sylvan's on-line test systems on July 12th 2000 at the conclusion of the BorCon 2000. Please let me know if you find any inaccuracies in this text. Use any of the information provided on your own risk.
The exam consists of 60 questions that must be completed within 60 minutes.
There are two kinds of questions: Questions with radio buttons (where you select a correct answer from 2 or more choices), and questions with check boxes (where you need to select all correct answers that apply).
Questions appear on the screen one at a time, when you answer a question you click Next button to send your answer to the server, and proceed to the next question. There is a checkbox, located rightish, toppish, that you can check to mark question for later review. There is also a "Summary" button that takes you to the list of questions (one string per question, several words from the beginning of the question appear to help you identify which question is which) in a table format with symbols showing which questions you have answered and which ones you marked for review.
If there is no other information you will remember after reading this message, remember this:
DON'T WASTE TIME! You've got only one minute per question, and if you answer more than 12 questions incorrectly, or do not have enough time to answer at least 48 questions correctly - you are toasted.
Unfortunately, the exam is run via Internet. Internet is known for being jiffy; it is also know for being slow and sluggish, sometimes. As a computer programmer you are probably very good in identifying bottlenecks in applications. In every Net-enabled application, the Net is a bottleneck and a successful strategy for running a Net application is to minimize the amount of data transferred back and fourth. Specifically in the test, it would be convenient to navigate between the questions using the Summary table. However every time, you click the "Summary" button, you have to sit there and wait for the information, 95% of which is useless for you, to be regenerated on the server and downloaded to the client machine you are taking the test on.
You'll be able to save yourself some valuable time if you tune your question answering strategy into the linked list model. Start with question one and answer them all orderly, using the "Next Question" button to navigate. Do not jump to the Summary screen right away; you do not have sufficient time to figure out which questions to answer first and which ones later. With this strategy in an hour you'll be able to identify eight questions maximum, but you'll eat a good chunk of time from other required fourty, potentially more difficult questions.
If you have a choice figuring out a date for your exam, try to select a session that is least filled.
When you have less people taking the exam at the same time with you, a better percentage of the Internet and testing server resources occupied by you; that directly transfers to faster question loading time, and faster reaction of the system, to you pushing buttons... Believe me, it is externally frustrating, to click the next question button and sit there staring at an HourGlass cursor, while precious seconds are ticking away. I personally clocked one of this waits during my exam - 45 seconds (exactly)!
If you have any questions, ask before you hit the "First Question" button to start the exam. If you got a technical problem with the system, try to make an assistant to fix the problem for you, and get back to the questions. Do not chat with the assistant, do not offer your suggestions; just make him/her fix what's broken and get back to the questions ASAP.
After you completed the exam, you have an option to leave your comments. If you think that one or more of the questions that you answered were ambiguous or unfair; you can let authors know about it. Supposedly, if the author of the question agrees with your comment and answering that question would make you pass the test; you would get a voucher for a chance to retake the test for free. Here is the catch; you can't just write, "I think that question number 12 was..." You actually have to write down the question itself, since there is no way for a person who'd read your comments to identify the question by number. The rules of the exam prohibit you to run any other application in addition to one instance of browser, where you actually answer the questions. Therefore you can't just copy and paste questions from the browser window to an editor, you have to write the question down manually. Now, do you want to spend your exam time, copying a question, from the screen to a piece of paper just to let somebody who created that question know that you don't think it was a good question to ask?
You might have heard that there are no questions based on memorization in this exam. Well, there are some questions that require you to use your memory. There is no logical way to find a correct answer for some of the questions, when you do not remember a specific aspect of the product in less than obvious detail level. No, there are no questions like, "How many public methods are declared in the TRegistry class?" However, I am sure you'll encounter a question; you'd be able to answer in a minute if you were able to look-up help file or the source code directory. For example, do you have at the top of your head information about how the DWORD declared in Delphi? If you don't, I recommend you to look up the windows.pas, in case you get this question. I don't do OLE, so the answer was not obvious to me.
Also watch out for platform dependent questions. You might have heard that it is a bad carma to think about any platform except "The Net". I don't know, I swallowed the Blue pill by mistake... So I got punished with the question on how to make an instance of TQuery with opened data set, to get the changes (latest data) from the server. I had to choose a right answer from four: Call TQuery.Refresh, TQuery.Update, Close and reopen query, and there was the fourth choice that's was completely wrong, so I do not remember what it was. Guess what, I had a specific problem with one of the older versions of SQL Anywhere where the only way to get the updates from the server once the query was opened, was to close the query and open again. I think there was some kind of incompatibility with transaction isolation implementations, so Refresh just wouldn't work.
Before taking the exam, I showed up in the computer lab to just put my hands on Delphi to have it fresh in my mind. I think that I did the right thing. This little practice made me feel much more confident at the time of the Exam. The way a human brain works is that it tends to delete the useless information while we are asleep. Zipping through Delphi environment on the same day with the exam leaves traces of the information you don't need in your everyday journey with the product, but will save you one question or another.
It is also helpful to know the Delphi internal implementations. For example, do you know what is the difference between hard casting and casting using AS operator?
You absolutely must know the fundamentals. If you think that you don't need to remember the order in which operators are executed because you always can just use brackets, you'll get fried. You must understand the definition of scope. For example I got a question that consisted of a piece of code that would perform some simple operations on variables, and I had to select the right final values of the variables after the code executes. This was easy for me, but I keep seeing that a lot of programmers make mistakes in this area.
Let's see what other questions I can remember two days after the test:
In Object inspector you can modify one component at a time, true or false? Select all the right ways to make a control active when the form shows up... What would happen if Label's control ParentFont property set to true... What combination of keys can be used to move a control on a form in design mode? What class introduces Controls property? What is the most accurate definition of Tpersistent? What .dfm files used for? How to include unit in a package? Which keywords can be used in packages? What do .dpr files contain? How to make a property to have a default value? Question about TDatabase ancestors, (Correct answer TCustomConnection). Well, that gives you an idea...