This week's book giveaway is in the OCAJP forum.
We're giving away four copies of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) and have Khalid A Mughal & Rolf W Rasmussen on-line!
See this thread for details.
Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

B&S 2.2.3: 380/400

 
Marc M Kossa
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
This is mostly a copy/paste of an article I wrote in my blog, I hope it's OK to post it here.

One year ago I became certified as a Java Programmer. This year, I took advantage of the free voucher program that Sun offers to its employees to pass the Java Developer certification.

The Java Programmer certification tests the understanding of the language, and of its core APIs. The Java Developer certification is the next level. It tests the ability to complete a full project. I was given an assignment and had to work on it at my own pace (there's a one year time limit). Then I submitted my work, which was reviewed by an assessor. At the time of submission, I also had to take a written test at a Prometric center, where detailed questions about the code were asked. This written test is mainly to ensure that I was the one who wrote the submitted code.

The assignment is not 100% precise on all aspects, and I had to make choices. This decision-making process is also part of the grading

The Database part of the project must implement a Java interface that is specified in the assignment. The assessor runs some automated tests against that API, and the tests must pass. As Sun do not publish these automated tests, I wrote a lot of unit tests to make sure all aspects of the API were covered and worked.

It is not specified in the assignment if logging should be used. From what I saw on the JavaRanch forum, some people remove all logging code just before submission, to be safe in case there's a problem in the logging code itself. I decided to keep it, because that's what we do in "real" applications: we don't remove logging before shipping. It is possible that it lowered the score I got on the General Considerations part (see below).

I generated some UML diagrams (with NetBeans) to clarify the relationships of the different interfaces and classes, and included it in the Javadoc. I felt this made the overall structure easier to understand.

It took exactly 4 weeks after submission and written exam, to get the results.

There are different possible assignments, the one I got is known as Bodgitt and Scraper 2.2.3.

It took me 3 months to complete the work, and I estimate the time spent on it to be around 100 hours. On these, about 50 hours were the actual code writing, testing, documenting and debugging, and 50 were on doing research: on the different design patterns that could be used, on trying different locking strategies to compare performance, on trying the different network approaches and comparing them, and trying different tools to generate UML from code,... This takes time as it forced me to look for solutions that were not familiar, and this is one of the great strength of the certification : to learn new ways of solving problems, not on relying on the same solutions over and over again.

In the written exam, they asked which solution is chosen on a particular problem, and why the other options were not adopted. This means different options must be evaluated. Answers like "I used RMI because it does the job, and it's the only technology I'm familiar with" is not the best answer.

Here's the detailed scoring report I received:

This report shows the total points that could have been awarded in each section, and the actual number of points you were awarded. This is provided to give you per-section feedback on your strengths. The maximum possible score is 400; the minimum to pass is 320.

* General Considerations (maximum = 100): 90
* Documentation (maximum = 70): 69
* O-O Design (maximum = 30): 30
* GUI (maximum = 40): 31
* Locking (maximum = 80): 80
* Data store (maximum = 40): 40
* Network server (maximum = 40): 40


I got the worst score on the GUI part. This is a confirmation that GUI design is better not done by Developers, but by real Designers :-) .

Being involved in commercial Java projects on my daily work at Sun, I can tell that what is asked by the Java Developer certification matches closely with what is expected from a working professional. For example, it would be risky to try this certification without using some kind of Source Code Management tool. It is also critical to develop correct Unit Tests in parallel with the code, as well as overall tests. Good code documentation is essential, as well as end-user documentation. The ability to deliver all that is tested by the certification.

Thanks to all of you on this forum for the help.

Marc
 
Roel De Nijs
Sheriff
Posts: 10374
132
AngularJS Chrome Eclipse IDE Hibernate Java jQuery MySQL Database Spring Tomcat Server
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Marc,

95%, nice score

if everything goes well i will be submitting my assignment this week and take friday my essay exam. I have 1 little question: how did you handle a possible InterruptedException (if you used wait/notify/notifyAll)? and did you mentioned something in your choices.txt

Kind regards,
Roel
 
Marc M Kossa
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Roel De Nijs wrote:if everything goes well i will be submitting my assignment this week and take friday my essay exam. I have 1 little question: how did you handle a possible InterruptedException (if you used wait/notify/notifyAll)? and did you mentioned something in your choices.txt
Hi Roel,
I did not use wait/notify, I used higher level primitives that do not return InterruptedException. We can go in more details, but I wouldn't want to confuse you at that stage (wait/notify works perfectly as well).
Marc
 
Marc M Kossa
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Roel De Nijs wrote:if everything goes well i will be submitting my assignment this week and take friday my essay exam. I have 1 little question: how did you handle a possible InterruptedException (if you used wait/notify/notifyAll)? and did you mentioned something in your choices.txt
Hi Roel,
I did not use wait/notify, I used higher level primitives that do not return InterruptedException. We can go in more details, but I wouldn't want to confuse you at that stage (wait/notify works perfectly as well).
Marc
 
K. Tsang
Bartender
Posts: 3496
14
Android Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
congrats. You didn't use wait/notify? wow i want to know what the "higher level primitives" are.
 
Roel De Nijs
Sheriff
Posts: 10374
132
AngularJS Chrome Eclipse IDE Hibernate Java jQuery MySQL Database Spring Tomcat Server
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Marc,

Just like K. Tsang curious about these "higher level primitives". But i'll stick with my approach of wait/notify, because it works perfectly, so i will not get confused

Kind regards,
Roel
 
Marc M Kossa
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I used (J2SE 6.0) java.util.concurrent.ConcurrentHashMap to hold the database, and java.util.concurrent.Semaphore to implement lock()/unlock().

Marc
 
satishkumar janakiraman
Ranch Hand
Posts: 334
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Congratulations


sat
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic