• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Tim Cooke
  • Liutauras Vilda
  • Jeanne Boyarsky
  • paul wheaton
Sheriffs:
  • Ron McLeod
  • Devaka Cooray
  • Henry Wong
Saloon Keepers:
  • Tim Holloway
  • Stephan van Hulst
  • Carey Brown
  • Tim Moores
  • Mikalai Zaikin
Bartenders:
  • Frits Walraven

Passed finally with 86%!!!

 
Ranch Hand
Posts: 4982
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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.
Nick.
[ January 25, 2004: Message edited by: Nicholas Cheung ]
 
Ranch Hand
Posts: 619
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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
 
Bartender
Posts: 1872
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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.
Best,
Phil.
 
Nicholas Cheung
Ranch Hand
Posts: 4982
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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.
Nick.
 
Ranch Hand
Posts: 293
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Congrats!
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?
Thanks.
TJ
 
Nicholas Cheung
Ranch Hand
Posts: 4982
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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 DBAccess.java as the interface, we can define our own interface, say OurDBAccess, which extends DBAccess, and is implemented by Data.java.
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).
Nick.
 
ranger
Posts: 17347
11
Mac IntelliJ IDE Spring
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Congrats. Well Done.
I have to move this to the more appropriate Certification Results Forum.
Mark
 
Philippe Maquet
Bartender
Posts: 1872
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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.
Best,
Phil.
 
Ranch Hand
Posts: 451
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
COngrats
 
Ranch Hand
Posts: 1066
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Congratulations!
 
Bring me the box labeled "thinking cap" ... and then read this tiny ad:
Gift giving made easy with the permaculture playing cards
https://coderanch.com/t/777758/Gift-giving-easy-permaculture-playing
reply
    Bookmark Topic Watch Topic
  • New Topic