Last Updated: 21 Nov 2020
General CS Questions
- What is a function?
- What's recursion? What's a recursive function?
- What does it mean to pass something by reference? By value? What's a pointer?
- What's a datatype? What are some common datatypes? What is static (or strong) typing vs. loose typing? Which one is better and why do you think so?
- What's an exception? What are some reasons you might want to have an exception hierarchy?
Object Oriented Concepts
- What's an object? What's the difference between object oriented and procedural programming?
- What's a constructor? Destructor? How are they typically used?
- Explain public vs. private vs. protected.
- What is inheritance?
- What's an abstract class? What about an interface? What's the difference?
- What does it mean to override a method? Advanced question: how can you prevent a method from being overridden (e.g. the keyword
- What does it mean to overload a method? (Note that not all OO languages support overloading)
- What's an instance method/property vs a class (or static) method/property?
- What does it mean for a set of objects to be 'loosely coupled' vs. 'tightly coupled'? What are the advantages & disadvantages of each?
- Explain the difference between a simple and complex data type.
- What's an associative array vs an indexed array? (note that not all languages have associative arrays)
- Explain what a linked list is. Explain how it works, and how it is different than an array. Optional: write code to create one.
- What's a stack? How's that different than a queue?
- What is depth first search vs. breadth first search? Write/describe an algorithm for each.
- Ask about the various sorting algorithms, e.g. insertion sort, merge sort & quicksort
- Explain the following design patterns (any or all):
- Abstract factory
- Singleton (and Multiton; somewhat less common than Singleton)
- Adapter or Wrapper
- MVC (Model/View/Controller)
- Facade (also Proxy)
- Observer and/or Publish/Subscribe
- Template method