Home

Awesome

interview study sheet

A quick study sheet I use as a refresher :smile:

Also, there's much more to computer science than these simple topics! There are a multitude of online resources for broadening and deepening your core CS knowledge; https://teachyourselfcs.com/ is one such site.

Data Structures

Array

Linked List

Stacks & Queues

Trees

Binary Tree

Binary Search Tree

AVL Tree

Trie

Hashing

Hash Tables

Heap

Graph

Algorithms

Binary Search

Sorting

Insertion

Bubble

Selection

Merge

Quick

Counting/Bucket

Radix

Graph Search

Depth-first

Breadth-first

Hill-climbing

Best-first

Branch and bound

A*

Dijkstra's

Bellman-Ford

Floyd-Warshall

Other Graph Algorithms

Min Cut & Max Flow

Minimum Spanning Tree

Greedy Algorithms

Dynamic Programming

Other Concepts

General

Asymptotic Notation

Object-oriented Programming

Inspiration from here

Concurrency

Design Patterns

The Internet

HTTP Methods

HTTP Status Codes

Networking

Recursion

Terminal Commands

Git

Math

Combinatorics

Probability

Common Problems

Lots of these taken from this blog.

Just Python Things

Strings

Lists

Sets

Dictionaries

Error Handling

Classes

class Node(ParentClass):
  def __init__(self, val, parent):
    self.val = val
    self.parent = parent
    self.children = []
  def add_child(self, child):
    self.children.append(child)

n = Node("root", None)

Non-Decimal Numbers

File I/O

Bitwise Operators

Magic Methods

Useful Packages

List Functionals

Other

Java Cheatsheet

Program structure

public class Program {
  // main
  public static void main(String[] args) {
    Hello h = new Hello("hi");
    System.out.println(h);
  }
}
public class Hello {
  private String text; // private instance variable
  // constructor
  public Hello(String helloText) {
    text = helloText;
  }
  public String toString() {
    return "Hello" + text;
  }
}

Data Types

Inspired by http://introcs.cs.princeton.edu/java/11cheatsheet/

Programming Languages

A Tiny Bit of C

#include <stdio.h>
int main()
{
   printf("Hello, World!");
   return 0;
}

A Tiny Bit of C++

#include <iostream>
using namespace std;

class Hello {
    std::string name;
  public:
    Hello (std::string newName) { name = newName; }
    std::string hello () { return "Hello " + name; }
};

int main () {
  Hello h ("world");
  cout << h.hello();
  return 0;
}

A Tiny Bit of Ruby

class HelloWorld
   def initialize(name)
      @name = name
   end
   def hello
      puts "Hello #{@name}!"
   end
end

h = HelloWorld.new("World")
h.hello

A Tiny Bit of Go

package main
import "fmt"

type hello struct {
    name string
}
func (h hello) hello() string {
    return "hello " + h.name
}

func main() {
    h := hello{name: "world"}
    fmt.Println(h.hello())
}

Problem-solving Strategies

General categories of problems

Approaching coding interview questions

See https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/

Final Thoughts

Interviews can seem scary, but don't let them stress you out. Honestly, they can be really insightful experiences--I've learned so much on those occasions when interviewers take the time to have a conversation (about code or their work). Just be prepared and confident, and remember that good interviews try to assess your ability to learn and work with a team, not just your knowledge. And, if you get to the stage where you're looking at job offers (congrats!), check out my other guide for things to consider when evaluating a role at a startup!