Min Huang

Ranch Hand
+ Follow
since Mar 17, 2004
Merit badge: grant badges
For More
Cows and Likes
Cows
Total received
In last 30 days
0
Forums and Threads

Recent posts by Min Huang

Interesting article that may help some people. It's about optimistic/pessimistic locking - something I did not know about when I took the exam. Maybe that is why I got 44/80 out of locking? Oh well.

http://66.102.7.104/search?q=cache:R7E5hkv8b9MJ:www.javaworld.com/javaworld/jw-07-2001/jw-0713-optimism.html+optimistic+locking+java+&hl=en
You ownz0red the SCJD. w00t
20 years ago
I hear you Morgan. I am addicted as well. I had a whirlwind romance with SCJP and SCJD in the last 2 months and now I am hankering for more. I've already bought the voucher for BCD and I'm looking at books for the WCD.
Mainly its because I'm out of school and nobody will hire me for experience. I kept getting jealous (? is that the word?) seeing my friends work feverishly on their homework assignments while I sat here with nothing to do.
But those certs definitely help! I am getting more interviews for developer positions after SCJD (before nobody would even call me back). I say they are worth a lot for somebody who has just a BS and no exp.
I am wondering: How does the SCJD stack up against other developer certs in terms of difficulty and value? I am particularly interested in how it stacks up against something like MCAD. Anybody know?
Hi Veena,
Thanks for the tips. I've not heard of jobgusher.org or careers.org. Currently I am doing volunteer work writing PHP, but I'd rather write Java and get some more experience doing that.
Here are some tips for you:
The SCJP is considered either very easy or surprisingly difficult, depending on whom you talk to. I thought it was quite simple, but I was surprised at the kind of questions it asked - basically I felt like Sun was trying to turn me into a Java compiler
I used Sierra & Bates book from Amazon to prepare for SCJP and it took me less than 1 week (about 20 hours of study). I only had a little bit of experience with Java then (like you, I was a C++ guy).
The SCJD was a bit more difficult. Prior to registering the exam, I did not know RMI, Sockets, AWT/Swing, File I/O; the major topics of the SCJD exam. Also, I was not an experienced programmer and I was not familiar with design patterns and such. If you are going for SCJD, hopefully you are familiar with multi-tier client server application programming as well.
I recommend the books Design Patterns (by Gamma et al) and The Sun Certified Java Developer Exam with J2SE 1.4 (by Habibi & Patternson). The former book is good if you are a newbie like me, and the latter has a useful sample exam. Unfortunately, I did not find out about the Design Patterns book until after I passed my exam
Don't rely on the sample exam too much - it is mainly there to get a feel of what the completed application might do (the SCJD exam specs are very vague).
Of course, you will spend hours looking through these forums for help on SCJD too.
I spent about 5 weeks working on the SCJD. 2 weeks to read and learn about the relevant technologies and design my project, 2 weeks to write the code, and 1 week to test my application. I think I totaled 180-200 hours working on the exam (having gone in cold, knowing nothing about nothing). Your mileage may vary, as other people have reported differing lengths of time required to complete the project. You can see my thread about it here.
As for difficulty, the entire project was more difficult than any of my assignments from my most difficult undergraduate CS classes. However, I do not feel it to be a great order of magnitude more difficult. I was told the exam is more difficult than an assignment you may receive in a Master's program, but I have no frame of reference so I cannot comment on that.
In total, the 2 certifications cost me:
$150 (for SCJP)
$250 (for SCJD assignment)
$150 (for SCJD essay)
$35 (for Sierra & Bates book)
$35 (for Habibi & Patternson's book)
$35 (for Design Patterns book, which I did not know about)
----------------------------------
$655 (total)
Plus around 200 hours worth of study and preparation time. Hope that helps you out.
[ May 04, 2004: Message edited by: Min Huang ]
20 years ago

Thanks for sharing your experience.
I would like to know if you leave your delete/create methods without any implementation at all or do you throw a UnsupportedOperationException? And did you mention this in the JavaDocs from these methods?


I didn't know there was such an exception. I looked through the Java 2 API and found NoSuchMethodError, and I decided that was close enough. I didn't lose many points in General Considerations or anything, so I guess its ok to do that. Maybe it would have been smarter to throw USOE.
I did document that create/delete had no implementations in my choices.txt and in my Javadocs. Actually I clearly mentioned that there was no implementation several times in my documentation, noting that as a future enhancement, those 2 methods could be implemented.
To Vishwa: So in that case, I think that my empty implementations did not go unnoticed by the grader unless he decided to give but a cursory glance at my documentation. Granted, my choices.txt was a huge horking monster of a text file, but that's a different story
I also mentioned that nowhere in the spec is there a must requirement (or even a "should" requirement) to provide create/delete functionality, so I did not provide it (as extra work gives no extra credit). I listed that as a basic assumption in choices.txt. Maybe if you do not implement create/delete and do not mention anywhere that you did not implement it, the grader will not be so forgiving.
Hi.
I am looking for work. Willing to relocate for full time permanent position. Temp, contract, and part time OK. Volunteer OK as well, but it must be on site (around the Los Angeles area.
I am looking for an entry level/internship, preferably programming Java. C++ is ok too, but I am slightly more well versed in Java. I am also a PHP/MySQL programmer, but not by trade.
SCJP
SCJD
SCBCD (In Progress)
Find the rest of my stats here: resume.
Thanks.
[ May 02, 2004: Message edited by: Min Huang ]
[ May 02, 2004: Message edited by: Min Huang ]
[ May 02, 2004: Message edited by: Min Huang ]
[ May 02, 2004: Message edited by: Min Huang ]
20 years ago

Not sure why you received the 44/80 locking score; this has been speculated on
before, but no one knows. Perhaps it only takes one, small subtle error to lose
quite a lot of points (would be my speculation).


Yes, I am also unsure about this. Maybe they toss a die and decide whether to give you 0/80, 44/80, or 80/80.
I did collection locking and tested it thoroughly too. However, I did not account for clients that crash or take any steps to prevent deadlock (which would occur if clients can claim multiple locks - which I allowed). I noted all of these choices in choices.txt. However, I've noticed people who have done the same and gotten perfect locking scores.


Your "Data store" score was at the maximum. If you could, here are some
questions I have (although I've already done the design and development, so at
this point, it is mainly curiousity):
1. Does your database function in "stand alone" mode. That is, can the Sun
examiner write their own code to use your database and test your database?


Yes. I went with a 2-tier approach. Maybe that's why I lost points on OO Design?


2. Does your database have different rules that are dynamically set at run-time
either through a preferences file or through the client application hard-coding
them. Here are some rules my database has:
2.a: The definition of a key which defines which fields, if any, participate in
forming a key. Once a key is defined, it is used to further define the primary
key and the mutable key (both are discussed next).


No, my "primary key" is defined as the record number (which is 0, 1, 2, 3, ... and determined by the record offset).


2.a.1: The definition of a key used to determine if there is a duplicate key
exception. Granted URLyBird has no duplicate keys, but the raw database itself
does support them and they are defined through the appropriate method calls.


I defined DKE to be thrown if adding a record would cause integer overflow (because a recNo must be an int, and so only a finite number of recNo's can exist).
Note: while I did not implement create/delete, I noted the exact behavior of create/delete in the comments and choices.txt so future programmers could implement it and see how it works with the locking scheme and the rest of the database functions.


2.a.2: The definition of a key used to determine which fields of the record
are or are not mutable (modifiable). For the URLyBird client application,
the database is set up so that the update() method can only mutate the last
field (holding the client ID). But the raw database can be set up so that any
number of fields can be made mutable or immutable.


I didn't do that. My client has access to the entire data class.


2.b: A creation policy: i.e., whether new records are allowed to be rewritten
over deleted records. I assume you did not have this since you did not write
the delete() and create() methods.


Yes. I allowed this. create searches for the first deleted record. If it does not find one, it will append to the file.
(see above for my note on implementing create/delete)


2.c: An update policy: i.e., whether "blind" updates are allowed.


What is a blind update? You mean updating without reading the record first to see if it has changed since you last read it? I allow this. I noted that if you want this to be avoided, then read it first, then update.


2.d: A lock policy: i.e., can the client lock more than one record or not.


I did not do this. A client can lock as many records as he wants.
I was just talking with a fellow test taker and we were mulling about how it took so long to get our results, but then I checked the certmanager database and BING! like a blue bolt there's a new entry in my test history and a P dangling right next to it!
My score is nothing spectacular but I feel so happy with it
Grade: P
Score: 348
Comment: This report shows the total 1.4 SCJD 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): 99
Documentation (maximum = 70): 70
O-O Design (maximum = 30): 15
GUI (maximum = 40): 40
Locking (maximum = 80): 44
Data store (maximum = 40): 40
Network server (maximum = 40): 40
Yup, I got the "standard" 44/80 locking score.
20 years ago
Hello fellow ranchers! I responded to a post a while back saying that create and delete don't have to be implemented (that is, they can have empty implementations), but nobody was sure about that. Well, I became the first guinea pig for the URLyBird assignment to test out that theory. It is possible to pass without writing a single line of code for create and delete! Here's the relevant thread where it was discussed: https://coderanch.com/t/185598/java-developer-SCJD/certification/unspecified-requirements
Actually, I was just talking with a fellow test taker and we were mulling about how it took so long to get our results, but then I checked the certmanager database and BING! like a blue bolt there's a new entry in my test history and a P dangling right next to it!
My score is nothing spectacular but I feel so happy with it
Grade: P
Score: 348
Comment: This report shows the total 1.4 SCJD 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): 99
Documentation (maximum = 70): 70
O-O Design (maximum = 30): 15
GUI (maximum = 40): 40
Locking (maximum = 80): 44
Data store (maximum = 40): 40
Network server (maximum = 40): 40
Yup, I got the "standard" 44/80 locking score.
BTW, Thanks to EVERYBODY in this forum!! I couldn't have passed without your help!
[ May 01, 2004: Message edited by: Min Huang ]
Yes, that's what I meant - implementing them but leaving them blank. I that people have passed by just leaving them blank. I believe Mark (Spritzler) passed w/o touching them. Those methods are just artifacts from an older assignment version.
Hi Ling,
The MVC pattern is there to help you out if you have a scenario where it would be useful. You don't have to force fit your specific problem to use MVC. If your server just has two buttons to start and stop the server then there's really no need for it.
Where? I do not see anywhere in the instructions where it suggests, requires, or otherwise recommends that all the methods are to be implemented. In fact, I do see that you will not be credited for extra work. Also, extra code that is unstable or buggy could lead to markdowns. But anyways, in the end its up to you to draw your conclusions about whether or not to implement them, and then write it in your design doc.