|
@@ -1,7 +1,5 @@
|
|
|
# Google Interview University
|
|
|
|
|
|
-[中文版本](https://github.com/xitu/google-interview-university/blob/master/README-cn.md)
|
|
|
-
|
|
|
## What is it?
|
|
|
|
|
|
This is my multi-month study plan for going from web developer (self-taught, no CS degree) to Google software engineer.
|
|
@@ -65,6 +63,7 @@ sometimes word-for-word in Google's coaching notes.
|
|
|
- [Implement system routines](#implement-system-routines)
|
|
|
- [String searching & manipulations](#string-searching--manipulations)
|
|
|
- [Final Review](#final-review)
|
|
|
+- [Coding Question Practice](#coding-question-practice)
|
|
|
- [Books](#books)
|
|
|
- [Coding exercises/challenges](#coding-exerciseschallenges)
|
|
|
- [Once you're closer to the interview](#once-youre-closer-to-the-interview)
|
|
@@ -320,7 +319,7 @@ 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.
|
|
|
+Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer.
|
|
|
|
|
|
## Prerequisite Knowledge
|
|
|
|
|
@@ -1184,6 +1183,16 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
|
- [ ] Merge Sort: https://www.youtube.com/watch?v=GCae1WNvnZM
|
|
|
|
|
|
|
|
|
+## Coding Question Practice
|
|
|
+
|
|
|
+- [ ] [Great intro (copied from System Design section): Algorithm design:](http://www.hiredintech.com/algorithm-design/)
|
|
|
+- [ ] [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/)
|
|
|
+- [ ] [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/)
|
|
|
+
|
|
|
+- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php)
|
|
|
+
|
|
|
+- [Exercises for getting better at a given language](http://exercism.io/languages)
|
|
|
+
|
|
|
## Books
|
|
|
|
|
|
### Mentioned in Google Coaching
|
|
@@ -1220,6 +1229,10 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
|
|
|
|
- [ ] [The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info)
|
|
|
|
|
|
+
|
|
|
+ These two were very recommended.
|
|
|
+
|
|
|
+
|
|
|
- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880)
|
|
|
|
|
|
- [ ] [Algorithms and Programming: Problems and Solutions](http://www.amazon.com/Algorithms-Programming-Solutions-Alexander-Shen/dp/0817638474)
|
|
@@ -1238,19 +1251,8 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
|
Once you've learned your brains out, put those brains to work.
|
|
|
Take coding challenges every day, as many as you can.
|
|
|
|
|
|
-Programming Question Prep:
|
|
|
-
|
|
|
-- [ ] [Great intro (copied from System Design section): Algorithm design:](http://www.hiredintech.com/algorithm-design/)
|
|
|
- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/)
|
|
|
- [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/)
|
|
|
-- [ ] [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/)
|
|
|
-- [ ] [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/)
|
|
|
-
|
|
|
-- [MIT Interview Materials](https://courses.csail.mit.edu/iap/interview/materials.php)
|
|
|
-
|
|
|
-- [Exercises for getting better at a given language](http://exercism.io/languages)
|
|
|
-
|
|
|
-Programming:
|
|
|
|
|
|
- [LeetCode](https://leetcode.com/)
|
|
|
- [TopCoder](https://www.topcoder.com/)
|
|
@@ -1584,16 +1586,20 @@ You're never really done.
|
|
|
- [ ] [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html)
|
|
|
- [ ] [Practical Guide to implementing Neural Networks in Python](using Theano)])http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/)
|
|
|
- Courses:
|
|
|
- - [ ] [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning)
|
|
|
+ - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning)
|
|
|
- [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW)
|
|
|
- see videos 12-18 for a review of linear algebra (14 and 15 are duplicates)
|
|
|
- - [ ] [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks)
|
|
|
- - [ ] [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730)
|
|
|
- - [ ] [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009)
|
|
|
- - [ ] [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive)
|
|
|
- - [ ] [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science)
|
|
|
+ - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks)
|
|
|
+ - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730)
|
|
|
+ - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009)
|
|
|
+ - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive)
|
|
|
+ - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science)
|
|
|
- Resources:
|
|
|
- - Great book: Data Science from Scratch: First Principles with Python: https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X
|
|
|
+ - Books:
|
|
|
+ - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/)
|
|
|
+ - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X)
|
|
|
+ - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/)
|
|
|
+ - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers)
|
|
|
- Data School: http://www.dataschool.io/
|
|
|
|
|
|
- ### Go
|
|
@@ -1653,7 +1659,54 @@ Sit back and enjoy. "netflix and skill" :P
|
|
|
|
|
|
- [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy)
|
|
|
|
|
|
-- [ ] [Discrete Mathematics (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG)
|
|
|
+- [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG)
|
|
|
|
|
|
- [ ] CSE373 - Analysis of Algorithms (25 videos)
|
|
|
- - [Skiena lecture
|
|
|
+ - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1)
|
|
|
+
|
|
|
+- [ ] [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd)
|
|
|
+
|
|
|
+- [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)]( https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C)
|
|
|
+
|
|
|
+- [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_)
|
|
|
+
|
|
|
+- [ ] [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO)
|
|
|
+
|
|
|
+- [ ] [UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)
|
|
|
+
|
|
|
+- [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-)
|
|
|
+
|
|
|
+- [ ] [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq)
|
|
|
+
|
|
|
+- [ ] [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False)
|
|
|
+
|
|
|
+- [ ] [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484)
|
|
|
+
|
|
|
+- [ ] [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi)
|
|
|
+
|
|
|
+- [ ] [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B)
|
|
|
+
|
|
|
+- [ ] [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
|
|
|
+
|
|
|
+- [ ] [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7)
|
|
|
+
|
|
|
+- [ ] [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1)
|
|
|
+
|
|
|
+- [ ] [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c)
|
|
|
+
|
|
|
+- [ ] [HARVARD COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf)
|
|
|
+
|
|
|
+- [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
|
|
+
|
|
|
+- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02)
|
|
|
+
|
|
|
+- [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy)
|
|
|
+ - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/)
|
|
|
+
|
|
|
+- [ ] [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV)
|
|
|
+
|
|
|
+## Computer Science Courses
|
|
|
+
|
|
|
+- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science)
|
|
|
+- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses)
|
|
|
+
|