问题
Ok I know this might sound a bit silly, as it depends on the person, but on average how much time should I spend on preparing for SCJP? I already have some experience with Java (a few small and medium projects for my university, from implementing a simple "ships" game to some client-server stuff).
I was thinking about taking it around jun-july '10 so I'd have around 7-8months, is it enough/too much/not enough?
Also I've been looking for a good book, is there anything better than: "Sun Certified Programmer for Java 6 Study Guide" by Kathy Sierra and Bert Bates? And what about some practical questions (like "implement this and this" or "write a piece of code which does...")?
Ah and is it really worth it (I'd spend my own money). I'm not asking if it will make me a better programmer (as I've seen such a thread on stackoverflow alread) but do the employers even care about it?
回答1:
It took me 3 weeks to prepare for the Java 6 exam, I have 0 professional Java programming experience. For someone who uses the language daily (like a java programmer) it should be even easier. I was very excited to get it over with as soon as possible, so I ordered the Kathy Sierra SCJP Sun Certified Programmer for Java 6 Study Guide at http://www.amazon.com/SCJP-Certified-Programmer-Java-310-065/dp/0071591060 and one day shipped it to me so that I received it on a Saturday. As soon as it came, I started reading. That took about two weeks as the book is an 800 page monster with some self tests in the book that both give you good practice and teach you some specific details that the book did not mention in the actual chapter (a lot you can guess but not all...). For the last week I reviewed all the 2 Minute Drills and re-read the chapters that were API heavy. Also there are a lot of tables (important string methods, thread methods, file API methods, and concurrency). I also took the two master exams included in the book. I took them in study mode and attempted the question, then if it said wrong, I went and tried to figure out why it is wrong, then I went to the reference/hints if I needed. On the day of the exam I reviewed the File/String/Collections API an hour prior to the exam and took it.
I scored 90% so that's GREAT considering I do not have any Java work experience at all and prepared in 3 weeks. It should be much easier for any professional Java developer to prep/take. Although I have known of Java since it came out, and I used it for the occasional graduate and undergraduate program in college so I'm not totally new. Also, I know other C languages so I am used to much of the control structures, etc... However if I can figure out the API/language workings in three weeks enough to get a 90% any experienced java programmer should have no problem figuring out enough to pass. Still that book is giant, the 2 hours of daily train riding to work was a big help in getting the reading done.
Some people say you have to write a hundred small programs to figure things out. But that book is pretty good on details. The most important thing to write programs about (maybe I wrote 10) are the constructors/initializer blocks/static initializer blocks/to find out exactly what is inherited and to cement the order. And when casting a sub class as its parent, it is important to see what happens when you access the variables/overloaded methods. While the overloaded methods are simple and what is expected, accessing variables is not so straight forward. Trust me, write a few programs about it, especially where the super type/sub type have instance variables with the same name.
I think the main thing I got out of SCJP is a broad overview of the language. Java is a beast, the API/language is huge. Typically I just used the parts of the language I needed for each project/activity in Java and looked up the API as I went. Some key words (like transient) I just did not know. Also some interview trivia (like if you override equals what else must you override) I did not know (at least according to what a friend told me). Also I had no idea about things like the internationalization classes Locale, Calendar, DateFormat, NumberFormat, and Date. Really if I was writing serious Java software, I would probably use Calendar for date arithmetic needs. I don't think it will help me land a Java job as everyone seems to want Java experience prior to even giving you an interview. But if I ever do get an interview, the knowledge I gained from preparing the exam would definitely help me to better answer the questions (though I'm sure a lot of the specific API details will fade with time). Also now I feel more confident with Java. Still I can't say that I can just whip up a Java program on the white board that fully works because the API is very complex. A language like C is pretty small, include stdio.h/stdlib.h/string.h and memorize 30 functions and you can do a lot. Java has way more packages/classes to include and way more API. Also with expressions there are a ton of rules, promotions, casting, autoboxing, etc. which would be really easy to mess up. Though C has precedence hell, with the right parenthesis you can get away with a lot. Java is more strict on things (ie if(0) is an error). But the exam is worth it just for some additional trivia, although the exam is a bit frustrating, and if you look at the book it pretty much tells you that the exam deliberately picks tricky questions and edge cases in an attempt to confuse you. It will deliberately give bad indentation and other stuff to try to be tricky. I hate that because rather than focusing on you knowing the material reasonably, it focuses on trying to confuse you.
One thing of note, don't get thrown by the Master exam. I tried to take one in exam mode, and they gave 75 questions in 1.5 hours and I nearly decided to postpone the exam. The real exam is 60 questions and you get 3 hours. Also the questions on the actual exam are MUCH easier than on the master exam. My master exam score was 37%.... My last two times I just did it in study guide mode, attempted each question/if answer was wrong tired again/viewed reference once with the A exam and once with the B exam... I did fine on the exam and I am really really happy that I did not postpone it over the study guide, because now it is over and I can relax....
回答2:
In the Parachute book, the author tells of how he likes showing off résumés to his friends, who remark that "This résumé will never get anyone hired!", to which he responds "Oh, but it already did!". The lesson is that every employer is different.
So the real question is not whether the SCJP will help you get a job, but whether it'll help you get a job at one of the places you want to work. Google has a lot of pretty smart programmers who use Java, for example, and of all the people I know who work there, zero have taken the SCJP, so it's probably not a big concern there.
Now, some more personal (i.e., less universal) feedback:
It would not help you if you were to interview at my company, and in fact might hurt (especially if you call attention to it), if it looks like you're only a Java programmer. We need good programmers, not good Java programmers.
I've not taken the SCJP, but I suspect it's like every other standardized test: it's as much about your SCJP-taking ability than your Java ability. When you interview, we're going to look at the code you've already written (open-source projects are great), and the code you write during the interview. What Sun thought of you is not our concern. (We can't exactly call up Gosling in a year and say "Dude, you told us this loser knew Java! You totally owe us one year of dev time".)
Some people have suggested that it'll make you look good over another candidate, if all else is equal. First, all else is never equal when it comes to interviews. In fact, I've rarely interviewed somebody and been neutral: it's either an immediate "No" or an emphatic "Yes". Second, unless it's a really tiny company, everybody needs more great programmers, so if two "Yes"s walk in the door at the same time, we'll hire them both. Yes, even today, in this economy.
So figure out where you want to work (a specific place, or a type of place), and see if the SCJP will help you there. There are lots of other ways to get good at Java in the time you might save. First of all, writing real Java programs. :-) Bonus if you open-source them so everybody can see the cool stuff you've done. Double bonus if you write a blog about all the gory details. Second, learn something other than Java. If you spend 6 months learning Haskell, for example, I guarantee it'll significantly help your Java.
回答3:
I prepare it for about 3 Months for 1.4 Java Version SCJP with an O'Reilly book (not an Head First sadly) I think that the SCJP Exam for the 1.5 specification is harder thank's to generics.
Anyway, the most important is to focus during the test, almost all questions have a trick,as you could see on the preparation book mock test.
回答4:
It really depends on what you're doing the certification for. If you just want to pass the exam you could probably do it in around three months.
However, if you're studying to really get an in depth understanding of the JDK and the intracacies then I'd say more like six to nine months.
The book you mentioned should be fine, but make sure you do example programs and really explore the concepts presented to you in each chapter. One site I would definitely recommend is JavaCertificate.com:
http://www.javacertificate.com/
It's worth spending the money to do the practice questions and the mock exams, but don't do this too early on.
I highly recommend doing the SCJP, it will put you ahead of most of the mediocre Java hackers out there. Unfortunately, most employers I know of are not that aware of the certification - nor it's benefits. I really wish Sun would grade the certification you get in the end - 90% and plus would be Level 1, 80 - 90% would be Level 2 etc...
回答5:
From the Sun Certified Professional Wikipedia page, I understand that SCJP is a prerequisite to a number of the other Java-related certifications, so indeed I would say it really is worthed. Not only it will look good on your resume, but it will open a path of new certification opportunities and allow you to gain better chances of employment in the long run, not only due to certification, but also due to the experience you will gain.
For an extensive discussion upon this matter, you could take a look at this forum post.
回答6:
I've never known being certified to help greatly but I don't live in the US or a hot bed of the IT industry. Someone else may be able to shed more light on this topic, but I can only assume that in a more vibing city for IT such as Silicon Valley or perhaps NY, it may look a little more impressive if two or more candidates are evenly matched. But if you're weak in interviewing skills or thinking on the spot etc, being certified might not help too greatly.
The book you mentioned sounds good and will probably be sufficient. I've always enjoyed the head first series too and in your case perhaps the Head First Java might be worth a look (also Kathy Sierra and Bert Bates).
Some other posts relating to SCJP may be of help too:
Does scjp help
is an scjp certificate worthwhile
回答7:
Although it took me a long time to prepare for the SCJP exam (because I was working during the day that time), I think 7 months is long enough and perhaps too long depending on your mad skills.
The only resource I had that time was Sun Certified Programmer for Java 5 Study Guide by Kathy Sierra and Bert Bates. I think it was all the resource I needed. Although I have to admit that I had to read the chapters again and again and answered the quizzes and practice exam multiple times to make sure I got it in my head.
As far as I know, questions such as "implement this and this" or "write a piece of code which does..." is for the SCJD exam, not SCJP. This is also mentioned in the book by Sierra and Bates, together with other information about the exam.
回答8:
Views on certification certainly seem to be a mixed. Some employers say they won't hire if you don't have one; others don't care; and others seem downright hostile toward certs. So, having one could help, but not necessarily. My viewpoint is that if you're using it to improve your skills then get it. If your skills are already at a point where the certification is easy, then it's only worthwhile if you're convinced it will help you get the sort of job you want... or if your employer is requiring you to get it.
As for the time to spend on preparing, this varies also. Some factors:
- How much you already know
- How much time you have
- How well you want to perform on the test
I'd think 3 - 6 months of studying should be adequate to pass, probably less if you're already good with Java. From my own experience, I had only a passing familiarity with Java, but studied toward an SCJP a couple times. I had no deadline and wanted to "ace" the test, so was thinking 6 - 8 months of study time. However, life would present distractions and I'd suspend studying for a bit. I wasn't using Java regularly, so I would have to start over somewhat when I resumed. Eventually life presented the ultimate distraction (a child) and I still haven't gotten that SCJP. (However, I'm starting to use Java regularly, so that may change.)
JavaRanch is another good site to use for SCJP preparation.
来源:https://stackoverflow.com/questions/1769821/how-long-should-i-prepare-for-scjp