This week's book giveaway is in the Java in General forum.
We're giving away four copies of Event Streams in Action and have Alexander Dean & Valentin Crettaz on-line!
See this thread for details.
Win a copy of Event Streams in Action this week in the Java in General forum!

Douglas Cyporyn

Greenhorn
+ Follow
since Oct 17, 2014
Cows and Likes
Cows
Total received
4
In last 30 days
0
Total given
0
Likes
Total received
20
Received in last 30 days
0
Total given
21
Given in last 30 days
0
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Douglas Cyporyn

Yay! Thanks so much! I'm super excited to read this book.
3 years ago
Is this book also beneficial for a person learning to conduct a technical interview?
3 years ago
I'm currently working on a project that is developing a UI using Ext JS Framework to produce a one-page application. We are considering creating a RESTful API specific for the application and leveraging the container-based SAML configuration (a corporate standard) to secure both the UI and the service. This would entail maintaining some user state within the service with the help of a filter. Even though the service would be dedicated to the UI (at least for the time being), it does go against REST statelessness. What is the preferred security pattern for REST API for one page JavaScript applications?

Thanks!
Doug
3 years ago
Hi Jeanne and Scott!

I passed the OCAJP 7 Exam in November. I have just started studying for the OCPJP 7 Exam. I'm wondering if it makes sense to double back and take the OCAJP 8 exam now and then pickup on OCPJP 8.

Is there a big difference between the OCA 7 and OCA 8 exams? Would it take a lot of additional study to get ready for OCA 8 after recently passing OCA 7?

Thanks for your insight! I'm really curious to see your book.

Doug
Hi Kendall.

Calling super() invokes either the default or no-arg constructor for the super class. A constructor's purpose in life is to initialize it's object. So it really only makes sense to call super() when the object is being instantiated. Therefore, the only place you can explicitly call super() is from within a constructor in the subclass. And then you had better be sure that either A) no other constructor has been declared on the super class thereby letting the compiler add the default constructor or B) the no-arg constructor has been explicitly declared on the super class.

So, the constructor is not really a method. Constructors have lots of rules specific to them. You can think of it as a special kind of method with its own rules if you want. But it's definitely not a method.

Hope it helps!

Doug
Hi Everyone,

Thank you all for the great feedback!

It gives others a guide to where they stand.



I craved content like this when I was studying for the exam. because sometimes you just want to know if you are on the right track.

@Chris Barrett - I probably read your blog post 15 times while studying. Thanks for that!

And all the cows completely made my day today, guys. Thank you!!



And thanks to all of you who answered my questions promptly and completely. I learned a ton from Code Ranch over the past several weeks and I am sure I will learn more in the months to come.

BTW - The correct phrase is "Chunk and Chew". One of many typos.
4 years ago
I have been using Java for about 14 years now so I already had a working knowledge of the language. Notice I said “using Java”. I also use a cell phone on a regular basis. But there’s a lot I don’t need to know about a cell phone in order to use the device. I soon found out that just having an understanding of how to use Java was not nearly enough to carry me through OCAJP certification.

You guys want reference. Here are the essentials. Observations to follow.

Resources:

OCA Java SE 7 Programmer I Certification Guide, Prepare for the 1Z0-803 exam, by Mala Gupta
OCA/OCP Java SE 7 Programmer I & II Study Guide (Exams 1Z0-803 & 1Z0-804) (Certification Press), by Kathy Sierra and Bert Bates.
Enthuware Mock Exams


