What is the difference between a compiler and an interpreter?
Assesses fundamental understanding of Compilers & Languages conventions, runtime behavior, and memory/performance considerations.
Hiring managers look for precision, avoidance of ambiguous jargon, and ability to explain trade-offs under real production conditions.
A compiler translates the whole program from source into machine code or an intermediate form before it runs, producing an executable. Errors are reported after the whole translation, and the resulting program runs without the compiler present and typically fast, because optimisation happens ahead of time.
An interpreter executes the source directly, reading and evaluating one statement or expression at a time. It starts instantly and gives immediate feedback, which is great for scripting and REPLs, but execution is slower because it re-analyses code as it goes.
compiler: source -> compiler -> machine code -> run
interpreter: source -> interpreter -> output
The line is blurry. Java compiles to bytecode and a JVM interprets or just-in-time compiles it. JavaScript engines parse to bytecode and optimise hot paths at runtime. Python compiles to bytecode then interprets it. Most modern languages mix both strategies for startup speed plus peak performance.
Candidate Response Strategy & Interview Tips
- Start with a concise one-sentence summary: Deliver a direct, confident answer first before expanding into nuances.
- Demonstrate real-world trade-offs: Discuss where this approach excels and when you would avoid it in production systems.
- Discuss complexity & edge cases: Proactively explain time/space complexity or boundary conditions (null values, scale limits).
- Prepare for interviewer follow-ups: Technical hiring panels frequently probe deeper into concurrency, backward compatibility, or alternative libraries.