## Thursday, September 8, 2016

### Technical Interview

This course proivdes resources need to pull off the trick: data structures or a common pattern in the problem. Not every little details like the laws of physics, not at the level of mathematician.
In a real technical interview, you just need to show that you can successfully perform the trick and that you understand the concepts behind it.

# outline

1. Introduction and Efficiency
Course Introduction
Syntax
Efficiency
run time, storage space
rely on you creativity and ability
Notation of Efficiency
big O notation
worst case scenario ; upper bound
2. List-Based Collections
Lists
append(), insert(),remove(elem), sort(), reverse() # these command don’t return new list
pop(index)
Arrays
Stacks
Queues
3. Searching and Sorting
Binary Search
Recursion
Bubble Sort
n^2
memory: O(1), in-position
Merge Sort
n log(n)
Quick Sort
worst case: O(n^2)
average case: nlog(n)
4. Maps and Hashing
Maps
Hashing
Collisions
Hashing Conventions
5. Trees
Trees
Tree Traversal
Binary Trees
Binary Search Trees
Heaps
Self-Balancing Trees
6. Graphs
Graphs
Graph Properties
Graph Representation
Graph Traversal
Graph Paths
7. Case Studies in Algorithms
Shortest Path Problem
greedy algorithm
Knapsack Problem
brute force solution, 2^n
Traveling Salesman Problem
NP hard.
Not always have efficient solution
8. Technical Interview Tips
Mock Interview Breakdown
1 clarifying the question
prove to interviewer that you won’t dive head first into a probelm and potentially waste time writing code that doesn’t solve the initial issue.
2 generating inputs and output
3 generating test cases
handle weird input
4 brainstorming
the interviewer is there to help you and being able to take in their feedback demonstartes your teamwork skills
5 runtime analysis
coding
debugging
Practice with Pramp
Next Steps

### Data Types

``````boolean = True
number = 1.1
string = "Strings can be declared with single or double quotes."
list = ["Lists can have", 1, 2, 3, 4, "or more types together!"]
tuple = ("Tuples", "can have", "more than", 2, "elements!")
dictionary = {'one': 1, 'two': 2, 'three': 3}
variable_with_zero_data = None
``````

### Conditionals

``````if cake == "delicious":
elif cake == "okay":
return "I'll have a small piece."
else:
return "No, thank you."
``````

### Classes

``````class Person(object): # inherit from object
def __init__(self, name, age):
self.name = name
self.age = age

def birthday(self):
self.age += 1
``````