Use Java Enums to Model Finite States

Quick Overview

Explain how Java enums represent a finite state vocabulary and improve type safety. Distinguish valid state values from legal transitions, and discuss persistence, concurrency, and when a richer state model may be needed.

Use Java Enums to Model Finite States

Company: Citi

Role: Software Engineer

Category: Software Engineering Fundamentals

Difficulty: easy

Interview Round: Technical Screen

What is an enum in Java, and why is it useful when programming a system with a finite set of states? Explain how an enum improves the representation and what additional logic is still needed to enforce valid state transitions. ### Constraints & Assumptions - Discuss Java enum types rather than integer constants in another language. - You may choose a small illustrative state machine, but its states and transitions are practice examples. - Distinguish a valid state value from a valid transition between two states. ### Clarifying Questions to Ask - Are the states fixed at compile time, or must new states be added dynamically? - Should the example emphasize state representation or transition behavior? ```hint A variable can hold a valid enum constant while the transition that produced that value is still illegal for the application. ``` ### What a Strong Answer Covers Explain named enum instances, type safety, readable comparisons, and the ability to associate behavior with states. Show why finite-state code benefits, identify where transition validation belongs, and discuss the limits of enums when states or their behavior are not fixed. ### Follow-up Questions - Would you persist a state's `ordinal()` as a database identifier? Why or why not? - Does using an enum automatically make state updates thread-safe? - When might a richer state-object design be preferable?

Overview: Explain how Java enums represent a finite state vocabulary and improve type safety. Distinguish valid state values from legal transitions, and discuss persistence, concurrency, and when a richer state model may be needed.

Citi logo
Citi
Oct 23, 2026
easySoftware EngineerTechnical ScreenSoftware Engineering Fundamentals
0
0

What is an enum in Java, and why is it useful when programming a system with a finite set of states? Explain how an enum improves the representation and what additional logic is still needed to enforce valid state transitions.

Constraints & Assumptions

  • Discuss Java enum types rather than integer constants in another language.
  • You may choose a small illustrative state machine, but its states and transitions are practice examples.
  • Distinguish a valid state value from a valid transition between two states.

Clarifying Questions to Ask Guidance

  • Are the states fixed at compile time, or must new states be added dynamically?
  • Should the example emphasize state representation or transition behavior?

What a Strong Answer Covers Guidance

Explain named enum instances, type safety, readable comparisons, and the ability to associate behavior with states. Show why finite-state code benefits, identify where transition validation belongs, and discuss the limits of enums when states or their behavior are not fixed.

Follow-up Questions Guidance

  • Would you persist a state's ordinal() as a database identifier? Why or why not?
  • Does using an enum automatically make state updates thread-safe?
  • When might a richer state-object design be preferable?