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 
- None
 
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.
 
