Added a Before you Get Started section.

This commit is contained in:
John Washam 2016-10-07 13:24:27 -07:00
parent caee232617
commit 26f45a683c
1 changed files with 55 additions and 20 deletions

View File

@ -26,6 +26,7 @@ sometimes word-for-word in Google's coaching notes.
- [About Video Resources](#about-video-resources)
- [Interview Process & General Interview Prep](#interview-process--general-interview-prep)
- [Pick One Language for the Interview](#pick-one-language-for-the-interview)
- [Before you Get Started](#before-you-get-started)
- [Prerequisite Knowledge](#prerequisite-knowledge)
- [The Daily Plan](#the-daily-plan)
- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis)
@ -179,9 +180,11 @@ I'm on the journey, too. Follow along on my blog at [GoogleyAsHeck.com](https://
## About Video Resources
Some videos are available only by enrolling in a Coursera or EdX class. It is free to do so, but sometimes the classes
are no longer in session so you have to wait a couple of months, so you have no access. I'm going to be adding more videos
from public sources and replacing the online course videos over time. I like using university lectures.
Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs.
It is free to do so, but sometimes the classes are not in session so you have to wait a couple of months, so you have no access.
I'd appreciate your help converting the MOOC video links to public sources to replace the online course videos over time. I like using university lectures.
## Interview Process & General Interview Prep
@ -210,7 +213,6 @@ from public sources and replacing the online course videos over time. I like usi
- [ ] ['How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8)
- [ ] [Failing at Google Interviews](http://alexbowe.com/failing-at-google-interviews/)
## Pick One Language for the Interview
I wrote this short article about it: [Important: Pick One Language for the Google Interview](https://googleyasheck.com/important-pick-one-language-for-the-google-interview/)
@ -237,27 +239,43 @@ Read more about choices:
You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom.
## Prerequisite Knowledge
## Before you Get Started
- [ ] **How computers process a program:**
- [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA)
- [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE)
This list grew over many months, and yes, it kind of got out of hand.
- [ ] **How floating point numbers are stored:**
- [ ] simple 8-bit: [Fractions in binary? (video)](http://math.stackexchange.com/questions/301435/fractions-in-binary)
- [ ] 32 bit: [Representation of Floating Point Numbers - 1 (video)](https://www.youtube.com/watch?v=ji3SfClm8TU)
- [ ] 64 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec)
Here are some mistakes I made so you'll have a better experience.
- [ ] **Computer Arch Intro:**
(first video only - interesting but not required) [Introduction and Basics - Carnegie Mellon - Computer Architecture](https://www.youtube.com/watch?v=zLP_X4wyHbY&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq&index=1)
### 1. You Won't Remember it All
- [ ] **Compilers**
- [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk)
- [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU)
I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going
through my notes and making flashcards so I could review (see below).
### 2. Use Flashcards
To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code.
Each card has different formatting.
I made a mobile-first website so I could review on my phone and tablet, whereever I am.
Make your own for free:
[Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards)
I'll add my set of flashcards to that repo soon so you have access to a lot of cards.
**Note on flashcards:** The first time you recognize you know the answer, don't mark it as known. You have to see the
same card and answer it several times correctly before you really know it. Repetition will put that knowledge deeper in
your brain.
### 3. Review, review, review
I keep a set of cheatsheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time.
Take a break from programming problems for a half hour and go through your flashcards.
## The Daily Plan
Each subject does not require a whole day to be able to understand it fully, and you can do multiple of these in a day.
Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement.
Each day I take one subject from the list below, watch videos about that subject, and write an implementation in:
C - using structs and functions that take a struct * and something else as args.
@ -281,8 +299,25 @@ You can see my code here:
You don't need to memorize the guts of every algorithm.
Write code on a whiteboard, not a computer. Test with some sample inputs.
Then test it out on a computer to make sure it's not buggy from syntax.
Write code on a whiteboard, not a computer. Test with some sample inputs. Then test it out on a computer.
## Prerequisite Knowledge
- [ ] **How computers process a program:**
- [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA)
- [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE)
- [ ] **How floating point numbers are stored:**
- [ ] simple 8-bit: [Fractions in binary? (video)](http://math.stackexchange.com/questions/301435/fractions-in-binary)
- [ ] 32 bit: [Representation of Floating Point Numbers - 1 (video)](https://www.youtube.com/watch?v=ji3SfClm8TU)
- [ ] 64 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec)
- [ ] **Computer Arch Intro:**
(first video only - interesting but not required) [Introduction and Basics - Carnegie Mellon - Computer Architecture](https://www.youtube.com/watch?v=zLP_X4wyHbY&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq&index=1)
- [ ] **Compilers**
- [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk)
- [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU)
## Algorithmic complexity / Big-O / Asymptotic analysis
- nothing to implement