Here are the key differences between the upgrade and regular exams. I will post my experience after taking the upgrade exam in a month.
(CX-310-056) vs. (CX-310-055)
Exam Objectives that are not required for Upgrade exam
Section 1: Declarations, Initialization and Scoping
- Develop code that declares an interface. Develop code that implements or extends one or more interfaces. Develop code that declares an abstract class. Develop code that extends an abstract class.
Section 2: Flow Control
- Develop code that makes use of assertions, and distinguish appropriate from inappropriate uses of assertions.
- Recognize the effect of an exception arising at a specified point in a code fragment. Note that the exception may be a runtime exception, a checked exception, or an error.
Section 3: API Contents
Section 4: Concurrency
- Given a scenario, write code that makes appropriate use of object locking to protect static or instance variables from concurrent access problems.
- Given a scenario, write code that makes appropriate use of wait, notify, or notifyAll.
Section 5: OO Concepts
- Develop code that implements "is-a" and/or "has-a" relationships.
Section 6: Collections / Generics
- Distinguish between correct and incorrect overrides of corresponding hashCode and equals methods, and explain the difference between == and the equals method.
Section 7: Fundamentals
- Given an example of a class and a command-line, determine the expected runtime behavior.
- Determine the effect upon object references and primitive values when they are passed into methods that perform assignments or other modifying operations on the parameters.
- Given a code example, recognize the point at which an object becomes eligible for garbage collection, and determine what is and is not guaranteed by the garbage collection system. Recognize the behaviors of System.gc and finalization.
- Write code that correctly applies the appropriate operators including assignment operators (limited to: =, +=, -=), arithmetic operators (limited to: +, -, *, /, %, ++, --), relational operators (limited to: <, <=, >, >=, ==, !=), the instanceof operator, logical operators (limited to: &, |, ^, !, &&, ||), and the conditional operator ( ? : ), to produce a desired result. Write code that determines the equality of two objects or two primitives.