= General CS Questions = == CS Concepts == * 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 ''final'')? * 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? == Data Structures == * 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? == Algorithms == * 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 == Design Patterns == * Explain the following design patterns (any or all): * Abstract factory * Factory * Singleton (and Multiton; somewhat less common than Singleton) * Adapter or Wrapper * Bridge * MVC (Model/View/Controller) * Composite * Decorator * Facade (also Proxy) * Iterator * Observer and/or Publish/Subscribe * Strategy * Template method