It's not a secret anymore!
The moose likes Certification Results and the fly likes Passed finally with 86%!!! Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Certification Results
Bookmark "Passed finally with 86%!!!" Watch "Passed finally with 86%!!!" New topic

Passed finally with 86%!!!

Nicholas Cheung
Ranch Hand

Joined: Nov 07, 2003
Posts: 4982
Hi all,
I have received the result 5 mins ago, after waiting for approximately 1 month.
The score is not very great, but I am very happy since I dont really have enough time to finish it.
Here, I would like to thank all of you here, especially: Max, Andrew, Mark, Vlad and Phil, they helped me a lot with my assignment, and solving the problems I encountered. In addition, thanks Max for his cool book, SCJD with J2SE 1.4, the book covers lots of areas that we might have troubles, and it has provided several approaches.
Below is my score:

Grade: P
Score: 346
General Considerations (maximum = 100): 99
Documentation (maximum = 70): 70
O-O Design (maximum = 30): 30
GUI (maximum = 40): 24
Locking (maximum = 80): 44
Data store (maximum = 40): 40
Network server (maximum = 40): 40

The GUI and Locking part, like some of the others, do not score well. Since I have not put much effort in my GUI part, I understand why I lost points, however, I really wonder which part makes me score so low in the locking part. But anyway, I am appreciated with that.
I will take SCWCD 1.4 Beta tonite. Hope I can pass it along as well.
Best wishes to those who are in the way of SCJD.
[ January 25, 2004: Message edited by: Nicholas Cheung ]

SCJP 1.2, OCP 9i DBA, SCWCD 1.3, SCJP 1.4 (SAI), SCJD 1.4, SCWCD 1.4 (Beta), ICED (IBM 287, IBM 484, IBM 486), SCMAD 1.0 (Beta), SCBCD 1.3, ICSD (IBM 288), ICDBA (IBM 700, IBM 701), SCDJWS, ICSD (IBM 348), OCP 10g DBA (Beta), SCJP 5.0 (Beta), SCJA 1.0 (Beta), MCP(70-270), SCBCD 5.0 (Beta), SCJP 6.0, SCEA for JEE5 (in progress)
George Marinkovich
Ranch Hand

Joined: Apr 15, 2003
Posts: 619
Hi Nicholas,
Congratulations on passing the exam.
You got 100% of the maximum score in all categories except locking and GUI. Another person, Peter Ye, just posted his score too and I notice that you both got 44 points out of 80 possible in the locking category. I've noticed others getting about 44 points in this category as well. It seems 44 points is almost a threashold of some sort. As I think most people have probably tested their locking schemes in a multi-threaded environment and would not have submitted their applications if they hadn't successfully passed this testing, I'm left to wonder what aspect of locking (at least in terms of Sun's grading criteria) was missing. Is there anything you can think of that has been discussed on this forum concerning locking that you didn't implement in your project?
Congratulations again and best wishes in your future endeavors.
- George

Regards, George
Philippe Maquet

Joined: Jun 02, 2003
Posts: 1872
Congratulations, Nicholas !
Peter, Nicholas and Damu : all passed today with a 44/80 in locking. Yes George, it would be interesting to find out why they lost points in that area.
Nicholas Cheung
Ranch Hand