Results:
Enthuware Mock Exams:
  • 2014-10-24: Starter Test 74% (But WAY over on time – like by 30 minutes)
  • 2014-10-26: Test 1 64% (41 minutes over on time. That’s right. 2:41 total)
  • 2014-10-29: Test 2 63%
  • 2014-11-03: Test 3 70%
  • 2014-11-06: Test 4 71%
  • 2014-11-10: Test 5 71%
  • 2014-11-11: Last Day Test (Unique) 69%

  • K&B CD-ROM Exams:
  • 2014-11-10: OCA Exam 1 72% (Time: 2:19)

  • Oracle Exam
  • 2014-11-13: Actual Exam: 80% (with one un-answered question … more below)


  • Lessons Learned and Tips:
    I am a habitual starter of Java certification and perpetual procrastinator of doing so. I own study guides for every major Java version starting at JDK 1.3. I have never made it more than about 3 or 4 weeks before abandoning the process to focus on something new. But when my employer started requiring new college grads to be certified I knew it was time to get it done. I finally earned one certification. Here are some things I learned along the way.

    1. Time commitment: I had completely underestimated the amount of time and commitment this exam was going to require. I think for someone who has a foundational understanding of Java three months is doable for this exam. In the last four weeks you need to be prepared to put at least 20 hours a week toward studying.

    2. Pace of study: I am certain everyone learns differently and has a difference capacity for remembering details, but I found that going slow and steady is not the best way to learn for me personally. I had initially started by reading one chapter a week from Mala’s book and then taking the end of chapter test. This was great until I got to the end of the book and had forgotten everything I learned in the first half. If you are serious about exam preparation find a pace that feels just about unbearable and then back down one notch.

    3. Study Groups: My old procrastination habits started taking over so I formed a small study group at work. This was incredibly helpful. I was held accountable for completing a chapter by a certain time. After a short while it became routine. And there was always someone else to share the experience with and to talk over concepts in the book.

    4. Review: As I mentioned, I was unable to retain all the details I needed after one read through of Mala’s book. Shortly after I finished Mala’s book, and was reading it for the second time, Kathy and Bert’s book showed up at my door. I had it on Amazon pre-order. Initially I used it for reference, but soon figured out that I had better read all of the first six chapters. I managed that in about two weeks since I had amped my pace to the point of agony. Eventually I read both books twice. The second time through goes much faster.

    5. Chuck and Chew: My wife is a teacher. She taught me this phrase. It refers to giving your brain time to absorb what you just read. It is not enough to just read from the page. Your brain needs to process that information and give it context so it becomes relevant to you. You will see experienced ranchers say time and time again how important it is to cast aside the IDE and start writing small programs in your favorite text editor. This is very valuable “chew” time. Every time I reviewed a concept I would do one of two things. 1) Take notes on flashcards. 2) Write a small test program. I didn’t always have my laptop nearby so taking notes was chew time for me.

    6. Don’t get stuck - Post to Code Ranch: There were more than a few times I spent two or three hours struggling to understand something. This is an incredible waste of time. I came to Code Ranch soon after receiving my Kathy and Bert book. It was around this time I started to wake up to the fact that this was going to require a lot more dedication to get through the exam that I had initially thought. After getting such great help here I would not waste any more time pondering. I posted my questions and learned a lot in doing so. I would also browse the forums to read through other questions which very useful.

    7. Practice with Mock Exams: These are an absolute must for exam preparation. There are several points I would like to elaborate on regarding the mock exams.

    7.a. Enthuware: There is simply no reason to NOT use Enthuware in preparation for the exam. The exams are affordable and a very high quality. You get an ample number of unique test questions and full length exams. There is absolutely no question that Enthuware exams are a must for anyone that is preparing for Java certification. However, I don’t think I could have made it through exam preparation without the books in conjunction with Enthuware. The exam question explanations are hit and miss. Sometimes they are great. Other times they are a bit tough to understand. Enthuware’s value is in testing and reviewing. Not in teaching.

    7.b. Time Management: After taking my first full length mock exam I wanted to crawl under a rock. I seriously doubted at that point that I would ever be able to learn enough of this material and know it well enough to pass the certification. The whole notion of this being a timed test was now a major factor to contend with. Fortunately, Kathy and Bert give great advice on testing technique that optimizes your use of time during the exam. Those two pages in that giant book are like gold. If I had not read that I don’t know if I would have ever passed this exam. In fact, time ran out for me while the real exam. I did not have ANY time to review. Time management was a major factor me and the mock exams prepared me well for the actual exam. I plan to work on this to get faster for the OCPJP Exam.

    7.c. When to start mock tests: I would recommend starting mock exams after you have read all of the material covered by the actual certicification exam. Once you burn a test question it loses its value in being able to accurately reflect your knowledge. I had read all of, and reviewed half of, Mala’s book before taking a mock test. Then I went into a cycle of Read -> Review -> Test -> Evaluate Results -> Repeat. I would focus my review on areas I missed in the exam. The test review process would range between four and six hours for me.

    7.d. TAKE the Enthuware last day test: It just happened that the last day test had a couple questions that matched almost exactly to a couple of questions I faced on the actual exam. I’m sure this was coincidence for me, but it really helped. Thanks Enthuware! 

    7e. Test Content vs Book Content: You will hear that mock tests are harder than actual exams. You will find content in the mock exams that were not covered in the books or were covered in far less detail. Trust the mock exam. I do not recall (I have not verified this) seeing Class.getClass() behavior mentioned in either of the books I used for studying. I had one or two questions on the actual exam that tested this knowledge. It was covered in mock exams. Also, the books downplay the importance of wrapper classes such as Integer. I would say the mock exams treat them with proper respect.

    7.f. Are mock exams harder than the real exam? I cannot say either way with absolute certainty. There are too many variables to be certain about it. The fact that the real exam question banks change regularly, and that Oracle throws out a certain number of questions (20?) before grading, would make it difficult to determine if this was the case across the board. I can tell you there will be very challenging questions on the real exam. I definitely scored better on the real exam but and that seems to be the case for the majority of those who have posted their experiences here. But I would not rely too heavily on that always being the case.

    8. Pre-Exam Review: The morning of my exam I reviewed by reading the end of chapter summaries from each book. This probably took about 1.5 to 2 hours tops. I was nervous and scatter brained so it took longer than usual, but it was incredibly helpful. You are trying to keep so many details alive in your brain. Doing this review kind of brings everything back up to the surface and gives you a chance to consider each concept in a short period of time. I did not do this before taking mock exams and I wonder if I would have scored better on those if I had.

    9. Wrong Answers: There are a lot of ways to get a question wrong. Even when you know what is being tested in a question it is very easy to miss it. I really struggled with this. Losing focus is the biggest factor and it can happen for a number of reasons: Lack of sleep (which you will have), having a bad day (frustrations), illness, and interruptions name a few. Here a just a few of the things I wrote down when I missed a question for the same reason more than once:

    9.a. Trace the code to completion every time. More than once I stopped early when I thought I had the answer only to notice that finally block staring me in the face during review.

    9.b. Always look carefully at the Boolean condition in a loop and keep in mind how it may change during execution. Sometimes that loop will never even execute and you can spend precious minutes calculating counters if you miss the condition part.

    9.c. When evaluating Boolean expressions get used to saying out loud (during practice) what they evaluate to such as "if true and false" instead of "if 3 < 4 and 4 > 3 ...

    9.d. Diagram which objects are related to which instance variables. A variable name with a line to a circle is usually enough. Sometimes you can write instance variables in the circle and their values as well. This will be helpful those questions that ask about garbage collection, how many objects were created, methods that change object state, etc. I got into the habit of doing this and it helped a lot. But it does take time so if you can do it all in your head more power to you. I could not.
    9.e. If you have to guess, always mark the question for review. Also, and I found myself doing this repeatedly, don’t choose an answer you think might be wrong just because you don’t understand the other options available (duh).

    10. When are you ready? At some point you are going to be completely burned out on exam preparation. You will want all of this to be over so you can get back to a normal life. If your mock scores are not going well (low 60s or less) then do not be tempted into taking the exam early. I saw a few colleagues fall into this trap and you just end up prolonging the process and making it more expensive. I had a deadline and I had to take the test when I did. With my mock exams coming in around 70% I was not very confident going into the exam. This lead to more anxiety. I scoured the forums to find someone else who passed with mock scores as low as mine. I had a goal of getting to 80% before taking the exam. I was working very hard but my scores were not coming up. This was incredibly frustrating. I began to wonder if I was capable of better scores. I finally reached a tipping point with the deadline fast approaching and the fact that my scores were not getting better. I decided to write the exam and hope for the best.

    I hope this helps someone else when preparing for the exam.

    Doug
    4 years ago
    Okay, I found the option to exclude questions from Last Day Test. Open Leitner Mode -> Click "Start Learning" and follow the dialogue.

    Previously I had navigated directly to unlearned questions in the "Leitner View" tab. You do not see this option when accessing the questions that way.

    Thanks,
    Doug
    I started using this mode yesterday and I really like it a lot for the specific purpose of review and for focusing on areas where I need the most practice. I have completed Standard Tests 1 - 5 (including Starter Test). I have read two books (each twice) and I started noticing that I was missing most questions during practice exams not due to lack of understanding the concept being tested but due to other reasons such as computational error in loops or just not noticing the problem with the code. Once I saw the answer during review of the test I understood why I missed the question - it wasn't as if I was just learning about rule/concept for the first time. Even so, my scores are not that great. My last two practice exam scores were right around 70%. It seemed to me that I needed more practice with the exam questions. And, I had some glaring weaknesses with certain questions given my results. So I tried Leitner mode yesterday and I found it to be very helpful.

    Practicing with a full exam is an incredibly worthwhile endeavor. Learning how to take these timed exams is a skill in and of itself. But it also takes about two hours and it is a bear to review all of those questions afterward. For me this whole process takes about six-eight hours per practice test. Again, it is useful. But at this stage I felt like I need more focused practice. So Leitner mode has been great.

    Thanks for the tip about un-checking the "Include Questions From Last Day Test" option. It seems that your viewer may be different than mine as I'm not finding the option just yet. I'll check into that, but I am taking my exam tomorrow. Unfortunately I have an imposed deadline and I completely under estimated the time it would take to prepare for this exam. If I had my choice I would continue to study until scores improved on practice exams.

    Thanks,
    Doug
    Chapter 6: Flow Control and Exceptions, page 350

    Fourth sentence in the last paragraph states:

    When an Error or a subclass of Error (like RuntimeException) is thrown, it's unchecked.



    This is confusing me because it makes it sound like RuntimeException is a subclass of Error. RuntimeException is not a subclass of error. Or, is it?

    Thanks,
    Doug

    To tell the truth, it is not a complicated question.



    I do tend to agree with you Sergei. Now, that is. The funny thing about what is complicated and what is not complicated is that it is completely relative to an individual's knowledge and experience. A little time spent working with multi-dimensional arrays made all the difference for me. I looked at the question once more and my eyes picked up the value immediately.

    Thanks for extending the discussion. I read through all the subsequent posts and found it useful.

    Doug
    Chapter 3 Self Test, Question 3.

    Answer choices are A, B, C, D, E, F.

    Self Test Answers for question 3 list possible Answers A, B, C, D, E, G.

    Clearly the answer key is describing answer F but referring to it as G.
    This does help a lot. I had started down the path of your third option but I was not labeling the elements correctly.

    Perhaps with more practice this will come faster but I have to say it a cruel question for a timed exam

    Thanks so much for the help!

    Doug

    I came across this question on an Enthuware mock exam. My eyes cannot make sense of the array positions. Even after re-writing the thing and trying different ways of formatting the code I cannot keep track of what value is in which position.

    What will be the result of attempting to run the following program?



    Any advice for breaking this down?
    I believe my question hinges on the definition of "override".

    I know the override rule about static methods to be as follows:
  • static methods cannot be overridden by non-static methods
  • non-static methods cannot be overridden by static methods


  • So, okay. We can override a static method with another static method. Great. But in doing so we lose the polymorphic behavior because the overriding static method only "hides" or "shadows" method in the super class.

    Consider the following code:


    We do not get the TestThisClass behavior in the ov.write() line. I understand this is because the ov reference variable is of type TestOvClass, and since the write method is static on that class, the JVM executes write as if it were TestOvClass.write() instead of running the method on the TestThisClass object the variable is referring to.

    First, am I thinking of this in the right way?

    Next, can we still say the method is overridden even if we do not get the polymorphic behavior? Is overriding merely a question for the compiler? If so then we can say yes, the compiler allows the override. Or is override a question for execution where we expect to benefit from polymorphism?

    I can just imagine an exam question that would ask if the write method is overridden in TestThisClass. My response at this point is "yes, and no".

    Thanks!
    Doug