Below is a list of software engineer skills or areas that can be tested and evaluated in an interview context. Use the list below to help you get started, and you’ll soon be developing your own favorite questions and competencies for interviews.

Visit katemats (Kate Matsudaira, “Epic List of Interview Questions”) for the full list of questions.

**Data Structures: Trees & Graphs**

- Given a tree write breadth first search and depth first search, and explain the run time and space requirements.Convert a binary search tree into an ordered array. How do you do this as efficiently as possible?
- Now modify your solutions to handle trees with weighted edges and/or loops and print out the path from start to finish.

- How do you find the 7th element in a binary search tree? How do you generalize the function to find the Nth element? (solution)

**Data Structures: Queues & Stacks**

- Design and implement a stack. Implement the different methods: push, pop, retrieve the minimum element in constant time. (solution)
- Design a queue using stacks as the underlying data structure (solution). Implement a stack using queues as the underlying data structure (solution).

**Data Structures: Hash Tables**

- How do hash tables work?What are some examples of real life hash tables? When is a hash table a poor data choice?
- What are different ways of managing collisions?
- Implement a hash table.

**Teamwork & Collaboration**

- Give examples of project that were completed as a team. Were there any that went better than others? Why? What was different?
- What is the best way to collaborate on a coding project?
- Have you ever had to deal with features that involved multiple people working in the same areas? How did it go? Was there anything that could have been done to improve it?
- Do you do your best work alone or in a group? Does the type of work matter?
- What does it mean to be a good teammate? Have you ever had any bad teammates? If so, did you tell them and give the feedback?