Joined: Nov 07, 2003
Posts: 4982
Hi Phil,
Sorry for the late reply, as I have just taken SCWCD beta yesterday, and now I need to start my study on SCMAD.
Regarding SCJD, let me share some of my experiences:
1. Keep in mind all the time, Simple is the best!
Some people might think that we need to have a connection pool for the RMI connections, however, I just implement the RMI (network part) as what Max suggested.
In addition, some people even think of implementing the 24-hour business requirement, however, I do NOT implement this as well. Instead, I have documented this issue in my design doc, stating that the 24-hour requirement is a business decision, and I assume that there exists another program (or application) such that it takes care about updating the database file.
(Maybe 1 mark is lost in General Consideration is due to it, however, implementing it does not mean you wont lose marks )
2. Singleton in Data access
As suggested by Ken, I make use of the Singleton pattern between the Database Server and the Data class. There can be more than 1 Database Server instance, while there can only be ONE Data class, which is responsible for the physical access to the database file.
I have NOT implement data caching, because performance is not a concern. In order to play safe, for each request, 1 I/O will be generated to read or write to the database file.
3. Specification of Local and Remote services
In order to avoid Remote exception being notified to clients (need to catch Remote Exception) in standalone mode, I did the following:
I define an interface Services, which contains ALL business methods that are allow to be called by clients. It throws all required exceptions, as well as the Remote Exception.
I then define 2 interfaces LocalServices and RemoteServices. They are exactly the same as Services (in the aspect of business methods) except ALL methods in RemoteServices throw a RemoteException, while that in LocalServices DONT.
Thus, for standalone mode, the object (stub) obtained by the client will be casted to LocalServices, which does not throw any RemoteException.
4. For the GUI part, I wonder why I lose so much points, but anyway, here is the general design. I follow Max's suggestion, building a JTable, with a Menu bar (suggested by Kathy), 2 pull down menus for Hotel name and Location (suggested by Kathy), a Search button, a Book button, and an Exit button. I think the GUI should cover all the general aspect, and thus, I really wonder where I lose the 16 points!
5. For the Locking part, I do NOT specify the functions provided in the SUN interface as synchronized in order to avoid the chances for auto fail. Instead, I perform synchronization for each function. I used Vector as the locker. Maybe this makes me lost points, however, some people who use HashMap results the same as me. I do check whether the record is locked before each access, and I do notify all threads after the lock operation(lock and unlock) completes. I really wonder why so many people score 44/80 in this part, I have sent an email to SUN about this issue.
6. For the network part, I use RMI instead of Socket, as it is easy to code, test and implement. It abstracts all network stuffs for the developers so that it is easy to implement.
7. Finally, for the documentation, below is the outline of my doc:

[1] Overview
[2] General Considerations and Assumptions
[3] Server Design
[4] Client Design
[5] Record Locking Mechanism
[6] Record Searching Mechanism
[7] Networking Approach
[8] Major Design Patterns Applied
[9] Data Model used for displaying data in JTable
[10] Exception Handling and logging
[11] Thread Safety
[12] Flexibility for further extension
[13] Package Structure for submission

8. For the essay part, there are totally 4 Qs. Lucky, in my exam, the 4 Qs exactly appear as 4 sections of my documentation. In fact, you are expecting that what Qs will be asked. Hoping that I am not violating SUN's disclosture policy.
Best luck to those who are in the way of SCJD.
Terry Martinson
Ranch Hand

Joined: Oct 18, 2003
Posts: 293
You mention the following:

5. For the Locking part, I do NOT specify the functions provided in the SUN interface as synchronized in order to avoid the chances for auto fail.

I'm trying to understand why that might cause auto-fail. I do synchronize my data manipulation methods to handle my physical file locking. Anyone have ideas on what auto-fail problems this could cause?

Nicholas Cheung
Ranch Hand

Joined: Nov 07, 2003
Posts: 4982
Hi Terry,
I just try my best to avoid, which does not really means by doing so, it results in auto-fail.
As Andrew mentioned before, adding the keyword synchronized in the function does not change the signature, i.e. if SUN given this:

The signature of this function can be equivalent to:

However, this, in fact, changes the interface provided by SUN, as the given function does not have the keyword synchronized.
Some people suggest that, we may, for e.g., SUN provides us as the interface, we can define our own interface, say OurDBAccess, which extends DBAccess, and is implemented by
Maybe in your point of view, you find the above approaches is no problem (Actually, it is really no problem which means the above action can pass through SUN's software).
But, for me, in order to really play safe, I decide not to change what SUN gives me, and I fully follow what SUN said:
Given the interface DBAccess, and Data implements this interface, without any changes (i.e. not tries to define a new interface that extends the given interface).
Mark Spritzler

Joined: Feb 05, 2001
Posts: 17276

Congrats. Well Done.
I have to move this to the more appropriate Certification Results Forum.

Perfect World Programming, LLC - iOS Apps
How to Ask Questions the Smart Way FAQ
Philippe Maquet

Joined: Jun 02, 2003
Posts: 1872
Hi Nicholas,
Thank you for your detailed information, especially the locking part!
There is a discussion on the main SCJD forum here about why so many people get a 44/80 for locking.
I just disagree with what you wrote above about the "syncronized" keyword. Its use *does not change* the provided interface. Synchronization is pure implementation stuff.
Ken Krebs
Ranch Hand

Joined: Nov 27, 2002
Posts: 451

kktec<br />SCJP, SCWCD, SCJD<br />"What we observe is not nature itself, but nature exposed to our method of questioning." - Werner Heisenberg
Vishwa Kumba
Ranch Hand

Joined: Aug 27, 2003
Posts: 1066
I agree. Here's the link:
subject: Passed finally with 86%!!!
It's not a secret anymore!