The following is a list of questions (and answers) that should help as a refresher about topics related to programming languages in general; and to compilation, code execution, programming language internals, run-time program management, in particular.

  1. What is the difference between machine language and assembly language?
  2. What is generally considered the first high-level programming language?
  3. In what way are high-level languages an improvement on assembly language?
  4. Under what circumstances does it still make sense to program in assembler?
  5. What makes a programming language successful?
  6. Why are there so many programming languages?
  7. What distinguishes declarative languages from imperative languages?
  8. Name three languages in each of the following categories: von Neumann, functional, object-orianted; Name two logic languages, and two concurrent languages.
  9. Explain the distinction between interpretation and compilation (advantages and disadvantages)
  10. Is Java compiled or interpreted (or both)? How do you know?
  11. What is the difference between a compiler and a preprocessor?
  12. What is P-code?
  13. What is bootstrapping?
  14. What is a just-in-time compiler?
  15. Name two languages in which a program can write pieces of itself "on the fly"
  16. Describe three unconventional compilers - compilers whose job is not to prepare a high-level program for execution on a microprocessor
  17. List six kinds of tools that commonly support the work of a compiler within a larger programming environment
  18. Explain how an IDE is different than a collection of command-line tools
  19. List the principal phases of compilation; describe the work performed by each
  20. Describe the form in which a program is passed from the scanner to the parser; from parser to semantic analyzer; from semantic analyzer to the intermediate code generator
  21. What distinguishes the front-end of a compiler from the back-end?
  22. What is the difference between a phase and a pass of compilation? Under what circumstances does it make sense for a compiler to have multiple passes?
  23. What is the purpose of a compiler's symbol table?
  24. What is the difference between static and dynamic semantics?
  25. On modern machines do assembly language programmers still tend to write better code than a good compiler can? Why or why not?
  26. What is binding time?
  27. What are the advantages/disadvantages of early binding vs. late binding?
  28. What determines whether an object is allocated statically, on the stack, or dynamically on the heap?
  29. What is a stack pointer?
  30. What is a frame pointer?
  31. What is a calling sequence?
  32. What are internal and external fragmentation?
  33. What is garbage collection?
  34. What is a dangling reference?
  35. What is the difference between lifetime and visibility of a name-to-object binding?
  36. What is meant by "scope" of a name-to-object binding?
  37. What is the difference between a declaration and a definition (and why is it important)?
  38. What are forward references?
  39. What is the purpose of a scope resolution operator?
  40. What is the "closest nested scope rule"?
  41. What is a referencing environment?
  42. What is the difference between static and dynamic scoping?


is the founder of Donaq, a software development consulting company with a focus on mobility. You can find Mike on Google+ and on LinkedIn.
Design copyright (c) Miky Dinescu