Merge pull request #1 from jwasham/master

Sync with english version
This commit is contained in:
Anastasios Moraitis
2017-12-12 21:15:20 +02:00
committed by GitHub
13 changed files with 4507 additions and 2649 deletions

4
.gitignore vendored
View File

@ -1,2 +1,6 @@
.idea .idea
personal-9894.md personal-9894.md
# Targets Windows & Unix temporary files
~$*
*~

View File

@ -222,7 +222,7 @@ Print out a "[future Googler](https://github.com/jwasham/google-interview-univer
## אודות גוגל ## אודות גוגל
- [ ] לסטודנטים - [Google Careers: Technical Development Guide](https://www.google.com/about/careers/students/guide-to-technical-development.html) - [ ] לסטודנטים - [Google Careers: Technical Development Guide](https://www.google.com/about/careers/students/guide-to-technical-development.html)
- [ ] איך החיפש עובד: - [ ] איך החיפוש עובד:
- [ ] [The Evolution of Search (video)](https://www.youtube.com/watch?v=mTBShTwCnD4) - [ ] [The Evolution of Search (video)](https://www.youtube.com/watch?v=mTBShTwCnD4)
- [ ] [How Search Works - the story](https://www.google.com/insidesearch/howsearchworks/thestory/) - [ ] [How Search Works - the story](https://www.google.com/insidesearch/howsearchworks/thestory/)
- [ ] [How Search Works](https://www.google.com/insidesearch/howsearchworks/) - [ ] [How Search Works](https://www.google.com/insidesearch/howsearchworks/)
@ -245,7 +245,7 @@ Sometimes the classes are not in session so you have to wait a couple of months,
I like using university lectures. I like using university lectures.
## Interview Process & General Interview Prep ## תהליך הראיון והכנה כללית לראיון
- [ ] סרטונים: - [ ] סרטונים:
- [ ] [איך לעבוד בגוגל: Prepare for an Engineering Interview (video)](https://www.youtube.com/watch?v=ko-KkSmp-Lk) - [ ] [איך לעבוד בגוגל: Prepare for an Engineering Interview (video)](https://www.youtube.com/watch?v=ko-KkSmp-Lk)
@ -1355,15 +1355,15 @@ Supplemental:
See [Book List above](#book-list) See [Book List above](#book-list)
## Coding exercises/challenges ## תרגילי/אתגרי קידוד
Once you've learned your brains out, put those brains to work. ברגע שלמדתם מעל ומעבר, תתחילו להשתמש במה שלמדתם.
Take coding challenges every day, as many as you can. תעשו אתגרי קידוד כל יום, כמה שאתם יכולים.
- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) - [ ] [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/) - [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/)
Challenge sites: אתרים עם אתגרים:
- [LeetCode](https://leetcode.com/) - [LeetCode](https://leetcode.com/)
- [TopCoder](https://www.topcoder.com/) - [TopCoder](https://www.topcoder.com/)
- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems)
@ -1374,7 +1374,8 @@ Challenge sites:
- [Geeks for Geeks](http://www.geeksforgeeks.org/) - [Geeks for Geeks](http://www.geeksforgeeks.org/)
- [InterviewBit](https://www.interviewbit.com/invite/icjf) - [InterviewBit](https://www.interviewbit.com/invite/icjf)
Maybe: ראיונות דמה:
- [Pramp - להתאמן בראיונות קידוד עם אחרים, בחינם](https://www.pramp.com/)
- [Mock interviewers from big companies](http://www.gainlo.co/) - [Mock interviewers from big companies](http://www.gainlo.co/)
## Once you're closer to the interview ## Once you're closer to the interview

134
README.md
View File

@ -12,24 +12,29 @@
Translations: Translations:
- [中文版本](translations/README-cn.md) - [中文版本](translations/README-cn.md)
- [Tiếng Việt - Vietnamese](translations/README-vn.md) - [Tiếng Việt - Vietnamese](translations/README-vi.md)
- translations in progress: - [Español](translations/README-es.md)
- [Español](https://github.com/jwasham/coding-interview-university/issues/80) - [Português Brasileiro](translations/README-ptbr.md)
- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) Translations in progress:
- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) - [עברית](https://github.com/jwasham/coding-interview-university/issues/82)
- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101)
- [French](https://github.com/jwasham/coding-interview-university/issues/89) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98)
- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) - [Turkish](https://github.com/jwasham/coding-interview-university/issues/90)
- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) - [French](https://github.com/jwasham/coding-interview-university/issues/89)
- [Brazilian Portuguese](https://github.com/jwasham/coding-interview-university/issues/113) - [Russian](https://github.com/jwasham/coding-interview-university/issues/87)
- [Korean](https://github.com/jwasham/coding-interview-university/issues/118) - [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106)
- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118)
- [Polish](https://github.com/jwasham/coding-interview-university/issues/122) - [Brazilian Portuguese](https://github.com/jwasham/coding-interview-university/issues/113)
- [German](https://github.com/jwasham/coding-interview-university/issues/135) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117)
- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Polish](https://github.com/jwasham/coding-interview-university/issues/122)
- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140)
- [Thai](https://github.com/jwasham/coding-interview-university/issues/156)
- [Greek](https://github.com/jwasham/coding-interview-university/issues/166)
- [Italian](https://github.com/jwasham/coding-interview-university/issues/170)
- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239)
- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257)
## What is it? ## What is it?
@ -44,7 +49,7 @@ many years of experience and are claiming many years of software engineering exp
If you have many years of software/web development experience, note that large software companies like Google, Amazon, If you have many years of software/web development experience, note that large software companies like Google, Amazon,
Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge. Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge.
If you want to be a reliability engineer or systems engineer, study more from the optional list (networking, security). If you want to be a reliability engineer or operations engineer, study more from the optional list (networking, security).
--- ---
@ -126,8 +131,8 @@ If you want to be a reliability engineer or systems engineer, study more from th
- [Compilers](#compilers) - [Compilers](#compilers)
- [Emacs and vi(m)](#emacs-and-vim) - [Emacs and vi(m)](#emacs-and-vim)
- [Unix command line tools](#unix-command-line-tools) - [Unix command line tools](#unix-command-line-tools)
- [Information theory](#information-theory) - [Information theory](#information-theory-videos)
- [Parity & Hamming Code](#parity--hamming-code) - [Parity & Hamming Code](#parity--hamming-code-videos)
- [Entropy](#entropy) - [Entropy](#entropy)
- [Cryptography](#cryptography) - [Cryptography](#cryptography)
- [Compression](#compression) - [Compression](#compression)
@ -142,7 +147,6 @@ If you want to be a reliability engineer or systems engineer, study more from th
- [Locality-Sensitive Hashing](#locality-sensitive-hashing) - [Locality-Sensitive Hashing](#locality-sensitive-hashing)
- [van Emde Boas Trees](#van-emde-boas-trees) - [van Emde Boas Trees](#van-emde-boas-trees)
- [Augmented Data Structures](#augmented-data-structures) - [Augmented Data Structures](#augmented-data-structures)
- [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees)
- [Balanced search trees](#balanced-search-trees) - [Balanced search trees](#balanced-search-trees)
- AVL trees - AVL trees
- Splay trees - Splay trees
@ -157,8 +161,8 @@ If you want to be a reliability engineer or systems engineer, study more from th
- [Disjoint Sets & Union Find](#disjoint-sets--union-find) - [Disjoint Sets & Union Find](#disjoint-sets--union-find)
- [Math for Fast Processing](#math-for-fast-processing) - [Math for Fast Processing](#math-for-fast-processing)
- [Treap](#treap) - [Treap](#treap)
- [Linear Programming](#linear-programming) - [Linear Programming](#linear-programming-videos)
- [Geometry, Convex hull](#geometry-convex-hull) - [Geometry, Convex hull](#geometry-convex-hull-videos)
- [Discrete math](#discrete-math) - [Discrete math](#discrete-math)
- [Machine Learning](#machine-learning) - [Machine Learning](#machine-learning)
- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
@ -211,6 +215,7 @@ I'm using Github's special markdown flavor, including tasks lists to check progr
- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. - Successful software engineers are smart, but many have an insecurity that they aren't smart enough.
- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ)
- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) - [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY)
- [Believe you can change](http://www.aaronsw.com/weblog/dweck)
## About Video Resources ## About Video Resources
@ -278,7 +283,9 @@ This is a shorter list than what I used. This is abbreviated to save you time.
If you have tons of extra time: If you have tons of extra time:
- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836)
- [ ] [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [ ] Elements of Programming Interviews (Java version)
- [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/)
- [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews)
### Computer Architecture ### Computer Architecture
@ -365,7 +372,6 @@ OR:
- this is the real reason you buy this book. - this is the real reason you buy this book.
- about to get to this part. Will update here once I've made my way through it. - about to get to this part. Will update here once I've made my way through it.
- Can rent it on kindle - Can rent it on kindle
- Half.com is a great resource for textbooks at good prices.
- Answers: - Answers:
- [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition))
- [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/)
@ -373,7 +379,6 @@ OR:
- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844)
- **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently.
- Half.com is a great resource for textbooks at good prices.
- aka CLR, sometimes CLRS, because Stein was late to the game - aka CLR, sometimes CLRS, because Stein was late to the game
- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880)
@ -464,9 +469,9 @@ Why code in all of these?
I may not have time to do all of these for every subject, but I'll try. I may not have time to do all of these for every subject, but I'll try.
You can see my code here: You can see my code here:
- [C] (https://github.com/jwasham/practice-c) - [C](https://github.com/jwasham/practice-c)
- [C++] (https://github.com/jwasham/practice-cpp) - [C++](https://github.com/jwasham/practice-cpp)
- [Python] (https://github.com/jwasham/practice-python) - [Python](https://github.com/jwasham/practice-python)
You don't need to memorize the guts of every algorithm. You don't need to memorize the guts of every algorithm.
@ -496,8 +501,8 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) - [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/)
- [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) - [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59)
- [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) - [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61)
- [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98) - [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98)
- [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc) - [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc)
- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN)
- [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) - [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63)
- [ ] TopCoder (includes recurrence relations and master theorem): - [ ] TopCoder (includes recurrence relations and master theorem):
@ -515,7 +520,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
- Implement an automatically resizing vector. - Implement an automatically resizing vector.
- [ ] Description: - [ ] Description:
- [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays)
- [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s)
- [Basic Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html) - [Basic Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html)
- [Multi-dim (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html) - [Multi-dim (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html)
- [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays)
@ -551,7 +556,8 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
- ### Linked Lists - ### Linked Lists
- [ ] Description: - [ ] Description:
- [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists)
- [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0)
- [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w)
- [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo)
- not the whole video, just portions about Node struct and memory allocation. - not the whole video, just portions about Node struct and memory allocation.
- [ ] Linked List vs Arrays: - [ ] Linked List vs Arrays:
@ -740,7 +746,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
- [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort)
- [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap)
- [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
- [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE)
- [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw)
- [ ] Implement a max-heap: - [ ] Implement a max-heap:
- [ ] insert - [ ] insert
@ -785,10 +791,10 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
- [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1)
- [ ] UC Berkeley: - [ ] UC Berkeley:
- [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I)
- [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk)
- [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc)
- [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4)
- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB)
- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) - [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB)
@ -862,8 +868,8 @@ Graphs can be used to represent many problems in computer science, so this secti
- [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7)
- [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8)
- [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9)
- [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~
- [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k)
- [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
- [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw)
@ -1066,9 +1072,9 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf)
- [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf)
- [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf)
- [ ] [2007: Dynamo: Amazons Highly Available Key-value Store](https://www.akkadia.org/drepper/cpumemory.pdf) - [ ] [2007: Dynamo: Amazons Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf)
- The Dynamo paper kicked off the NoSQL revolution - The Dynamo paper kicked off the NoSQL revolution
- [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf)
- [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) - [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf)
- [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf)
- [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/)
@ -1159,7 +1165,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- The first half is enough. - The first half is enough.
- ### Networking - ### Networking
- **if you have networking experience or want to be a systems engineer, expect questions** - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions**
- otherwise, this is just good to know - otherwise, this is just good to know
- [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro)
- [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8)
@ -1193,7 +1199,8 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- simplicity and robustness - simplicity and robustness
- tradeoffs - tradeoffs
- performance analysis and optimization - performance analysis and optimization
- [ ] **START HERE**: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer)
- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/)
- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023)
- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/)
- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) - [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/)
@ -1266,9 +1273,10 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- [ ] Twitter: - [ ] Twitter:
- [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI)
- [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability)
- For even more, see "Mining Massive Datasets" video series in the Video Series section. - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section.
- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world:
- review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer)
- [System Design from HiredInTech](http://www.hiredintech.com/system-design/)
- [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf)
- flow: - flow:
1. Understand the problem and scope: 1. Understand the problem and scope:
@ -1396,6 +1404,7 @@ Challenge sites:
- [TopCoder](https://www.topcoder.com/) - [TopCoder](https://www.topcoder.com/)
- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems)
- [Codewars](http://www.codewars.com) - [Codewars](http://www.codewars.com)
- [HackerEarth](https://www.hackerearth.com/)
- [HackerRank](https://www.hackerrank.com/) - [HackerRank](https://www.hackerrank.com/)
- [Codility](https://codility.com/programmers/) - [Codility](https://codility.com/programmers/)
- [InterviewCake](https://www.interviewcake.com/) - [InterviewCake](https://www.interviewcake.com/)
@ -1403,16 +1412,19 @@ Challenge sites:
- [InterviewBit](https://www.interviewbit.com/invite/icjf) - [InterviewBit](https://www.interviewbit.com/invite/icjf)
- [Sphere Online Judge (spoj)](http://www.spoj.com/) - [Sphere Online Judge (spoj)](http://www.spoj.com/)
Challenge repos:
- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges)
Mock Interviews: Mock Interviews:
- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview.
- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews
- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies.
## Once you're closer to the interview ## Once you're closer to the interview
- [ ] Cracking The Coding Interview Set 2 (videos): - [ ] Cracking The Coding Interview Set 2 (videos):
- [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo)
- [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo)
- [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak)
## Your Resume ## Your Resume
@ -1475,7 +1487,7 @@ You're never really done.
## Additional Books ## Additional Books
- [ ] [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) - [ ] [The Unix Programming Environment](https://www.amazon.com/dp/013937681X)
- an oldie but a goodie - an oldie but a goodie
- [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/)
- a modern option - a modern option
@ -1653,7 +1665,7 @@ software engineer, and to be aware of certain technologies and algorithms, so yo
- [ ] [MIT Lecture Notes](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/lecture-notes/MIT6_046JS12_lec15.pdf) - [ ] [MIT Lecture Notes](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/lecture-notes/MIT6_046JS12_lec15.pdf)
- ### Augmented Data Structures - ### Augmented Data Structures
- [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc)
- ### Balanced search trees - ### Balanced search trees
- Know least one type of balanced binary tree (and know how it's implemented): - Know least one type of balanced binary tree (and know how it's implemented):
@ -1686,7 +1698,7 @@ software engineer, and to be aware of certain technologies and algorithms, so yo
Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors,
data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory,
networking and file system code) etc. networking and file system code) etc.
- [ ] [CS 61B: Splay Trees (video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - [ ] [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY)
- [ ] MIT Lecture: Splay Trees: - [ ] MIT Lecture: Splay Trees:
- Gets very mathy, but watch the last 10 minutes for sure. - Gets very mathy, but watch the last 10 minutes for sure.
- [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo)
@ -1703,7 +1715,7 @@ software engineer, and to be aware of certain technologies and algorithms, so yo
hashcodes, a Red-Black tree is used. hashcodes, a Red-Black tree is used.
- [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871)
- [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5)
- [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [ ] [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree)
- [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/)
- [ ] **2-3 search trees** - [ ] **2-3 search trees**
@ -1720,7 +1732,7 @@ software engineer, and to be aware of certain technologies and algorithms, so yo
operations on 2-4 trees are also equivalent to color-flipping and rotations in redblack trees. This makes 2-4 trees an operations on 2-4 trees are also equivalent to color-flipping and rotations in redblack trees. This makes 2-4 trees an
important tool for understanding the logic behind redblack trees, and this is why many introductory algorithm texts introduce important tool for understanding the logic behind redblack trees, and this is why many introductory algorithm texts introduce
2-4 trees just before redblack trees, even though **2-4 trees are not often used in practice**. 2-4 trees just before redblack trees, even though **2-4 trees are not often used in practice**.
- [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q)
- [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6)
- [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5)
@ -1758,12 +1770,12 @@ software engineer, and to be aware of certain technologies and algorithms, so yo
- [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list)
- ### Network Flows - ### Network Flows
- [ ] [Ford-Fulkerson in 5 minutes (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs)
- [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0)
- [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI)
- ### Disjoint Sets & Union Find - ### Disjoint Sets & Union Find
- [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI)
- [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t)
- ### Math for Fast Processing - ### Math for Fast Processing
@ -1910,15 +1922,15 @@ Sit back and enjoy. "Netflix and skill" :P
- [ ] CSE373 - Analysis of Algorithms (25 videos) - [ ] CSE373 - Analysis of Algorithms (25 videos)
- [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) - [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 (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd)
- [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) - [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C)
- [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) - [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-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) - [ ] [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) - [ ] ~~[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-) - [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-)

Binary file not shown.

View File

@ -1,8 +1,8 @@
# الإعداد لجوجل # الإعداد لجوجل
Translations: الترجمه:
- [中文版本](translations/README-cn.md) - [中文版本](translations/README-cn.md)
- translations in progress: - الترجمات تحت الاعداد:
- [Español](https://github.com/jwasham/google-interview-university/issues/80) - [Español](https://github.com/jwasham/google-interview-university/issues/80)
- [हिन्दी](https://github.com/jwasham/google-interview-university/issues/81) - [हिन्दी](https://github.com/jwasham/google-interview-university/issues/81)
- [עברית](https://github.com/jwasham/google-interview-university/issues/82) - [עברית](https://github.com/jwasham/google-interview-university/issues/82)
@ -21,7 +21,7 @@ Translations:
هي خطة من عدة أشهر من مطور تطبيقات ويب (قائمة على التعليم الذاتي، ومبدون درجة علمية في علوم الحاسب) لمنصب مهندس برمجيات بجوجل هي خطة من عدة أشهر من مطور تطبيقات ويب (قائمة على التعليم الذاتي، ومبدون درجة علمية في علوم الحاسب) لمنصب مهندس برمجيات بجوجل
![Coding at the whiteboard - from HBO's Silicon Valley](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) ![HBO كتابة الكود علي السبورة - من وادي السيليكون](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg)
هذه القائمة الطويلة تم إعدادها من ملاحظات الإعداد لجوجل، لذلك هي الأشياء مطالب بمعرفتها. هذه القائمة الطويلة تم إعدادها من ملاحظات الإعداد لجوجل، لذلك هي الأشياء مطالب بمعرفتها.
هناك أشياء إضافية أضفتها في آخر القائمة التي ربما تأتي في المقابلة الشخصية أو تساعد في حل المشاكل البرمجية. كتيرا من العناصر من: كتاب ستيف ياج "[احصل على وظيفة بجوجل](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" ومن حين لآخر ملاحظات الإعداد لجوجل. هناك أشياء إضافية أضفتها في آخر القائمة التي ربما تأتي في المقابلة الشخصية أو تساعد في حل المشاكل البرمجية. كتيرا من العناصر من: كتاب ستيف ياج "[احصل على وظيفة بجوجل](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" ومن حين لآخر ملاحظات الإعداد لجوجل.
@ -37,17 +37,17 @@ Translations:
## الفهرس ## الفهرس
- [What is it?](#what-is-it) - [ماهذا؟](#what-is-it)
- [Why use it?](#why-use-it) - [لماذا استخدمه؟](#why-use-it)
- [How to use it](#how-to-use-it) - [كيفية استخدامها](#how-to-use-it)
- [Get in a Googley Mood](#get-in-a-googley-mood) - [الدخول في مزاج جوجلي](#get-in-a-googley-mood)
- [Did I Get the Job?](#did-i-get-the-job) - [هل حصلت علي الوظيفه؟](#did-i-get-the-job)
- [Follow Along with Me](#follow-along-with-me) - [تابعني باستمرار](#follow-along-with-me)
- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) - [هل تشعر أنك لست بالذكاء الكافي](#dont-feel-you-arent-smart-enough)
- [About Google](#about-google) - [عن جوجل](#about-google)
- [About Video Resources](#about-video-resources) - [عن مصادر الفديو](#about-video-resources)
- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) - [مراحل المقابلة الشخصية & الإستعداد العام للمقابلة](#interview-process--general-interview-prep)
- [Pick One Language for the Interview](#pick-one-language-for-the-interview) - [اختر لغة برمجية واحدة للمقابلة البرمجية](#pick-one-language-for-the-interview)
- [Book List](#book-list) - [Book List](#book-list)
- [Before you Get Started](#before-you-get-started) - [Before you Get Started](#before-you-get-started)
- [What you Won't See Covered](#what-you-wont-see-covered) - [What you Won't See Covered](#what-you-wont-see-covered)
@ -195,7 +195,7 @@ Translations:
[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) [More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown)
## Get in a Googley Mood ## الدخول في مزاج جوجلي
Print out a "[future Googler](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)" sign (or two) and keep your eyes on the prize. Print out a "[future Googler](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)" sign (or two) and keep your eyes on the prize.
@ -234,8 +234,8 @@ I'm on the journey, too. Follow along:
## عن جوجل ## عن جوجل
- [ ] For students - [Google Careers: Technical Development Guide](https://www.google.com/about/careers/students/guide-to-technical-development.html) - [ ] لطلبه - [Google Careers: Technical Development Guide](https://www.google.com/about/careers/students/guide-to-technical-development.html)
- [ ] How Search Works: - [ ] كيف يعمل محرك البحث:
- [ ] [The Evolution of Search (video)](https://www.youtube.com/watch?v=mTBShTwCnD4) - [ ] [The Evolution of Search (video)](https://www.youtube.com/watch?v=mTBShTwCnD4)
- [ ] [How Search Works - the story](https://www.google.com/insidesearch/howsearchworks/thestory/) - [ ] [How Search Works - the story](https://www.google.com/insidesearch/howsearchworks/thestory/)
- [ ] [How Search Works](https://www.google.com/insidesearch/howsearchworks/) - [ ] [How Search Works](https://www.google.com/insidesearch/howsearchworks/)
@ -343,7 +343,7 @@ If you have tons of extra time:
- all code is in C++, very good if you're looking to use C++ in your interview - all code is in C++, very good if you're looking to use C++ in your interview
- a good book on problem solving in general. - a good book on problem solving in general.
### Computer Architecture ### بنية الحاسوب
If short on time: If short on time:

View File

@ -1174,7 +1174,7 @@
- [ ] C++ Primer Plus, 6th Edition - [ ] C++ Primer Plus, 6th Edition
- [ ] [《Unxi 环境高级编程》 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) - [ ] [《Unix 环境高级编程》 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)
- [ ] [《编程珠玑》 Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - [ ] [《编程珠玑》 Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880)

File diff suppressed because it is too large Load Diff

View File

@ -1,15 +1,21 @@
# Google Interview University # कोडिंग साक्षात्कार विश्वविद्यालय
>मैं मूल रूप से इसे एक सॉफ़्टवेयर इंजीनियर बनने के लिए अध्ययन विषयों की एक छोटी-छोटी सूची के रूप में बनाया था, लेकिन यह आज की बड़ी सूची में बढ़ी है। इस अध्ययन योजना के माध्यम से जाने के बाद, [मुझे अमेज़ॅन पर सॉफ़्टवेयर डेवलपमेंट इंजीनियर के रूप में काम पर रखा गया है !](https://startupnextdoor.com/ive-been-acquired-by->amazon/?src=ciu) आपको संभवतः जितना मैंने किया उतना ही पढ़ना नहीं होगा। वैसे भी, आपको जो भी चाहिए वह यहां है
>
>यहां सूचीबद्ध आइटम आपको किसी साफ्टवेयर कंपनी के बारे में साक्षात्कार में अच्छी तरह से तैयार करेंगे, जिनमें दिग्गज, अमेज़ॅन, फेसबुक, गूगल या माइक्रोसॉफ्ट शामिल हैं।
>
>आपको शुभकामनाएं!
## यह क्या है? ## यह क्या है?
यह एक बड़ी कंपनी के लिए सॉफ्टवेयर इंजीनियर को वेब डेवलपर (स्वयं सिखाया, कोई सीएस डिग्री नहीं) से जाने के लिए मेरी बहु-महीने की अध्ययन योजना है
यह मेरा वेब डेवलपर से गूगल सॉफ्टवेर इंजिनियर बनाने की अध्ययन योजना हैं.
![Coding at the whiteboard - from HBO's Silicon Valley](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) ![Coding at the whiteboard - from HBO's Silicon Valley](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg)
यह लम्बी सूची **गूगल कोचिंग नोट्स** से उद्धरण एव विस्तारित की गयी हैं, ताकि इन बातो को आपको पता चल सके. मैंने आपके इंटरव्यू में मदद कर सकने वाले कुछ अतिरिक्त विषय सूचि के, आखिर में डाले है. यह नए सॉफ़्टवेयर इंजीनियरों या सॉफ़्टवेयर / वेब विकास से सॉफ़्टवेयर इंजीनियरिंग (जहां कंप्यूटर साइंस ज्ञान आवश्यक है) से स्विच करने के लिए है। यदि आपके पास कई वर्षों का अनुभव है और कई वर्षों के सॉफ्टवेयर इंजीनियरिंग अनुभव का दावा कर रहे हैं, तो एक कठिन साक्षात्कार की अपेक्षा करें।
अनेक विषय, **स्टीव येग्गे** की "[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" से हैं. यदि आपके पास सॉफ्टवेयर / वेब विकास के कई सालों का अनुभव है, तो ध्यान दें कि सॉफ्टवेयर, वेब डेवलपमेंट से भिन्न Google, अमेज़ॅन, फेसबुक और माइक्रोसॉफ्ट दृश्य सॉफ्टवेयर इंजीनियरिंग जैसी बड़ी सॉफ्टवेयर कंपनियों और उन्हें कंप्यूटर साइंस ज्ञान की आवश्यकता होती है।
यदि आप एक विश्वसनीयता इंजीनियर या सिस्टम इंजीनियर बनना चाहते हैं, तो वैकल्पिक सूची (नेटवर्किंग, सुरक्षा) से अधिक जानें।
चाहिए
--- ---
## अनुक्रमणिका ## अनुक्रमणिका
@ -55,7 +61,7 @@
- [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms)
- [गार्बेज कलेक्शन](#garbage-collection) - [गार्बेज कलेक्शन](#garbage-collection)
- [काशेस](#caches) - [काशेस](#caches)
- [Processes and Threads](#processes-and-threads) - [प्रोसेस और थ्रेड](#processes-and-threads)
- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling)
- [Papers](#papers) - [Papers](#papers)
- [Unicode](#unicode) - [Unicode](#unicode)
@ -105,8 +111,6 @@
## इसका उपयोग क्यू करे? ## इसका उपयोग क्यू करे?
मैं यह योजना का अनुपालन गूगल इनेर्विएव के तयारी के लिए कर रहा हूँ. मैं १९९७ से वेब, सर्विसेज और स्टार्टअप का निर्माण कर रहा हूँ. मेरे पास संगणक शात्र की पदवी ना होक अर्थशात्र की पदवी हैं. मैं अपने कैरियर में बहुत सफल रहा हूँ, पर मुजे गूगल में काम करने की इच्छा हें. मैं एक बड़े सिस्टम में प्रगति और कंप्यूटर प्रणालियों की एक असली समझ प्राप्त करना चाहते हु, अल्गोरिथम की निपुणता, डाटा स्ट्रक्चर का निष्पादन,
लो-लेवल भाषाए, और वो कैसे काम करती हें. और अगर आपको एनमेंसे किसी की जानकारी नहीं हे तो गूगल आपको नियुन्क्त नहीं करेगा.
मैंने जब ये परियोजना शुरू की, तब मैं स्टैक और हीप में फरक नहीं जनता था, मुजे नहीं पता था की Big-O क्या हे, ट्रीज क्या हे, या ग्राफ को पार कैसे करते हैं. अगर मुजे छाटने का अल्गोरिथम लिखना पड़ता तो मैं आपको ये बता सकता हु के वो इतना ख़ास नहीं होगा. जो भी डाटा स्ट्रक्चर का मैंने उपयोग किया वो भाषा में समाविष्ट था, और वो कैसे काम करता हे उसकी कोई जानकारी मुजे नहीं थी. मुजे कभी मेमोरी का संचालन नहीं करता पड़ा, जबतक मेरी चलाई कोई प्रोसेस "out of मैंने जब ये परियोजना शुरू की, तब मैं स्टैक और हीप में फरक नहीं जनता था, मुजे नहीं पता था की Big-O क्या हे, ट्रीज क्या हे, या ग्राफ को पार कैसे करते हैं. अगर मुजे छाटने का अल्गोरिथम लिखना पड़ता तो मैं आपको ये बता सकता हु के वो इतना ख़ास नहीं होगा. जो भी डाटा स्ट्रक्चर का मैंने उपयोग किया वो भाषा में समाविष्ट था, और वो कैसे काम करता हे उसकी कोई जानकारी मुजे नहीं थी. मुजे कभी मेमोरी का संचालन नहीं करता पड़ा, जबतक मेरी चलाई कोई प्रोसेस "out of
memory" का एरर न दे, और तब मुजे कोई वैकल्पिक हल धुन्दाना पड़ता था. मैंने मेरी जिन्दगी में बहोत कम मुल्ती-डायमेंशनल ऐरे और बहोत सारे अस्सोसिअतिव् ऐरे का उपयोग किया हे, पर मैंने कोई भी डाटा स्ट्रक्चर शुरू से नहीं लिखा था. memory" का एरर न दे, और तब मुजे कोई वैकल्पिक हल धुन्दाना पड़ता था. मैंने मेरी जिन्दगी में बहोत कम मुल्ती-डायमेंशनल ऐरे और बहोत सारे अस्सोसिअतिव् ऐरे का उपयोग किया हे, पर मैंने कोई भी डाटा स्ट्रक्चर शुरू से नहीं लिखा था.
पर इस अध्ययन योजना का उपयोग करने बाद मेरा नौकरी लगाने का आत्मविश्वास बहोत बढ़ा हें. यह एक लम्बी योजना हें. यह मेरे लिए बहोत महीनोतक चलेगी. अगर आपको ईंमैसे कुछ पता हैं तो आपको कम वक्त लगेगा. पर इस अध्ययन योजना का उपयोग करने बाद मेरा नौकरी लगाने का आत्मविश्वास बहोत बढ़ा हें. यह एक लम्बी योजना हें. यह मेरे लिए बहोत महीनोतक चलेगी. अगर आपको ईंमैसे कुछ पता हैं तो आपको कम वक्त लगेगा.
@ -122,93 +126,32 @@ memory" का एरर न दे, और तब मुजे कोई वै
[Github-flavored markdown की अधिक जानकारी](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) [Github-flavored markdown की अधिक जानकारी](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown)
## गूगली मूड में आ जाएँ ## कभी भी आप चालाक नहीं हो ऐसा ना सोचो
"[फ्यूचर गूगलर](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)" साइन की एक (या दो) प्रिंट निकाले और अपने पुरस्कार को आपने नजरो के सामने रखे. - सफल सॉफ्टवेयर इंजीनियर चालाक होते हें, पर बहुत लोगो असुरक्षा होती है की वो चालाक नहीं हैं !
[![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)
## क्या मुजे नौकरी मिली?
मैंने अभीतक प्रयुक्त नहीं किया हें.
मुजे अभीभी कुछ दींन हे ये सूचि समाप्त करने के लिए, और आगे पुरे हफ्ते से में पूरा दिनप्रोग्रामिंग प्रश्न करने वाला हु. ये कुछ हफ्ते तक चलेगा और फिर मैं मेरे रेफेरेल जो की मैं फेब्रुअरी से रखा हे उससे नौकरी का अर्ज दूंगा.
Thanks for the referral, JP.
## मेरे साथ चले
मैं एक सफ़र पर हु, मेरे साथ चलिए मेरे ब्लॉग से साथ [GoogleyAsHeck.com](https://googleyasheck.com/)
- Twitter: [@googleyasheck](https://twitter.com/googleyasheck)
- Twitter: [@StartupNextDoor](https://twitter.com/StartupNextDoor)
- Google+: [+Googleyasheck](https://plus.google.com/+Googleyasheck)
- LinkedIn: [johnawasham](https://www.linkedin.com/in/johnawasham)
![John Washam - Google Interview University](https://dng5l3qzreal6.cloudfront.net/2016/Aug/book_stack_photo_resized_18_1469302751157-1472661280368.png)
## कभीबी आप चालक नहीं हो ऐसा ना सोचो
- गोगल के अभियंता चालक होते हें, पर बहोत लोगो असुरक्षा होती हे की वो नहीं चालक नहीं हें, जबकि वो गूगल में काम करते हें!
- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ)
## गूगल के बारे में
- [ ] छात्रों के लिए - [Google Careers: Technical Development Guide](https://www.google.com/about/careers/students/guide-to-technical-development.html)
- [ ] सर्च कैसे काम करता हे:
- [ ] [सर्च का विकास (विडियो)](https://www.youtube.com/watch?v=mTBShTwCnD4)
- [ ] [सर्च कैसे काम करता हैं - एक कहानी](https://www.google.com/insidesearch/howsearchworks/thestory/)
- [ ] [सर्च कैसे काम करता हैं](https://www.google.com/insidesearch/howsearchworks/)
- [ ] [सर्च कैसे काम करता हैं - मैट कट्ट्स (विडियो)](https://www.youtube.com/watch?v=BNHR6IQJGZs)
- [ ] [कैसे गूगल अपने सर्च एल्गोरिथ्म में सुधार करता है (विडियो)](https://www.youtube.com/watch?v=J5RZOU6vK4Q)
- [ ] शृंखला:
- [ ] [How Google Search Dealt With Mobile](https://backchannel.com/how-google-search-dealt-with-mobile-33bc09852dc9)
- [ ] [हमारी जरूरत पता लगाने के लिए गूगल का गुप्त अध्ययन ](https://backchannel.com/googles-secret-study-to-find-out-our-needs-eba8700263bf)
- [ ] [गूगल सर्च आपका अगला दिमाग होगा](https://backchannel.com/google-search-will-be-your-next-brain-5207c26e4523)
- [ ] [Demis Hassabis का गहरा मन](https://backchannel.com/the-deep-mind-of-demis-hassabis-156112890d8a)
- [ ] [पुष्तक: गूगल कैसे काम करता हैं](https://www.amazon.com/How-Google-Works-Eric-Schmidt/dp/1455582344)
- [ ] [Made by Google घोषणा - ओक्टोबर २०१६ (विडियो)](https://www.youtube.com/watch?v=spDg-Q7zmcM)
## विडियो संसाधनों के बारे में ## विडियो संसाधनों के बारे में
कुछ विडियो सिर्फ Coursera, EdX, or Lynda.com के वर्ग में दाखिला लेने का बाद ही उपलब्ध हैं. उन्हें MOOC कहा जाता हैं. कुछ विडियो सिर्फ Coursera, EdX, or Lynda.com के वर्ग में दाखिला लेने का बाद ही उपलब्ध हैं. उन्हें MOOC कहा जाता हैं.
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. कभी-कभी कक्षाएं सत्र में नहीं होती हैं इसलिए आपको कुछ महीने इंतजार करना पड़ता है, इसलिए आपके पास पहुंच नहीं है। Lynda.com पाठ्यक्रम मुफ्त नहीं हैं
I'd appreciate your help converting the MOOC video links to public sources to replace the online course विडियो over time. I like using university lectures. I'd appreciate your help converting the MOOC video links to public sources to replace the online course विडियो over time. I like using university lectures.
## इंटरव्यू प्रकिया और साधारण इंटरव्यू तयारी ## इंटरव्यू प्रकिया और साधारण इंटरव्यू तयारी
- [ ] विडियो: [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4)
- [ ] [गूगल में कैसे काम करे - उमीदवार अनुशिक्षण सत्र (विडियो)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1)
- [ ] [गूगल भर्तीकर्ताओं की तकनीकी इंटरव्यू टिप्स (विडियो)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/)
- [ ] [गूगल में कैसे काम करे: तकनीकी रिज्यूमे तयारी (विडियो)](https://www.youtube.com/watch?v=8npJLXkcmu8) [ ] Cracking The Coding Interview Set 1:
- [ ] लेख:
- [ ] [तिन कदमोमे गूगलर बने](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/)
- [ ] [गूगल में वो नौकरी लो](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)
- all the things he mentions that you need to know are listed below
- [ ] _(बहोत पुराना)_ [गूगल में नौकरी कैसे ले, इन्तेविएव प्रश्न, Hiring Process](http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html)
- [ ] [फोन स्क्रीन वाले सवाल](http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions)
- [ ] अतिरिक्त (not suggested by Google but I added):
- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4)
- [ ] [Four Steps To Google Without A Degree](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx)
- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1)
- [ ] [How Google Thinks About Hiring, Management And Culture](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture)
- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/)
- [ ] Cracking The Coding Interview Set 1:
- [ ] [Gayle L McDowell - Cracking The Coding Interview (विडियो)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [Gayle L McDowell - Cracking The Coding Interview (विडियो)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ)
- [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (विडियो)](https://www.youtube.com/watch?v=aClxtDcdpsQ) - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (विडियो)](https://www.youtube.com/watch?v=aClxtDcdpsQ)
- [ ] बड़े ४ मैं नौकरी कैसे ले: - [ ] बड़े ४ मैं नौकरी कैसे ले:
- [ ] ['बड़े ४ मैं नौकरी कैसे ले - Amazon, Facebook, Google और Microsoft' (विडियो)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - [ ] ['बड़े ४ मैं नौकरी कैसे ले - Amazon, Facebook, Google और Microsoft' (विडियो)](https://www.youtube.com/watch?v=YJZCUhxNCv8)
- [ ] [गूगल इंटरव्यू में असफलता](http://alexbowe.com/failing-at-google-interviews/)
## इंटरव्यू के लिए एक संगणक भाषा चुने ## इंटरव्यू के लिए एक संगणक भाषा चुने
मैं इसके बारे में इस छोटे से लेख लिखा था: [महत्वपूर्ण: गूगल इंटरव्यू के लिए एक भाषा चुनें](https://googleyasheck.com/important-pick-one-language-for-the-google-interview/)
इंटरव्यू मैं आप कोंसिभी एक भाषा जिसमे आप आरामदायक हो वो चुन सकते हैं, पर गूगल के लिए निम्नलिखित भाषाएँ अच्छी रहेगी: इंटरव्यू मैं आप कोंसिभी एक भाषा जिसमे आप आरामदायक हो वो चुन सकते हैं, पर गूगल के लिए निम्नलिखित भाषाएँ अच्छी रहेगी:
- C++ - C++
@ -220,18 +163,135 @@ It is free to do so, but sometimes the classes are not in session so you have to
- JavaScript - JavaScript
- Ruby - Ruby
आप भाषा में बहुत सहज हो, और उसकी जानकार होने की जरूरत है. आपको भाषा में बहुत सहज होना चाहिए और जानकार होना चाहिए।
विकल्पों के बारे में अधिक पढ़ें: विकल्पों के बारे में अधिक पढ़ें:
- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/
- http://blog.codingforinterviews.com/best-programming-language-jobs/ - http://blog.codingforinterviews.com/best-programming-language-jobs/
- https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview
[भाषा संसाधनोंको यहाँ देखें](programming-language-resources.md) [भाषा संसाधनोंको यहाँ देखें](programming-language-resources.md)
क्युकी में मैं पढ़ रहा हूँ, आपको कुछ C, C++, और Python शामिल दिखेगा. वहाँ कुछ शामिल किताबें, नीचे आखिर में देख ले. क्युकी में मैं पढ़ रहा हूँ, आपको कुछ C, C++, और Python शामिल दिखेगा. वहाँ कुछ शामिल किताबें, नीचे आखिर में देख ले.
## पुस्तक सूची
यह मैंने जो इस्तेमाल किया था उससे छोटी सूची है यह आपको समय बचाने के लिए संक्षिप्त है
### इंटरव्यू प्रेप
- [ ] प्रोग्रामिंग साक्षात्कार का खुलासा: आपकी अगली नौकरी, दूसरी संस्करण को लैंडिंग करने के लिए रहस्य
- सी ++ और जावा में जवाब
- यह कोडिंग साक्षात्कार के लिए क्रैकिंग के लिए एक अच्छा वार्म-अप है
- बहुत मुश्किल नहीं है, सबसे अधिक समस्याएं आपको साक्षात्कार में जो दिखाई दे रही हैं उससे अधिक आसान हो सकती हैं (मैंने जो पढ़ा है)
- [ ] कोडिंग साक्षात्कार, 6 वें संस्करण
- जावा में जवाब
यदि आपके पास बहुत अधिक समय है:
- [ ] [प्रोग्रामिंग साक्षात्कार के तत्व (सी ++ संस्करण)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836)
- [ ] प्रोग्रामिंग साक्षात्कार के तत्व (जावा संस्करण)
- [किताब](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/)
- [कम्पेनियन प्रोजेक्ट - पुस्तक में हर समस्या के लिए विधि स्टब और टेस्ट](https://github.com/gardncl/elements-of-programming-interviews)
### कंप्यूटर आर्किटेक्चर
यदि कम समय पर:
- [ ] [ग्रेट कोड लिखें: वॉल्यूम 1: मशीन को समझना](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038)
- यह पुस्तक 2004 में प्रकाशित हुई थी, और कुछ समय पुरानी है, लेकिन संक्षिप्त में एक कम्प्यूटर को समझने के लिए यह एक बढ़िया संसाधन है।
- लेखक ने एचएलए का आविष्कार किया, इसलिए नमक के एक अनाज के साथ एचएलए में उल्लेख और उदाहरण ले लीजिए। व्यापक रूप से उपयोग नहीं किया जाता है, लेकिन सभ्य उदाहरण कौन सी की तरह लग रहा है।
- ये अध्याय आपको एक अच्छी नींव देने के लिए पढ़ने योग्य हैं:
- अध्याय 2 - संख्यात्मक प्रतिनिधित्व
- अध्याय 3 - बाइनरी अंकगणित और बिट ऑपरेशंस
- अध्याय 4 - फ़्लोटिंग-प्वाइंट प्रस्तुति
- अध्याय 5 - चरित्र प्रतिनिधित्व
- अध्याय 6 - मेमोरी संगठन और एक्सेस
- अध्याय 7 - संमिश्र डेटा प्रकार और स्मृति वस्तुएं
- अध्याय 9 - सीपीयू वास्तुकला
- अध्याय 10 - निर्देश सेट आर्किटेक्चर
- अध्याय 11 - स्मृति वास्तुकला और संगठन
यदि आपके पास अधिक समय है (मुझे यह किताब चाहिए):
- [ ] [कंप्यूटर वास्तुकला, पांचवें संस्करण: एक मात्रात्मक दृष्टिकोण](https://www.amazon.com/dp/012383872X/)
- एक अमीर, अधिक अप-टू-डेट (2011) के लिए, लेकिन लंबे समय तक उपचार
### भाषा विशिष्ट
**साक्षात्कार के लिए आपको भाषा चुननी होगी (ऊपर देखें)।** यहां मेरी सिफारिशें भाषा के अनुसार हैं मेरे पास सभी भाषाओं के लिए संसाधन नहीं हैं मैं अतिरिक्त स्वागत करता हूँ
यदि आप इनमें से किसी एक को पढ़ते हैं, तो आपको सभी डेटा संरचनाएं और एल्गोरिदम ज्ञान होना चाहिए, आपको कोडिंग समस्याएं शुरू करने की आवश्यकता होगी। **आप इस प्रोजेक्ट में सभी वीडियो व्याख्यान छोड़ सकते हैं** , अगर आप समीक्षा पसंद नहीं करते।
[यहां अतिरिक्त भाषा-विशिष्ट संसाधन हैं]((programming-language-resources.md)
### सी ++
मैंने इन दोनों को नहीं पढ़ा है, लेकिन वे बेहद रेटेड हैं और सेंडविक द्वारा लिखित हैं वह बहुत अच्छा है।
- [ ] [सी ++ में अल्गोरिदम, भाग 1-4: बुनियादी बातों, डेटा संरचना, छंटनी, खोज](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/)
- [ ] [सी ++ भाग 5 में एल्गोरिदम: ग्राफ़ एल्गोरिदम](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/)
यदि आपके पास सी ++ के लिए बेहतर सिफारिश है, तो कृपया मुझे बताएं एक व्यापक संसाधन की तलाश में
### जावा
- [ ] [एल्गोरिदम (सेडगेविक और वेन)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/)
- पुस्तक सामग्री के साथ वीडियो (और सेडगेविक!):
- [एल्गोरिदम I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2)
- [एल्गोरिदम II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd)
या:
- [ ] [जावा में डाटा स्ट्रक्चर और एल्गोरिदम](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/)
- गुडरिक, तामासिया, गोल्डवासेर द्वारा
- यूसी बर्कले में सीएस परिचय पाठ्यक्रम के लिए वैकल्पिक पाठ के रूप में प्रयोग किया जाता है
- नीचे दिए गए अजगर संस्करण पर मेरी पुस्तक रिपोर्ट देखें। यह पुस्तक उसी विषयों को शामिल करती है
### Python
- [ ] [पायथन में डेटा स्ट्रक्चर और एल्गोरिदम](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/)
- गुडरिक, तामासिया, गोल्डवासेर द्वारा
- मुझे यह पुस्तक पसंद है यह सब कुछ और अधिक कवर किया
- पायथनिक कोड
- मेरी चमकती पुस्तक रिपोर्ट: https://startupnextdoor.com/book-report-data-structures-and-lgorithms-in-python/sss
### वैकल्पिक पुस्तकें
**कुछ लोग ये सुझाते हैं, लेकिन मुझे लगता है कि यह ज़्यादा पानी में जा रहा है, जब तक कि आपके पास कई सालों तक सॉफ्टवेयर इंजीनियरिंग अनुभव न हो और बहुत कठिन साक्षात्कार की अपेक्षा करें:**
- [ ] [एल्गोरिदम डिजाइन मैनुअल (स्कीएना)](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202)
- एक समीक्षा और समस्या पहचान के रूप में
- एल्गोरिथ्म सूची हिस्सेदारी आप एक साक्षात्कार में मिल जाएगा कठिनाई के दायरे से परे है।
- इस पुस्तक में 2 भाग हैं:
- डेटा संरचनाओं और एल्गोरिदम पर कक्षा पाठ्यपुस्तक
- पेशेवरों:
- एक अच्छी समीक्षा है क्योंकि किसी भी एल्गोरिदम पाठ्यपुस्तक होंगे
- उद्योग और शिक्षा के क्षेत्र में समस्याओं को सुलझाने के अपने अनुभवों से अच्छी कहानियां
- सी में कोड उदाहरण
- विपक्ष:
- CLRS के रूप में घने या अभेद्य हो सकता है, और कुछ मामलों में, CLRS कुछ विषयों के लिए एक बेहतर विकल्प हो सकता है
- अध्याय 7, 8, 9 का पालन करने की कोशिश करने के लिए दर्दनाक हो सकता है, क्योंकि कुछ वस्तुएं अच्छी तरह समझाई नहीं जाती हैं या मुझे जितना अधिक मस्तिष्क की ज़रूरत नहीं है
- मुझे गलत मत बताना: मुझे स्कीएना, उनकी शिक्षण शैली और व्यवहार, लेकिन मैं स्टोनी ब्रूक सामग्री नहीं हो सकता
- एल्गोरिथ्म सूची:
- यह वास्तविक कारण है कि आप इस पुस्तक को खरीदते हैं।
- इस भाग के बारे में जानने के लिए एक बार मैं इसके माध्यम से अपना रास्ता बना लिया है यहाँ अद्यतन होगा।
- Kindle पर इसे किराए पर कर सकते हैं
- अच्छे दामों पर पाठ्य पुस्तकें के लिए Half.com एक महान संसाधन है
- उत्तर:
- [समाधान की](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition))
- [समाधान की](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/)
- [शुद्धिपत्र](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata)
- [ ] [एल्गोरिदम का परिचय]((https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844))
- **महत्वपूर्ण:** इस पुस्तक को पढ़ना केवल सीमित मूल्य होगा। यह पुस्तक एल्गोरिदम और डेटा संरचनाओं की एक अच्छी समीक्षा है, लेकिन आपको यह नहीं सिखाती कि अच्छे कोड कैसे लिखें। आपको एक सभ्य समाधान को कुशलतापूर्वक कोडित करने में सक्षम होना होगा।
- अच्छे दामों पर पाठ्य पुस्तकें के लिए Half.com एक महान संसाधन है
- उर्फ सीएलआर, कभी कभी सीएलआरएस, क्योंकि स्टीन को खेल में देर हो गई थी
- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880)
- पहले अध्यायों में प्रोग्रामिंग समस्याओं (कुछ बहुत पुराने डेटा टेप का उपयोग करते हुए) के लिए चतुर समाधान प्रस्तुत करते हैं, लेकिन यह सिर्फ एक परिचय है। यह प्रोग्राम डिजाइन और आर्किटेक्चर पर एक गाइडबुक है, जो कोड कोड जैसा है, लेकिन बहुत छोटा है।
- ~~शेन द्वारा "एल्गोरिदम और प्रोग्रामिंग: प्रॉब्लम एंड सॉल्यूशंस"~~
- एक अच्छी किताब, लेकिन कई पन्नों पर समस्याओं के माध्यम से काम करने के बाद मैं पास्कल से निराश हो गया, जबकि लूप, 1-अनुक्रमित सरणियां, और अस्पष्ट पद की स्थिति की संतुष्टि परिणाम
- बल्कि किसी अन्य पुस्तक या ऑनलाइन कोडिंग समस्याओं से कोडिंग समस्याओं पर समय बिताना होगा।
## प्रारंभ करने से पहले ## प्रारंभ करने से पहले
इस सूची में कई महीनों से वृद्धि हुई है, और हाँ, यह एक तरह से हाथ से बाहर हो गयी हैं इस सूची में कई महीनों से वृद्धि हुई है, और हाँ, यह एक तरह से हाथ से बाहर हो गयी हैं
@ -240,34 +300,41 @@ It is free to do so, but sometimes the classes are not in session so you have to
### १. आपसे यह सब याद नहीं होगा ### १. आपसे यह सब याद नहीं होगा
मैंने घंटो वीडिय के विडियो देखे और टिप्पणिया लिखी, और महीनो बाद मुजे कुछ याद नहीं रहा. सबकी समीक्षा करने के लिए मैंने 3 दिन मेरी तिप्पनिओयो और flashcards बनाने में बितायें (नीचे देखें). मैंने घंटो वीडिय के विडियो देखे और टिप्पणिया लिखी, और महीनो बाद मुजे कुछ याद नहीं रहा. सबकी समीक्षा करने के लिए मैंने 3 दिन मेरी तिप्पनिओयो और flashcards बनाने में बितायें
कृपया पढ़ें तो आप मेरी गलतियां नहीं करेंगे:
[कंप्यूटर विज्ञान ज्ञान को बनाए रखना](https://startupnextdoor.com/retaining-computer-science-knowledge/)
### २. फ्लाश्कार्ड्स का उपयोग कीजिये ### २. फ्लाश्कार्ड्स का उपयोग कीजिये
इस समस्या को हल करने के लिए, मैंने एक छोटे से फ्लैशकार्ड साइट बनाई जहां मैं 2 प्रकार के फ्लैशकार्ड जोड़ सकता था: सामान्य और कोड प्रत्येक कार्ड के पास भिन्न स्वरूपण है।
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, wherever I am. अपना खुद का मुफ्त बनाएं:
- [फ़्लैशकार्ड साइट रेपो] (https://github.com/jwasham/computer-science-flash-cards)
- [मेरे फ़्लैश कार्ड डेटाबेस (पुराने - 1200 कार्ड) :](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db)
- [मेरा फ़्लैश कार्ड डेटाबेस (नया - 1800 कार्ड) :](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db)
Make your own for free: ध्यान रखें मैं जहाज़ के ऊपर गया और विधानसभा भाषा और पायथन तुल्यता से लेकर मशीन सीखने और आंकड़ों तक सब कुछ कवर करने वाले कार्ड हैं। इसकी आवश्यकता के लिए यह बहुत अधिक है
- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) **फ्लैशकार्ड्स पर ध्यान दें:** पहली बार जब आप पहचानते हैं कि आपको जवाब पता है, तो इसे ज्ञात के रूप में चिह्नित नहीं करें आपको उसी कार्ड को देखना होगा और उसे सच में पता होना चाहिए इससे पहले कि आप इसे सच में जानते हैं। पुनरावृत्ति आपके दिमाग में गहरा ज्ञान डाल देगा।
- [My flash cards database](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required by Google.
**Note on flashcards:** The first time you recognize you know the answer, don't mark it as known. You have to see the मेरी फ्लैशकार्ड साइट का उपयोग करने का एक विकल्प अनकी है , जिसे कई बार मेरी सिफारिश की गई है यह आपको याद रखने में मदद करने के लिए पुनरावृत्ति प्रणाली का उपयोग करता है यह उपयोगकर्ता के अनुकूल है, सभी प्लेटफ़ॉर्म पर उपलब्ध है और इसमें क्लाउड सिंक सिस्टम है यह आईओएस पर $ 25 का खर्च है, लेकिन अन्य प्लेटफार्मों पर मुफ्त है
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 अनू प्रारूप में मेरा फ्लैशकार्ड डाटाबेस: https://ankiweb.net/shared/info/25173560 (धन्यवाद @ एक्सआईवेनिया )
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.
### 4. Focus ### 3. समीक्षा करें, समीक्षा करें, समीक्षा करें
There are a lot of distractions that can take up valuable time. Focus and concentration is hard. मैं ASCII ओएसआई स्टैक, बिग-ओ नोटेशन और अधिक पर धोखा पत्रों का एक सेट रखता हूं। मेरे पास कुछ खाली समय है जब मैं उन्हें पढ़ता हूं।
एक आधे घंटे के लिए प्रोग्रामिंग समस्याओं से एक ब्रेक ले लो और अपने flashcards के माध्यम से जाना
### 4. फोकस
ऐसे कई विकर्षण हैं जो कि मूल्यवान समय ले सकते हैं फोकस और एकाग्रता कठिन हैं
## इसमे क्या समाविष्ट नहीं हे ## इसमे क्या समाविष्ट नहीं हे
@ -282,77 +349,70 @@ There are a lot of distractions that can take up valuable time. Focus and concen
कुछ विषय एक दिन ले सकते हैं और कुछ ज्यादा.कुचो का सिर्फ पढाई हो सकती हैं पर अमल नहीं हो सकता. कुछ विषय एक दिन ले सकते हैं और कुछ ज्यादा.कुचो का सिर्फ पढाई हो सकती हैं पर अमल नहीं हो सकता.
हर दिन मैं निचली सूचि से एक विषय लेता हु, उसका विडियो देखता हु, और उसका अमल निचे दिए तरह करता हूँ: हर दिन मैं निचली सूचि से एक विषय लेता हु, उसका विडियो देखता हु, और उसका अमल निचे दिए तरह करता हूँ:
  C - struct और function का उपयोग करके जो  struct * या args का  उपयोग करते हैं. - C - struct और function का उपयोग करके जो  struct * या args का  उपयोग करते हैं.
  C++ - built-in types का उपयोग न करके - C++ - built-in types का उपयोग न करके
  C++ - built-in types का उपयोग करके, जैसे STL की std::list, linked list के लिए - C++ - built-in types का उपयोग करके, जैसे STL की std::list, linked list के लिए
  Python - built-in types का उपयोग करके (Python का अभ्यास रखने के लिए) - Python - built-in types का उपयोग करके (Python का अभ्यास रखने के लिए)
and write tests to ensure I'm doing it right, sometimes just using simple assert() statements - और यह सुनिश्चित करने के लिए परीक्षण लिखते हैं कि मैं इसे सही कर रहा हूं, कभी-कभी बस सरल () कथन का उपयोग कर
You may do Java or something else, this is just my thing. - आप जावा या कुछ और कर सकते हैं, यह सिर्फ मेरी बात है
आपको इन सभी की ज़रूरत नहीं है साक्षात्कार के लिए आपको केवल एक ही भाषा की आवश्यकता है
Why code in all of these? इन सब में कोड क्यों?
Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) - अभ्यास, अभ्यास, अभ्यास, जब तक मैं इससे बीमार न हो, और यह कोई समस्या नहीं कर सकता (कुछ बहुत बढ़िया मामलों और याद रखने के लिए बहीखाता विवरण)
Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python)) - कच्ची बाधाओं के भीतर काम करना (कचरा संग्रहण की सहायता के बिना स्मृति को आवंटित करना / मुक्त करना (पायथन को छोड़कर))
Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) - अंतर्निहित प्रकारों का उपयोग करें, इसलिए मुझे वास्तविक दुनिया के उपयोग के लिए निर्मित उपकरणों का उपयोग करने का अनुभव है (उत्पादन में अपनी स्वयं की लिंक्ड सूची कार्यान्वयन नहीं लिखना)
I may not have time to do all of these for every subject, but I'll try. मेरे पास हर विषय के लिए ये सब करने का समय नहीं है, लेकिन मैं कोशिश करूँगा
You can see my code here: आप यहां अपना कोड देख सकते हैं:
- [C] (https://github.com/jwasham/practice-c) - [C](https://github.com/jwasham/practice-c)
- [C++] (https://github.com/jwasham/practice-cpp) - [C++](https://github.com/jwasham/practice-cpp)
- [Python] (https://github.com/jwasham/practice-python) - [Python](https://github.com/jwasham/practice-python)
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. एक व्हाईटबोर्ड या कागज़ पर कोड लिखें, कंप्यूटर नहीं। कुछ नमूना इनपुट के साथ टेस्ट करें फिर इसे कंप्यूटर पर जांचें
## Prerequisite Knowledge ## पूर्वाभ्यास ज्ञान
- [ ] **How computers process a program:** - [ ] **C जानें**
- [ ] [How does CPU execute program (विडियो)](https://www.youtube.com/watch?v=42KTvGYQYnA) - सी हर जगह है आप पुस्तकों, व्याख्यान, वीडियो, हर जगह जब आप पढ़ रहे हैं, में उदाहरण देखेंगे।
- [ ] [Machine Code Instructions (विडियो)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) - [ ] [सी प्रोग्रामिंग भाषा, खंड 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)
- यह एक छोटी पुस्तक है, लेकिन यह आपको सी भाषा पर एक महान संभाल देगा और यदि आप इसे थोड़ा अभ्यास करते हैं तो आपको जल्दी से कुशल मिलेगा। समझना सी आपको यह समझने में मदद करता है कि प्रोग्राम और मेमोरी कैसे काम करते हैं
- [सवालों के जवाब](https://github.com/lekkas/c-algorithms)
- [ ] **How floating point numbers are stored:** - [ ] **कंप्यूटर एक प्रोग्राम की प्रक्रिया कैसे करते हैं:**
- [ ] simple 8-bit: [Fractions in binary? (विडियो)](http://math.stackexchange.com/questions/301435/fractions-in-binary) - [ ] [कैसे सीपीयू प्रोग्राम निष्पादित करता है (वडियो)](https://www.youtube.com/watch?v=42KTvGYQYnA)
- [ ] 32 bit: [Representation of Floating Point Numbers - 1 (विडियो)](https://www.youtube.com/watch?v=ji3SfClm8TU) - [ ] [मशीन कोड निर्देश (वडियो)](https://www.youtube.com/watch?v=Mv2XQgpbTNE)
- [ ] 64 bit: [IEEE754 32-bit floating point binary (विडियो)](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) - लागू करने के लिए कुछ भी नहीं
- [ ] [ हार्वर्ड सीएस 50 - असिमप्टोटीक नोटेशन (वीडियो)](https://www.youtube.com/watch?v=iOq5kSKqeR4)
- [ ] **Compilers** - [ ] [ बिग ओ नोट्स (सामान्य त्वरित ट्यूटोरियल) (वीडियो)](https://www.youtube.com/watch?v=V6mKVRU1evU)
- [ ] [C++ (विडियो)](https://www.youtube.com/watch?v=twodd1KFfGk) - [ ] [ बिग ओ नोटेशन (और ओमेगा और थीटा) - सर्वोत्तम गणितीय व्याख्या (वीडियो)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN)
- [ ] [Understanding Compiler Optimization (C++) (विडियो)](https://www.youtube.com/watch?v=FnGCDLhaxKU)
## Algorithmic complexity / Big-O / Asymptotic analysis
- nothing to implement
- [ ] [Harvard CS50 - Asymptotic Notation (विडियो)](https://www.youtube.com/watch?v=iOq5kSKqeR4)
- [ ] [Big O Notations (general quick tutorial) (विडियो)](https://www.youtube.com/watch?v=V6mKVRU1evU)
- [ ] [Big O Notation (and Omega and Theta) - best mathematical explanation (विडियो)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN)
- [ ] Skiena: - [ ] Skiena:
- [विडियो](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [विडियो](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
- [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) - [स्लाइड](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf)
- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) - [ ] [एल्गोरिथ्म जटिलता विश्लेषण के लिए एक कोमल परिचय](http://discrete.gr/complexity/)
- [ ] [Orders of Growth (विडियो)](https://class.coursera.org/algorithmicthink1-004/lecture/59) - [ ] [विकास के आदेश (वडियो)](https://class.coursera.org/algorithmicthink1-004/lecture/59)
- [ ] [Asymptotics (विडियो)](https://class.coursera.org/algorithmicthink1-004/lecture/61) - [ ] [Asymptotics (विडियो)](https://class.coursera.org/algorithmicthink1-004/lecture/61)
- [ ] [UC बर्कले Big O (विडियो)](https://youtu.be/VIS4YDpuP98) - [ ] [UC बर्कले Big O (विडियो)](https://youtu.be/VIS4YDpuP98)
- [ ] [UC बर्कले Big Omega (विडियो)](https://youtu.be/ca3e7UVmeUc) - [ ] [UC बर्कले Big Omega (विडियो)](https://youtu.be/ca3e7UVmeUc)
- [ ] [Amortized Analysis (विडियो)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] [Amortized Analysis (विडियो)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN)
- [ ] [Illustrating "Big O" (विडियो)](https://class.coursera.org/algorithmicthink1-004/lecture/63) - [ ] [Illustrating "Big O" (विडियो)](https://class.coursera.org/algorithmicthink1-004/lecture/63)
- [ ] TopCoder (includes recurrence relations and master theorem): - [ ] टॉपकोडर (पुनरावृत्ति संबंध और मास्टर प्रमेय भी शामिल है):
- [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [कम्प्यूटेशनल जटिलता: धारा 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/)
- [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [कम्प्यूटेशनल जटिलता: धारा 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/)
- [ ] [Cheat sheet](http://bigocheatsheet.com/) - [ ] [Cheat sheet](http://bigocheatsheet.com/)
If some of the lectures are too mathy, you can jump down to the bottom and
watch the discrete mathematics विडियो to get the background knowledge.
## Data Structures ## डेटा संरचनाएं
- ### Arrays - ### Arrays
- Implement an automatically resizing vector. - एक स्वचालित रीसाइज़िंग वेक्टर को लागू करें
- [ ] Description: - [ ] विवरण:
- [Arrays (विडियो)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [एरे (विडियो)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays)
- [Basic Arrays (विडियो)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html) - [Basic Arrays (विडियो)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html)
- [Multi-dim (विडियो)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html) - [Multi-dim (विडियो)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html)
- [Dynamic Arrays (विडियो)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Dynamic Arrays (विडियो)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays)

View File

@ -230,7 +230,7 @@ I'm in the queue right now. Hope to interview soon.
## 당신은 충분히 똑똑합니다 ## 당신은 충분히 똑똑합니다
- 구글 엔지니어들은 똑똑합니다. 하지만 그들 조차도 자신들의 지적 능력면에 대해서 불안감을 갖기 일쑤입니다. - 구글 엔지니어들은 똑똑합니다. 하지만 그들 조차도 자신들의 지적 능력면에 대해서 불안감을 갖기 일쑤입니다.
- [천재 프로그래머의 미스터리](https://www.youtube.com/watch?v=0SARbwvhupQ) - [천재 프로그래머에 대한 미신(迷信)](https://www.youtube.com/watch?v=0SARbwvhupQ)
- [위험한 홀로서기: 테크 산업의 보이지 않는 괴물들의 전쟁](https://www.youtube.com/watch?v=1i8ylq4j_EY) - [위험한 홀로서기: 테크 산업의 보이지 않는 괴물들의 전쟁](https://www.youtube.com/watch?v=1i8ylq4j_EY)
## 구글에 대해 ## 구글에 대해
@ -253,7 +253,7 @@ I'm in the queue right now. Hope to interview soon.
## 비디오 자료 ## 비디오 자료
##영상 자료에 관하여 ## 영상 자료에 관하여
몇몇 영상들은 Cousera, Edx, Lynda.com 클래스에 등록하여야만 시청이 가능합니다. 이것들은 MOOCs라고 불리는데요. 몇몇 영상들은 Cousera, Edx, Lynda.com 클래스에 등록하여야만 시청이 가능합니다. 이것들은 MOOCs라고 불리는데요.
강의가 없는 경우에는 몇 달 동안 기다려야 할 수도 있습니다. Lynda.com 강좌들은 무료가 아닙니다. 강의가 없는 경우에는 몇 달 동안 기다려야 할 수도 있습니다. Lynda.com 강좌들은 무료가 아닙니다.

1968
translations/README-ptbr.md Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
# Coding Interview University # # Coding Interview University #
>**ดั้งเดิมผมสร้างเพื่อเป็นรายการที่ต้องทำสำหรับหัวข้อที่ต้องศึกษาเพื่อที่จะเป็นวิศวกรรมซอฟต์แวร์ แต่ว่ามันเติบโตขึ้นอย่างมาและมีหัวข้อต่างๆ มากมายอย่าที่คุณเห็นอยู่ทุกวันนี้ >**เดิมทีผมสร้างขึ้นเพื่อเป็นรายการที่ต้องทำสำหรับหัวข้อที่ต้องศึกษาเพื่อที่จะเป็นวิศวกรซอฟต์แวร์ แต่ว่ามันเติบโตขึ้นอย่างมาและมีหัวข้อต่างๆ มากมายอย่าที่คุณเห็นอยู่ทุกวันนี้
หัวข้อต่างๆ นี้จะเป็นสิ่งที่ให้คุณเตรียมตัวสำหรับสัมภาษณ์งานสำหรับบริษัทซอฟต์แวร์รวมทั้งบริษัทซอฟต์แวร์ขนาดใหญ่ของโลกอย่างเช่น Amazon Facebook Google หรือ Microsoft ** หัวข้อต่างๆ นี้จะเป็นสิ่งที่ให้คุณเตรียมตัวสำหรับสัมภาษณ์งานสำหรับบริษัทซอฟต์แวร์รวมทั้งบริษัทซอฟต์แวร์ขนาดใหญ่ของโลกอย่างเช่น Amazon Facebook Google หรือ Microsoft **
> >
> *ขอให้คุณโชคดี!* > *ขอให้คุณโชคดี!*
@ -28,13 +28,13 @@
## นี่คืออะไร ? ## นี่คืออะไร ?
นี่เป็นแผนการศึกษาหลายเดือนของผมจากนักพัฒนาเว็บไซต์ (ด้วยการศึกษาด้วยตัวเอง โดยไม่ได้จบวิทยาการคอมพิวเตอร์) เพื่อจะเป็นวิศวกรรมซอฟต์แวร์ในบริษัทขนาดใหญ่ที่หลายๆ คนต้องการเข้าทำงานด้วย นี่เป็นแผนการศึกษาหลายเดือนของผมจากนักพัฒนาเว็บไซต์ (ด้วยการศึกษาด้วยตัวเอง โดยไม่ได้จบวิทยาการคอมพิวเตอร์) เพื่อจะเป็นวิศวกรซอฟต์แวร์ในบริษัทขนาดใหญ่ที่หลายๆ คนต้องการเข้าทำงานด้วย
![Coding at the whiteboard - from HBO's Silicon Valley](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) ![Coding at the whiteboard - from HBO's Silicon Valley](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg)
บทความนี้สำหรับคนที่อยากเป็น **วิศวกรรมซอฟต์แวร์** หรือต้องการเปลี่ยนมาจากนักพัฒนาซอฟต์แวร์หรือนักพัฒนาเว็บไซด์มาเป็นวิศวกรรมซอฟต์แวร์ (ผู้ซึ่งมีความรู้ความเข้าใจลึกซึ่งในหลักการของวิทยาการคอมพิวเอร์) ถ้าคุณมีประสบการณ์หลายปีและมั่นใจในประสบการณ์การเป็นวิศวกรรมซอฟต์แวร์ของคุณ จะได้เจอการสัมภาษณ์ที่ยากแน่นอน บทความนี้สำหรับคนที่อยากเป็น **วิศวกรซอฟต์แวร์** หรือต้องการเปลี่ยนมาจากนักพัฒนาซอฟต์แวร์หรือนักพัฒนาเว็บไซด์มาเป็นวิศวกรซอฟต์แวร์ (ผู้ซึ่งมีความรู้ความเข้าใจลึกซึ่งในหลักการของวิทยาการคอมพิวเอร์) ถ้าคุณมีประสบการณ์หลายปีและมั่นใจในประสบการณ์การเป็นวิศวกรซอฟต์แวร์ของคุณ จะได้เจอการสัมภาษณ์ที่ยากขึ้นแน่นอน
ถ้าคุณมีประสบการณ์การพัฒนาซอฟต์แวร์หรือเว็บไซต์มาหลายปี แต่ในบริษัทซอฟต์แวร์ขนาดใหญ่ของโลกอย่าง Google Amazon Facebook และ Microsoft มองการพัฒนาซอฟต์แวร์ของวิศวกรรมซอฟต์แวร์ที่ต่างกันออกไปจากการพัฒนาซอฟต์แวร์หรือเว็บไซต์โดยทั่วๆไป และบริษัทที่กล่าวมานี้ก็ต้องการความรู้ทางวิทยาการคอมพิวเตอร์ที่เข้มข้นอย่างมาก ถ้าคุณมีประสบการณ์การพัฒนาซอฟต์แวร์หรือเว็บไซต์มาหลายปี แต่ในบริษัทซอฟต์แวร์ขนาดใหญ่ของโลกอย่าง Google Amazon Facebook และ Microsoft มองการพัฒนาซอฟต์แวร์ของวิศวกรซอฟต์แวร์ที่ต่างกันออกไปจากการพัฒนาซอฟต์แวร์หรือเว็บไซต์โดยทั่วๆไป และบริษัทที่กล่าวมานี้ก็ต้องการความรู้ทางวิทยาการคอมพิวเตอร์ที่เข้มข้นอย่างมาก
ถ้าคุณต้องการเป็นวิศวกรคุณภาพ หรือวิศวกรระบบ คุณอาจจะต้องศึกษาเพิ่มเติมในรายการเพิ่มเติม (ระบบเครือข่าย, ระบบความปลอดภัย) ถ้าคุณต้องการเป็นวิศวกรคุณภาพ หรือวิศวกรระบบ คุณอาจจะต้องศึกษาเพิ่มเติมในรายการเพิ่มเติม (ระบบเครือข่าย, ระบบความปลอดภัย)
@ -55,7 +55,7 @@
- [อะไรที่ไม่ครอบคลุม](#what-you-wont-see-covered) - [อะไรที่ไม่ครอบคลุม](#what-you-wont-see-covered)
- [ความรู้ที่ต้องมีมาก่อน](#prerequisite-knowledge) - [ความรู้ที่ต้องมีมาก่อน](#prerequisite-knowledge)
- [แผนของแต่ละวัน](#the-daily-plan) - [แผนของแต่ละวัน](#the-daily-plan)
- [ขั้นตอนวิธีที่ซับซ้อน / Big-O / การวิเคราะห์ Asymptotic](#algorithmic-complexity--big-o--asymptotic-analysis) - [ความซับซ้อนของขั้นตอนวิธี / Big-O / การวิเคราะห์ Asymptotic](#algorithmic-complexity--big-o--asymptotic-analysis)
- [โครงสร้างข้อมูล](#data-structures) - [โครงสร้างข้อมูล](#data-structures)
- [แถวลำดับ (Arrays)](#arrays) - [แถวลำดับ (Arrays)](#arrays)
- [รายการโยง (Linked Lists)](#linked-lists) - [รายการโยง (Linked Lists)](#linked-lists)
@ -88,7 +88,7 @@
- [การโปรแกรมแบบพลวัต](#dynamic-programming) - [การโปรแกรมแบบพลวัต](#dynamic-programming)
- [การเขียนโปรแกรมเชิงวัตถุ](#object-oriented-programming) - [การเขียนโปรแกรมเชิงวัตถุ](#object-oriented-programming)
- [แบบแผนการออกแบบ](#design-patterns) - [แบบแผนการออกแบบ](#design-patterns)
- [คณิตศาสตร์เชิงการจัด (n เลือก k) & ความน่าจเป็น](#combinatorics-n-choose-k--probability) - [คณิตศาสตร์เชิงการจัด (n เลือก k) & ความน่าจเป็น](#combinatorics-n-choose-k--probability)
- [กลุ่มปัญหาเอ็นพี (NP), เอ็นพีบริบูรณ์ (NP-Complete) และ ระเบียบวิธีการประมาณการ](#np-np-complete-and-approximation-algorithms) - [กลุ่มปัญหาเอ็นพี (NP), เอ็นพีบริบูรณ์ (NP-Complete) และ ระเบียบวิธีการประมาณการ](#np-np-complete-and-approximation-algorithms)
- [แคช](#caches) - [แคช](#caches)
- [กระบวนการ และ เทรด](#processes-and-threads) - [กระบวนการ และ เทรด](#processes-and-threads)
@ -108,7 +108,7 @@
- [แบบฝึกหัดและความท้ายทายของการเขียนโปรแกรม](#coding-exerciseschallenges) - [แบบฝึกหัดและความท้ายทายของการเขียนโปรแกรม](#coding-exerciseschallenges)
- [เมื่อใกล้ถึงวันสัมภาษณ์งาน](#once-youre-closer-to-the-interview) - [เมื่อใกล้ถึงวันสัมภาษณ์งาน](#once-youre-closer-to-the-interview)
- [ประวัติย่อของคุณ](#your-resume) - [ประวัติย่อของคุณ](#your-resume)
- [สิ่งที่คิดไว้เมื่อวันสัมภาษณ์มาถึง](#be-thinking-of-for-when-the-interview-comes) - [สิ่งที่คิดไว้เมื่อวันสัมภาษณ์มาถึง](#be-thinking-of-for-when-the-interview-comes)
- [คำถามสำหรับผู้สัมภาษณ์](#have-questions-for-the-interviewer) - [คำถามสำหรับผู้สัมภาษณ์](#have-questions-for-the-interviewer)
- [เมื่อคุณได้งาน](#once-youve-got-the-job) - [เมื่อคุณได้งาน](#once-youve-got-the-job)
@ -153,27 +153,26 @@
--- ---
## Why use it? ## ทำไมต้องใช้?
When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to ตอนเริ่มโครงการนี้, ผมไม่รู้จัก stack จาก heap เสียด้วยซ้ำ, หรือแม้กระทั้ง Big-O, โครงสร้างต้นไม้
traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. หรือวิธีการเข้าถึงข้อมูลในโครงสร้างกราฟ ถ้าผมต้องได้เขียนโค้ดสำหรับจัดเรียงข้อมูล ผมบอกได้เลยว่ามันต้องออกมาไม่ดีแน่ๆ
Every data structure I've ever used was built into the language, and I didn't know how they worked ทุกๆ โครงสร้างข้อมูลที่เคยใช้ก็ใช้สิ่งที่มีมากับตัวภาษาโปรแกรมที่ใช้ และผมไม่รู้ด้วยซ้ำว่ามันทำงานยังไงในระดับลึกๆ
under the hood at all. I've never had to manage memory unless a process I was running would give an "out of ผมไม่เคยจำเป็นต้องสนใจการเขียนเพื่อให้ใช้หน่วยความจำให้มีประสิทธิภาพ จนกระทั่งระบบเตือนมาโน่นแหละว่า "หน่วยความจำหมด"
memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and จึงจะหาวิธีแก้ขัด ผมใช้โครงสร้างแถวลำดับ (Arrays) หลายมิติน้อยครั้งมากๆ เมื่อเทียบกับโครงสร้างแถวลำดับ (Arrays) แบบปกติ แต่ผมก็ไม่เคยสร้างโครงสร้างข้อมูลขึ้นมาใช้เองเลยสักครั้ง
thousands of associative arrays, but I've never created data structures from scratch.
It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. นี่คือแผนอันยาวไกล คุณอาจต้องใช้เวลาหลายเดือน ถ้าคุณมีความคุ้นเคยมาก่อนหน้านี้ ก็จะทำให้คุณใช้เวลาน้อยลง
## How to use it ## ใช้อย่างไร
Everything below is an outline, and you should tackle the items in order from top to bottom. ทุกสิ่งที่อยู่ด้านล่างนี้เป็นเพียงเค้าโครงเท่านั้น และคุณต้องศึกษาสิ่งเหล่านี้จากบนลงล่างตามลำดับ
I'm using Github's special markdown flavor, including tasks lists to check progress. ผมใช้ เครื่องมือของ Github markdown สำหรับทำ check list เพื่อไว้ดูความก้าวหน้าในแต่ละหัวข้อ
**Create a new branch so you can check items like this, just put an x in the brackets: [x]** **สร้าง branch ใหม่ และคุณจะสามารถติ๊กแต่ละรายการโดยใช้วิธี, เพิ่มอักขระ x ข้างในวงเล็บก้ามปูแบบนี้: [x]**
Fork a branch and follow the commands below Fork branch และใช้คำสั่งดังนี้
`git checkout -b progress` `git checkout -b progress`
@ -181,7 +180,7 @@ I'm using Github's special markdown flavor, including tasks lists to check progr
`git fetch --all` `git fetch --all`
Mark all boxes with X after you completed your changes เลือกทุกกล่องโดยใช้ X หลังจากที่คุณศึกษาเสร็จแล้ว
`git add . ` `git add . `
@ -191,23 +190,23 @@ I'm using Github's special markdown flavor, including tasks lists to check progr
`git push --force ` `git push --force `
[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) [เพิ่มเติมเกี่ยวกับเครื่องมือ markdown ของ Github](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown)
## Don't feel you aren't smart enough ## ห้ามรู้สึกว่าคุณไม่ฉลาดพอ
- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. - วิศวกรซอฟต์แวร์ที่ประสบความสำเร็จนั้นเป็นบุคคลที่ฉลาด แต่หลายคนก็จิตตก คิดว่าตัวเองยังฉลาดไม่พอ
- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ)
- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) - [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY)
## About Video Resources ## เกี่ยวกับแหล่งที่มาของวีดีโอ
Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs. บางวิดีโอนั้น สามารถเข้าถึงได้เฉพาะการลงทะเบียนเรียนใน Coursera, EdX หรือ Lynda.com ซึ่งเรียกว่า MOOCs
Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. Lynda.com courses are not free. บางครั้งคอร์สที่คุณต้องการเข้าไปดูวิดีโอนั้นยังไม่เปิด คุณจำเป็นต้องรอประมาณสองสามเดือน ส่วน Lynda.com นั้นต้องเสียเงิน
I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. ผมยินดีหากคุณช่วยเพิ่มแหล่งความรู้ที่ฟรีและสามารถเข้าถึงได้แบบสาธารณะ เช่น วิดีโอใน YouTube ที่เป็นวิดีโอที่ใช้ในคอร์สเรียนนั้นๆ
I like using university lectures. ซึ่งผมชอบใช้บทเรียนที่มาจากมหาวิทยาลัยต่างๆ
## Interview Process & General Interview Prep ## กระบวนการการสัมภาษณ์และการเตรียมตัว
- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4)
- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1)
@ -222,9 +221,9 @@ Sometimes the classes are not in session so you have to wait a couple of months,
- [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed):
- Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - Learn how to make yourself ready for software engineer interviews from a former Google interviewer.
## Pick One Language for the Interview ## เลือกภาษาสำหรับการสัมภาษณ์
You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: คุณสามารถเลือกภาษาที่คุณถนัดในการสัมภาษณ์ในส่วนของการเขียนโปรแกรม แต่สำหรับบริษัทใหญ่ๆ ภาษาเหล่านี้คือตัวเลือกที่ควรใช้:
- C++ - C++
- Java - Java
@ -237,7 +236,7 @@ You could also use these, but read around first. There may be caveats:
You need to be very comfortable in the language and be knowledgeable. You need to be very comfortable in the language and be knowledgeable.
Read more about choices: อ่านเพิ่มเติม สำหรับภาษาที่ใช้เลือกสอบ:
- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/
- http://blog.codingforinterviews.com/best-programming-language-jobs/ - http://blog.codingforinterviews.com/best-programming-language-jobs/
@ -245,11 +244,11 @@ 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. You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom.
## Book List ## รายชื่อหนังสือ
This is a shorter list than what I used. This is abbreviated to save you time. นี่คือรายชื่อหนังสือที่น้อยกว่าที่ผมใช้ ซึ่งสิ่งเหล่านี้จะช่วยชีวิตของคุณ
### Interview Prep ### เตรียมตัวสัมภาษณ์
- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html)
- answers in C++ and Java - answers in C++ and Java
@ -258,14 +257,14 @@ This is a shorter list than what I used. This is abbreviated to save you time.
- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/)
- answers in Java - answers in Java
If you have tons of extra time: หากคุณมีเวลาพอ:
- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836)
- [ ] [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [ ] [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/)
### Computer Architecture ### สถาปัตยกรรม คอมพิวเตอร์
If short on time: หากคุณมีเวลาน้อย:
- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038)
- The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief.
@ -281,55 +280,55 @@ If short on time:
- Chapter 10 - Instruction Set Architecture - Chapter 10 - Instruction Set Architecture
- Chapter 11 - Memory Architecture and Organization - Chapter 11 - Memory Architecture and Organization
If you have more time (I want this book): หากคุณมีเวลาพอ (ผมอยากได้เล่มนี้):
- [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) - [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/)
- For a richer, more up-to-date (2011), but longer treatment - For a richer, more up-to-date (2011), but longer treatment
### Language Specific ### สำหรับแต่ละภาษา
**You need to choose a language for the interview (see above).** Here are my recommendations by language. I don't have resources for all languages. I welcome additions. **คุณต้องเลือกภาษาที่จะใช้สัมภาษณ์ (ดูด้านบน).** นี่หนังสือที่ผมแนะนำแยกตามแต่ละภาษา ผมมีไม่ครบทุกภาษา และผมยินดีที่จะเพิ่มในภายหลัง
If you read though one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. ถ้าคุณอ่านเล่มใดเล่มนึงจนจบ คุณควรจะมีความรู้ความเข้าใจในโครงสร้างข้อมูลและอัลกอริธึม เพื่อเริ่มทำโจทย์แก้ปัญหาได้
**You can skip all the video lectures in this project**, unless you'd like a review. **คุณไม่ต้องดูวิดีสอนใดๆ ในนี้ก็ได้**, นอกเสียจากคุณต้องการจะทบทวน
[Additional language-specific resources here.](programming-language-resources.md) [แหล่งทรัพยกรอื่นๆ ที่เกี่ยวข้อง](programming-language-resources.md)
### C++ ### C++
I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome. ผมยังไม่เคยอ่านสองเล่มนี้ แต่สองเล่มนี้แนะนำอย่างแรงและมีการรีวิวโดย Sedgewick พ่อหนุ่มคนนี้เค้าเจ๋งนะ
- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/)
- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) - [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/)
If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. ถ้าคุณมีเล่มอื่นที่ดีกว่าอยากแนะนำสำหรับ C++ บอกให้ผมทราบได้เลย ตอนนี้กำลังหาแหล่งที่มีเนื้อหาครอบคลุมทุกด้านอยู่
### Java ### Java
- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/)
- videos with book content (and Sedgewick!): - วิดีโอสำหรับหนังสือเหล่านี้ (and Sedgewick!):
- [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2)
- [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd)
OR: หรือ:
- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/)
- by Goodrich, Tamassia, Goldwasser - โดย Goodrich, Tamassia, Goldwasser
- used as optional text for CS intro course at UC Berkeley - ใช้เป็นหนังสือเสริมในหลักสูตร CS intro ที่ UC Berkeley
- see my book report on the Python version below. This book covers the same topics. - see my book report on the Python version below. This book covers the same topics.
### Python ### Python
- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/)
- by Goodrich, Tamassia, Goldwasser - โดย Goodrich, Tamassia, Goldwasser
- I loved this book. It covered everything and more. - ผมรักเล่มนี้เลย เล่มนี้ครอบคลุมทุกสิ่งและอีกมากมาย
- Pythonic code - Pythonic code
- my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/
### Optional Books ### หนังสืออื่นๆ
**Some people recommend these, but I think it's going overboard, unless you have many years of software engineering experience and expect a much harder interview:** **หลายคนแนะนำหนังสือเหล่านี้ แต่ผมคิดว่ามันนอกเหนือขอบเขตไปหน่อย หรืออย่างน้อยคุณต้องมีประสบการณ์ในวิศวกรรมซอฟต์แวร์หลายปีและคาดหวังการสัมภาษณ์ที่ยากๆ:**
- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena)
- As a review and problem recognition - As a review and problem recognition
@ -368,35 +367,35 @@ OR:
- Would rather spend time on coding problems from another book or online coding problems. - Would rather spend time on coding problems from another book or online coding problems.
## Before you Get Started ## ก่อนที่จะเริ่มต้น
This list grew over many months, and yes, it kind of got out of hand. This list grew over many months, and yes, it kind of got out of hand.
Here are some mistakes I made so you'll have a better experience. Here are some mistakes I made so you'll have a better experience.
### 1. You Won't Remember it All ### 1. คุณไม่สามารถจำได้ทุกสิ่งอย่าง
I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going ผมดูวิดีโอหลายชั่วโมงและจดโน้ตไว้ หลายเดือนต่อมาพบว่า ผมจำสิ่งต่างๆ ได้น้อยมา ผมใช้เวลา 3 เดือน
through my notes and making flashcards so I could review. อ่านโน๊ตและทำ flashcard ซึ่งนั่นทำให้ผมได้ทบทวนเนื้อหา
Read please so you won't make my mistakes: โปรดอ่านตรงนี้ก่อนและคุณจะได้ไม่ต้องทำผิดแบบผม:
[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/) [Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/)
### 2. Use Flashcards ### 2. ใช้ Flashcards
To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. ในการแก้ปัญหานี้ ผมได้สร้างเว็บ flashcard เล็กๆ โดยมี 2 ชนิดคือ: ทั่วไป และ โค้ด
Each card has different formatting. แต่ละการ์ดจะมีรูปแบบต่างกัน
I made a mobile-first website so I could review on my phone and tablet, wherever I am. ผมทำเว็บที่รองรับอุกรณ์มือถือ ซึ่งผมจะได้สามารถทบทวนในโทรศัพท์หรือแทบเล็ต ที่ใดก็ได้
Make your own for free: คุณสามารถทำได้แบบฟรีๆ:
- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards)
- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): - [คลัง flash card ของผม (เก่า - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db):
- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): - [คลัง flash cards ของผม (ใหม่- 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db):
Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. คลังการ์ดของผมนั้น เนื้อหาจะครอบคลุมเกินเนื้อหาหลัก ตั้งแต่ภาษา assembly และ Python จนไปถึง machine learning และ สถิติ ซึ่งมันก็เกินกว่าที่เราต้องการ
**Note on flashcards:** The first time you recognize you know the answer, don't mark it as known. You have to see the **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 same card and answer it several times correctly before you really know it. Repetition will put that knowledge deeper in
@ -407,68 +406,68 @@ It's user-friendly, available on all platforms and has a cloud sync system. It c
My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya))
### 3. Review, review, review ### 3. ทบทวน, ทบทวน, ทบทวน
I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. I keep a set of cheat sheets 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. Take a break from programming problems for a half hour and go through your flashcards.
### 4. Focus ### 4. เพ่งสมาธิ
There are a lot of distractions that can take up valuable time. Focus and concentration are hard. There are a lot of distractions that can take up valuable time. Focus and concentration are hard.
## What you won't see covered ## อะไรที่ไม่ครอบคลุม
These are prevalent technologies but not part of this study plan: เทคโนโลยีเหล่านี้ถูกใช้แพร่หลาย แต่จะไม่อยู่ในแผนการเรียนนี้ ได้แก่:
- SQL - SQL
- Javascript - Javascript
- HTML, CSS, and other front-end technologies - HTML, CSS, และ เทคโนโลยี front-end อื่นๆ
## The Daily Plan ## แผนของแต่ละวัน
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. - C - using structs and functions that take a struct * and something else as args.
- C++ - without using built-in types - C++ - without using built-in types
- C++ - using built-in types, like STL's std::list for a linked list - C++ - using built-in types, like STL's std::list for a linked list
- Python - using built-in types (to keep practicing Python) - Python - using built-in types (to keep practicing Python)
- and write tests to ensure I'm doing it right, sometimes just using simple assert() statements - and write tests to ensure I'm doing it right, sometimes just using simple assert() statements
- You may do Java or something else, this is just my thing. - คุณอาจใช้ Java หรือ ภาษาอื่นๆ ได้เช่นกัน ผมใช้เฉพาะข้างต้นนี้
You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). คุณไม่จำเป็นต้องฝึกทั้งหมดนี้ คุณต้องการเฉพาะ [ภาษาเดียวที่จะใช้สอบสัมภาษณ์](#pick-one-language-for-the-interview).
Why code in all of these? ทำไมต้องโค้ดทั้งหมดนี้?
- Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) - ฝึกฝน, ฝึกฝน, ฝึกฝน, จนผมเอียนกับมัน และสามารถทำมันได้โดยไม่ติดปัญหาอะไร (บางอันมีรายละเอียดปลีกย่อยที่ต้องจำ)
- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python)) - Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python))
- Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) - Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production)
I may not have time to do all of these for every subject, but I'll try. ผมอาจจะมีเวลาไม่พอที่จะทำทั้งหมดทุกหัวข้อ แต่ผมก็ลองทำ
You can see my code here: คุณสามารถดูโค้ดของผมได้:
- [C] (https://github.com/jwasham/practice-c) - [C] (https://github.com/jwasham/practice-c)
- [C++] (https://github.com/jwasham/practice-cpp) - [C++] (https://github.com/jwasham/practice-cpp)
- [Python] (https://github.com/jwasham/practice-python) - [Python] (https://github.com/jwasham/practice-python)
You don't need to memorize the guts of every algorithm. You don't need to memorize the guts of every algorithm.
Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. เขียนโค้ดลงกระดานหรือกระดาษ ไม่ใช่ในเครื่องคอมพิวเตอร์ ทดสอบโดยใช้ข้อมูลตัวอย่าง จากนั้นลองรันจริงๆ ในเครื่องคอมพิวเตอร์
## Prerequisite Knowledge ## ความรู้พื้นฐานที่จำเป็น
- [ ] **Learn C** - [ ] **เรียนรู้ภาษา C**
- C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. - ภาษา C มีอยู่ทุกหนแห่ง คุณจะเห็นตัวอย่างต่างๆ ในหนังสือ บทเรียน วิดีโอ *ทุกหนแห่ง* ในขณะที่คุณศึกษาอยู่
- [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)
- This is a short book, but it will give you a great handle on the C language and if you practice it a little - This is a short book, but it will give you a great handle on the C language and if you practice it a little
you'll quickly get proficient. Understanding C helps you understand how programs and memory work. you'll quickly get proficient. Understanding C helps you understand how programs and memory work.
- [answers to questions](https://github.com/lekkas/c-algorithms) - [answers to questions](https://github.com/lekkas/c-algorithms)
- [ ] **How computers process a program:** - [ ] **คอมพิวเตอร์จัดการกับโปรแกรมอย่างไร:**
- [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA)
- [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE)
## Algorithmic complexity / Big-O / Asymptotic analysis ## ความซับซ้อนของขั้นตอนวิธี / Big-O / การวิเคราะห์ Asymptotic
- nothing to implement - nothing to implement
- [ ] [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) - [ ] [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4)
- [ ] [Big O Notations (general quick tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU) - [ ] [Big O Notations (general quick tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU)
@ -492,9 +491,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
If some of the lectures are too mathy, you can jump down to the bottom and If some of the lectures are too mathy, you can jump down to the bottom and
watch the discrete mathematics videos to get the background knowledge. watch the discrete mathematics videos to get the background knowledge.
## Data Structures ## โครงสร้างข้อมูล
- ### Arrays - ### แถวลำดับ (Arrays)
- Implement an automatically resizing vector. - Implement an automatically resizing vector.
- [ ] Description: - [ ] Description:
- [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays)
@ -1770,7 +1769,7 @@ software engineer, and to be aware of certain technologies and algorithms, so yo
- ### Discrete math - ### Discrete math
- see videos below - see videos below
- ### Machine Learning - ### การเรียนรู้ของเครื่อง (Machine Learning)
- [ ] Why ML? - [ ] Why ML?
- [ ] [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - [ ] [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70)
- [ ] [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - [ ] [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY)
@ -1933,8 +1932,7 @@ Sit back and enjoy. "Netflix and skill" :P
- [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) - [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd)
## Computer Science Courses ## หลักสูตร วิทยาการคอมพิวเตอร์
- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [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) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses)

View File

@ -28,17 +28,13 @@ Original: [англійською](README.md)
--- ---
## Table of Contents ## Таблиця контенту
- [What is it?](#what-is-it) - [Що це?](#Що-це)
- [Why use it?](#why-use-it) - [Чому це використовувати?](#Чому-це-використовувати)
- [How to use it](#how-to-use-it) - [Як це використовувати](#Як-це-використовувати)
- [Get in a Googley Mood](#get-in-a-googley-mood) - [Не почувайтесь недостатньо розумними](#Не-почувайтесь-недостатньо-розумними)
- [Did I Get the Job?](#did-i-get-the-job) - [Про відео-ресурси](#about-video-resources)
- [Follow Along with Me](#follow-along-with-me)
- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough)
- [About Google](#about-google)
- [About Video Resources](#about-video-resources)
- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) - [Interview Process & General Interview Prep](#interview-process--general-interview-prep)
- [Pick One Language for the Interview](#pick-one-language-for-the-interview) - [Pick One Language for the Interview](#pick-one-language-for-the-interview)
- [Book List](#book-list) - [Book List](#book-list)
@ -76,6 +72,7 @@ Original: [англійською](README.md)
- traversals: BFS, DFS - traversals: BFS, DFS
- [Even More Knowledge](#even-more-knowledge) - [Even More Knowledge](#even-more-knowledge)
- [Recursion](#recursion) - [Recursion](#recursion)
- [Dynamic Programming](#dynamic-programming)
- [Object-Oriented Programming](#object-oriented-programming) - [Object-Oriented Programming](#object-oriented-programming)
- [Design Patterns](#design-patterns) - [Design Patterns](#design-patterns)
- [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability)
@ -87,6 +84,11 @@ Original: [англійською](README.md)
- [Scheduling](#scheduling) - [Scheduling](#scheduling)
- [Implement system routines](#implement-system-routines) - [Implement system routines](#implement-system-routines)
- [String searching & manipulations](#string-searching--manipulations) - [String searching & manipulations](#string-searching--manipulations)
- [Tries](#tries)
- [Floating Point Numbers](#floating-point-numbers)
- [Unicode](#unicode)
- [Endianness](#endianness)
- [Networking](#networking)
- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience)
- [Final Review](#final-review) - [Final Review](#final-review)
- [Coding Question Practice](#coding-question-practice) - [Coding Question Practice](#coding-question-practice)
@ -101,11 +103,7 @@ Original: [англійською](README.md)
- [Additional Books](#additional-books) - [Additional Books](#additional-books)
- [Additional Learning](#additional-learning) - [Additional Learning](#additional-learning)
- [Dynamic Programming](#dynamic-programming)
- [Compilers](#compilers) - [Compilers](#compilers)
- [Floating Point Numbers](#floating-point-numbers)
- [Unicode](#unicode)
- [Endianness](#endianness)
- [Emacs and vi(m)](#emacs-and-vim) - [Emacs and vi(m)](#emacs-and-vim)
- [Unix command line tools](#unix-command-line-tools) - [Unix command line tools](#unix-command-line-tools)
- [Information theory](#information-theory) - [Information theory](#information-theory)
@ -113,18 +111,17 @@ Original: [англійською](README.md)
- [Entropy](#entropy) - [Entropy](#entropy)
- [Cryptography](#cryptography) - [Cryptography](#cryptography)
- [Compression](#compression) - [Compression](#compression)
- [Networking](#networking) (if you have networking experience or want to be a systems engineer, expect questions)
- [Computer Security](#computer-security) - [Computer Security](#computer-security)
- [Garbage collection](#garbage-collection) - [Garbage collection](#garbage-collection)
- [Parallel Programming](#parallel-programming) - [Parallel Programming](#parallel-programming)
- [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems)
- [A*](#a)
- [Fast Fourier Transform](#fast-fourier-transform) - [Fast Fourier Transform](#fast-fourier-transform)
- [Bloom Filter](#bloom-filter) - [Bloom Filter](#bloom-filter)
- [HyperLogLog](#hyperloglog) - [HyperLogLog](#hyperloglog)
- [Locality-Sensitive Hashing](#locality-sensitive-hashing) - [Locality-Sensitive Hashing](#locality-sensitive-hashing)
- [van Emde Boas Trees](#van-emde-boas-trees) - [van Emde Boas Trees](#van-emde-boas-trees)
- [Augmented Data Structures](#augmented-data-structures) - [Augmented Data Structures](#augmented-data-structures)
- [Tries](#tries)
- [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees) - [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees)
- [Balanced search trees](#balanced-search-trees) - [Balanced search trees](#balanced-search-trees)
- AVL trees - AVL trees
@ -144,41 +141,33 @@ Original: [англійською](README.md)
- [Geometry, Convex hull](#geometry-convex-hull) - [Geometry, Convex hull](#geometry-convex-hull)
- [Discrete math](#discrete-math) - [Discrete math](#discrete-math)
- [Machine Learning](#machine-learning) - [Machine Learning](#machine-learning)
- [Go](#go)
- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
- [Video Series](#video-series) - [Video Series](#video-series)
- [Computer Science Courses](#computer-science-courses) - [Computer Science Courses](#computer-science-courses)
--- ---
## Why use it? ## Чому це використовувати?
I'm following this plan to prepare for my Google interview. I've been building the web, building Я слідую цьому плану, аби підготуватись до мого інтерв'ю в Google. Я займався веб-розробкою, створенням сервісів та запуском стартапів з 1997. У мене економічна освіта, не комп'ютерна.
services, and launching startups since 1997. I have an economics degree, not a CS degree. I've Я досяг успіху в своїй кар'єрі, але я хочу працювати в Google. Я хочу розвиватись, досліджувати більші системи та отримати реальне розуміння комп'ютерних систем, ефективності алгоритмів та структур даних, низько-рівневих мов, і як це все працює. І якщо ви не знаєте чогось з цього списку, Google не найме вас.
been very successful in my career, but I want to work at Google. I want to progress into larger systems
and get a real understanding of computer systems, algorithmic efficiency, data structure performance,
low-level languages, and how it all works. And if you don't know any of it, Google won't hire you.
When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to Коли я розпочинав цей проект, я не міг відрізнити стек від купи, нічого не знав про Big-O, дерева, або як розглянути граф. Якби мені тоді довелось написати алгоритм сортування, то легко можу вас запевнити - він не був би найкращим.
traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. Всі структури даних, які я колись використовував, були вже вбудовані в мову програмування, а я навіть не знав, як вони працюють "під капотом". Мені ніколи не доводилось розбиратись з пам'яттю, окрім випадків, коли я отримував "OutOfMemoryException", тоді мені доводилось шукати вихід з ситуації.
Every data structure I've ever used was built into the language, and I didn't know how they worked Я використовував кілька багатовимірних масивів та тисячі звичайних масивів, проте я ніколи не створював структури даних з нуля.
under the hood at all. I've never had to manage memory unless a process I was running would give an "out of
memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and
thousands of associative arrays, but I've never created data structures from scratch.
But after going through this study plan I have high confidence I'll be hired. It's a long plan. It's going to take me Але, пройшовши цей план навчання, я впевнений, що мене візьмуть на цю роботу. Це дійсно великий план. Він займе місяці, але якщо ви вже знайомі з багатьма речами з цього списку, то, очевидно, ви витратите значно менше часу.
months. If you are familiar with a lot of this already it will take you a lot less time.
## How to use it ## Як це використовувати
Everything below is an outline, and you should tackle the items in order from top to bottom. Весь текст нижче - це список, а вам потрібно пройти всі його елементи зверху вниз.
I'm using Github's special markdown flavor, including tasks lists to check progress. Я використовую спеціальну Github розмітку, щоб відслідковувати свій прогрес.
**Create a new branch so you can check items like this, just put an x in the brackets: [x]**
Fork a branch and follow the commands below **Створіть нову гілку, аби ви могли теж відмічати зроблені задачі, поміщаючи x в квадратні дужки: [x]**
Форкніть собі гілку та введіть команди нижче
`git checkout -b progress` `git checkout -b progress`
@ -186,7 +175,7 @@ I'm using Github's special markdown flavor, including tasks lists to check progr
`git fetch --all` `git fetch --all`
Mark all boxes with X after you completed your changes Відмітьте всі елементи X після того, як завершите свої зміни
`git add . ` `git add . `
@ -196,56 +185,13 @@ I'm using Github's special markdown flavor, including tasks lists to check progr
`git push --force ` `git push --force `
[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) [Більше про Github розмітку](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown)
## Get in a Googley Mood ## Не почувайтесь недостатньо розумними
- Successful software engineers are smart, but many have an insecurity that they aren't smart enough.
Print out a "[future Googler](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)" sign (or two) and keep your eyes on the prize.
[![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)
## Did I Get the Job?
I'm in the queue right now. Hope to interview soon.
Thanks for the referral, JP.
## Follow Along with Me
My story: [Why I Studied Full-Time for 8 Months for a Google Interview](https://medium.com/@googleyasheck/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13)
I'm on the journey, too. Follow along:
- **Blog**: [GoogleyAsHeck.com](https://googleyasheck.com/)
- Twitter: [@googleyasheck](https://twitter.com/googleyasheck)
- Twitter: [@StartupNextDoor](https://twitter.com/StartupNextDoor)
- Google+: [+Googleyasheck](https://plus.google.com/+Googleyasheck)
- LinkedIn: [johnawasham](https://www.linkedin.com/in/johnawasham)
![John Washam - Google Interview University](https://dng5l3qzreal6.cloudfront.net/2016/Aug/book_stack_photo_resized_18_1469302751157-1472661280368.png)
## Don't feel you aren't smart enough
- Google engineers are smart, but many have an insecurity that they aren't smart enough, even though they work at Google.
- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ)
- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) - [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY)
## About Google
- [ ] For students - [Google Careers: Technical Development Guide](https://www.google.com/about/careers/students/guide-to-technical-development.html)
- [ ] How Search Works:
- [ ] [The Evolution of Search (video)](https://www.youtube.com/watch?v=mTBShTwCnD4)
- [ ] [How Search Works - the story](https://www.google.com/insidesearch/howsearchworks/thestory/)
- [ ] [How Search Works](https://www.google.com/insidesearch/howsearchworks/)
- [ ] [How Search Works - Matt Cutts (video)](https://www.youtube.com/watch?v=BNHR6IQJGZs)
- [ ] [How Google makes improvements to its search algorithm (video)](https://www.youtube.com/watch?v=J5RZOU6vK4Q)
- [ ] Series:
- [ ] [How Google Search Dealt With Mobile](https://backchannel.com/how-google-search-dealt-with-mobile-33bc09852dc9)
- [ ] [Google's Secret Study To Find Out Our Needs](https://backchannel.com/googles-secret-study-to-find-out-our-needs-eba8700263bf)
- [ ] [Google Search Will Be Your Next Brain](https://backchannel.com/google-search-will-be-your-next-brain-5207c26e4523)
- [ ] [The Deep Mind Of Demis Hassabis](https://backchannel.com/the-deep-mind-of-demis-hassabis-156112890d8a)
- [ ] [Book: How Google Works](https://www.amazon.com/How-Google-Works-Eric-Schmidt/dp/1455582344)
- [ ] [Made by Google announcement - Oct 2016 (video)](https://www.youtube.com/watch?v=q4y0KOeXViI)
## About Video Resources ## About Video Resources
Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs. Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs.
@ -257,42 +203,25 @@ Sometimes the classes are not in session so you have to wait a couple of months,
## Interview Process & General Interview Prep ## Interview Process & General Interview Prep
- [ ] Videos: - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4)
- [ ] [How to Work at Google: Prepare for an Engineering Interview (video)](https://www.youtube.com/watch?v=ko-KkSmp-Lk) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1)
- [ ] [How to Work at Google: Example Coding/Engineering Interview (video)](https://www.youtube.com/watch?v=XKu_SEDAykw) - [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/)
- [ ] [How to Work at Google - Candidate Coaching Session (video)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs)
- [ ] [Google Recruiters Share Technical Interview Tips (video)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) - [ ] Cracking The Coding Interview Set 1:
- [ ] [How to Work at Google: Tech Resume Preparation (video)](https://www.youtube.com/watch?v=8npJLXkcmu8)
- [ ] Articles:
- [ ] [Becoming a Googler in Three Steps](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/)
- [ ] [Get That Job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)
- all the things he mentions that you need to know are listed below
- [ ] _(very dated)_ [How To Get A Job At Google, Interview Questions, Hiring Process](http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html)
- [ ] [Phone Screen Questions](http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions)
- [ ] Prep Courses:
- [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed):
- Learn how to make yourself ready for software engineer interviews from a former Google interviewer.
- [ ] Additional (not suggested by Google but I added):
- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4)
- [ ] [Four Steps To Google Without A Degree](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx)
- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1)
- [ ] [How Google Thinks About Hiring, Management And Culture](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture)
- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/)
- [ ] Cracking The Coding Interview Set 1:
- [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ)
- [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ)
- [ ] How to Get a Job at the Big 4: - [ ] How to Get a Job at the Big 4:
- [ ] ['How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - [ ] [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/)
- [ ] Prep Course:
- [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed):
- Learn how to make yourself ready for software engineer interviews from a former Google interviewer.
- [ ] [Python for Data Structures, Algorithms, and Interviews! (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/):
- A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more.
## Pick One Language for the Interview ## 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/) You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices:
You can use a language you are comfortable in to do the coding part of the interview, but for Google, these are solid choices:
- C++ - C++
- Java - Java
@ -308,7 +237,6 @@ You need to be very comfortable in the language and be knowledgeable.
Read more about choices: Read more about choices:
- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/
- http://blog.codingforinterviews.com/best-programming-language-jobs/ - http://blog.codingforinterviews.com/best-programming-language-jobs/
- https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview
[See language resources here](programming-language-resources.md) [See language resources here](programming-language-resources.md)
@ -322,19 +250,15 @@ This is a shorter list than what I used. This is abbreviated to save you time.
- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html)
- answers in C++ and Java - answers in C++ and Java
- recommended in Google candidate coaching
- this is a good warm-up for Cracking the Coding Interview - this is a good warm-up for Cracking the Coding Interview
- not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read)
- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/)
- answers in Java - answers in Java
- recommended on the [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/)
- If you see people reference "The Google Resume", it was a book replaced by "Cracking the Coding Interview".
If you have tons of extra time: If you have tons of extra time:
- [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836)
- all code is in C++, very good if you're looking to use C++ in your interview - [ ] [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/)
- a good book on problem solving in general.
### Computer Architecture ### Computer Architecture
@ -397,7 +321,7 @@ OR:
- by Goodrich, Tamassia, Goldwasser - by Goodrich, Tamassia, Goldwasser
- I loved this book. It covered everything and more. - I loved this book. It covered everything and more.
- Pythonic code - Pythonic code
- my glowing book report: https://googleyasheck.com/book-report-data-structures-and-algorithms-in-python/ - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/
### Optional Books ### Optional Books
@ -420,12 +344,6 @@ OR:
- algorithm catalog: - algorithm catalog:
- this is the real reason you buy this book. - this is the real reason you buy this book.
- about to get to this part. Will update here once I've made my way through it. - about to get to this part. Will update here once I've made my way through it.
- To quote Yegge: "More than any other book it helped me understand just how astonishingly commonplace
(and important) graph problems are they should be part of every working programmer's toolkit. The book also
covers basic data structures and sorting algorithms, which is a nice bonus. But the gold mine is the second half
of the book, which is a sort of encyclopedia of 1-pagers on zillions of useful problems and various ways to solve
them, without too much detail. Almost every 1-pager has a simple picture, making it easy to remember. This is a
great way to learn how to identify hundreds of problem types."
- Can rent it on kindle - Can rent it on kindle
- Half.com is a great resource for textbooks at good prices. - Half.com is a great resource for textbooks at good prices.
- Answers: - Answers:
@ -435,7 +353,6 @@ OR:
- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844)
- **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently.
- To quote Yegge: "But if you want to come into your interviews *prepped*, then consider deferring your application until you've made your way through that book."
- Half.com is a great resource for textbooks at good prices. - Half.com is a great resource for textbooks at good prices.
- aka CLR, sometimes CLRS, because Stein was late to the game - aka CLR, sometimes CLRS, because Stein was late to the game
@ -461,7 +378,7 @@ through my notes and making flashcards so I could review.
Read please so you won't make my mistakes: Read please so you won't make my mistakes:
[Retaining Computer Science Knowledge](https://googleyasheck.com/retaining-computer-science-knowledge/) [Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/)
### 2. Use Flashcards ### 2. Use Flashcards
@ -476,7 +393,7 @@ Make your own for free:
- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): - [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db):
- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): - [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db):
Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required by Google. Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required.
**Note on flashcards:** The first time you recognize you know the answer, don't mark it as known. You have to see the **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 same card and answer it several times correctly before you really know it. Repetition will put that knowledge deeper in
@ -499,8 +416,7 @@ There are a lot of distractions that can take up valuable time. Focus and concen
## What you won't see covered ## What you won't see covered
This big list all started as a personal to-do list made from Google interview coaching notes. These are prevalent These are prevalent technologies but not part of this study plan:
technologies but were not mentioned in those notes:
- SQL - SQL
- Javascript - Javascript
@ -710,7 +626,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
- binary search using recursion - binary search using recursion
- ### Bitwise operations - ### Bitwise operations
- [ ] [Bits cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32)
- [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, <<
- [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture))
- [ ] Good intro: - [ ] Good intro:
@ -891,17 +807,19 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
- [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
- [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14)
As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg).
If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
## Graphs ## Graphs
Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were.
- Notes from Yegge: - Notes:
- There are three basic ways to represent a graph in memory: - There are 4 basic ways to represent a graph in memory:
- objects and pointers - objects and pointers
- matrix - adjacency matrix
- adjacency list - adjacency list
- adjacency map
- Familiarize yourself with each representation and its pros & cons - Familiarize yourself with each representation and its pros & cons
- BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code
- When asked a question, look for a graph-based solution first, then move on if none. - When asked a question, look for a graph-based solution first, then move on if none.
@ -932,13 +850,6 @@ Graphs can be used to represent many problems in computer science, so this secti
- Full Coursera Course: - Full Coursera Course:
- [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome)
- Yegge: If you get a chance, try to study up on fancier algorithms:
- [ ] Dijkstra's algorithm - see above - 6.006
- [ ] A*
- [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm)
- [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE)
- [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE)
- I'll implement: - I'll implement:
- [ ] DFS with adjacency list (recursive) - [ ] DFS with adjacency list (recursive)
- [ ] DFS with adjacency list (iterative with stack) - [ ] DFS with adjacency list (iterative with stack)
@ -970,6 +881,31 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad)
- [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc)
- ### Dynamic Programming
- This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky.
- I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved.
- [ ] Videos:
- the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see
- [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718)
- [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749)
- [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406)
- [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22)
- [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558)
- [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
- [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12)
- [ ] List of individual DP problems (each is short):
[Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr)
- [ ] Yale Lecture notes:
- [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming)
- [ ] Coursera:
- [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem)
- [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm)
- [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm)
- [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm)
- [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation)
- [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment)
- [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment)
- ### Object-Oriented Programming - ### Object-Oriented Programming
- [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc)
- [ ] Object-Oriented Software Engineering: Software Dev Using UML and Java (21 videos): - [ ] Object-Oriented Software Engineering: Software Dev Using UML and Java (21 videos):
@ -977,11 +913,10 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO)
- [ ] SOLID OOP Principles: - [ ] SOLID OOP Principles:
- [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE)
- [ ] [SOLID Design Patterns in C# (video)](https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ)
- [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A)
- [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html)
- [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk)
- [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension for not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle)
- [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en)
- [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow IS A principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow IS A principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle)
- [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en)
@ -1019,6 +954,8 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124)
- I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO.
- [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips)
- [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns)
- ### Combinatorics (n choose k) & Probability - ### Combinatorics (n choose k) & Probability
- [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U)
@ -1079,6 +1016,9 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- livelock - livelock
- CPU activity, interrupts, context switching - CPU activity, interrupts, context switching
- Modern concurrency constructs with multicore processors - Modern concurrency constructs with multicore processors
- [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2)
- [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3)
- [Scheduling (video)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8)
- Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o)
- Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack)
- Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy.
@ -1095,11 +1035,10 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY)
- ### Papers - ### Papers
- These are Google papers and well-known papers.
- Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections. - Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections.
- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/)
- [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf)
- [implemented in Go](https://godoc.org/github.com/thomas11/csp) - [implemented in Go](https://godoc.org/github.com/thomas11/csp)
- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/)
- [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf)
- replaced by Colossus in 2012 - replaced by Colossus in 2012
- [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf)
@ -1107,7 +1046,9 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf)
- [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf)
- [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf)
- [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) - [ ] [2007: Dynamo: Amazons Highly Available Key-value Store](https://www.akkadia.org/drepper/cpumemory.pdf)
- The Dynamo paper kicked off the NoSQL revolution
- [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf)
- [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) - [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf)
- [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf)
- [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/)
@ -1164,14 +1105,62 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
--- - ### Tries
- Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits
to track the path.
- I read through code, but will not implement.
- [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ)
- [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ)
- [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ)
- [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1)
- [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries)
- [ ] Short course videos:
- [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries)
- [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries)
- [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie)
- [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure)
- [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/)
- [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU)
- [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf)
- ### Floating Point Numbers
- [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU)
- [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec)
- ### Unicode
- [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html)
- [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/)
- ### Endianness
- [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html)
- [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo)
- [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0)
- Very technical talk for kernel devs. Don't worry if most is over your head.
- The first half is enough.
- ### Networking
- **if you have networking experience or want to be a systems engineer, expect questions**
- otherwise, this is just good to know
- [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro)
- [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8)
- [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0)
- [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM)
- [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As)
- [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0)
- [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM)
- [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8)
- [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j)
- [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4)
- [ ] Sockets:
- [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s)
- [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ)
## System Design, Scalability, Data Handling ## System Design, Scalability, Data Handling
- **You can expect system design questions if you have 4+ years of experience.** - **You can expect system design questions if you have 4+ years of experience.**
- Scalability and System Design are very large topics with many topics and resources, since - Scalability and System Design are very large topics with many topics and resources, since
there is a lot to consider when designing a software/hardware system that can scale. there is a lot to consider when designing a software/hardware system that can scale.
Expect to spend quite a bit of time on this. Expect to spend quite a bit of time on this.
- Considerations from Yegge: - Considerations:
- scalability - scalability
- Distill large data sets to single values - Distill large data sets to single values
- Transform one data set to another - Transform one data set to another
@ -1260,7 +1249,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- For even more, see "Mining Massive Datasets" video series in the Video Series section. - For even more, see "Mining Massive Datasets" video series in the Video Series section.
- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world:
- review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/)
- [cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf)
- flow: - flow:
1. Understand the problem and scope: 1. Understand the problem and scope:
- define the use cases, with interviewer's help - define the use cases, with interviewer's help
@ -1294,7 +1283,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
## Final Review ## Final Review
This section will have shorter videos that can you watch pretty quickly to review most of the important concepts. This section will have shorter videos that you can watch pretty quickly to review most of the important concepts.
It's nice if you want a refresher often. It's nice if you want a refresher often.
- [ ] Series of 2-3 minutes short subject videos (23 videos) - [ ] Series of 2-3 minutes short subject videos (23 videos)
@ -1348,8 +1337,6 @@ There is a great intro for methodical, communicative problem solving in an inter
interview books, too, but I found this outstanding: interview books, too, but I found this outstanding:
[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) [Algorithm design canvas](http://www.hiredintech.com/algorithm-design/)
[My Process for Coding Interview (Book) Exercises](https://googleyasheck.com/my-process-for-coding-interview-exercises/)
No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, pick up a No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, pick up a
large drawing pad from an art store. You can sit on the couch and practice. This is my "sofa whiteboard". large drawing pad from an art store. You can sit on the couch and practice. This is my "sofa whiteboard".
I added the pen in the photo for scale. If you use a pen, you'll wish you could erase. Gets messy quick. I added the pen in the photo for scale. If you use a pen, you'll wish you could erase. Gets messy quick.
@ -1380,6 +1367,10 @@ Take coding challenges every day, as many as you can.
- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) - [ ] [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/) - [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/)
Coding Interview Question Videos:
- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI)
- [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd)
Challenge sites: Challenge sites:
- [LeetCode](https://leetcode.com/) - [LeetCode](https://leetcode.com/)
- [TopCoder](https://www.topcoder.com/) - [TopCoder](https://www.topcoder.com/)
@ -1390,9 +1381,11 @@ Challenge sites:
- [InterviewCake](https://www.interviewcake.com/) - [InterviewCake](https://www.interviewcake.com/)
- [Geeks for Geeks](http://www.geeksforgeeks.org/) - [Geeks for Geeks](http://www.geeksforgeeks.org/)
- [InterviewBit](https://www.interviewbit.com/invite/icjf) - [InterviewBit](https://www.interviewbit.com/invite/icjf)
- [Sphere Online Judge (spoj)](http://www.spoj.com/)
Maybe: Mock Interviews:
- [Mock interviewers from big companies](http://www.gainlo.co/) - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/)
- [Pramp: Mock interviews from/with peers](https://www.pramp.com/)
## Once you're closer to the interview ## Once you're closer to the interview
@ -1403,7 +1396,6 @@ Maybe:
## Your Resume ## Your Resume
- [Ten Tips for a (Slightly) Less Awful Resume](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html)
- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed - See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed
@ -1416,7 +1408,7 @@ Have a story, not just data, about something you accomplished.
- What's a tough problem you've solved? - What's a tough problem you've solved?
- Biggest challenges faced? - Biggest challenges faced?
- Best/worst designs seen? - Best/worst designs seen?
- Ideas for improving an existing Google product. - Ideas for improving an existing product.
- How do you work best, as an individual and as part of a team? - How do you work best, as an individual and as part of a team?
- Which of your skills or experiences would be assets in the role and why? - Which of your skills or experiences would be assets in the role and why?
- What did you most enjoy at [job x / project y]? - What did you most enjoy at [job x / project y]?
@ -1443,8 +1435,6 @@ Have a story, not just data, about something you accomplished.
Congratulations! Congratulations!
- [10 things I wish I knew on my first day at Google](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw)
Keep learning. Keep learning.
You're never really done. You're never really done.
@ -1454,7 +1444,7 @@ You're never really done.
***************************************************************************************************** *****************************************************************************************************
***************************************************************************************************** *****************************************************************************************************
Everything below this point is optional. These are my recommendations, not Google's. Everything below this point is optional.
By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for
any software engineering job. You'll be a much more well-rounded software engineer. any software engineering job. You'll be a much more well-rounded software engineer.
@ -1475,36 +1465,12 @@ You're never really done.
- [ ] [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - [ ] [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612)
- aka the "Gang Of Four" book, or GOF - aka the "Gang Of Four" book, or GOF
- the canonical design patterns book - the canonical design patterns book
- [ ] [Site Reliability Engineering](https://landing.google.com/sre/book.html)
- [Site Reliability Engineering: How Google Runs Production Systems](https://landing.google.com/sre/)
- [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) - [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/)
## Additional Learning ## Additional Learning
- ### Dynamic Programming These topics will likely not come up in an interview, but I added them to help you become a well-rounded
- This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. software engineer, and to be aware of certain technologies and algorithms, so you'll have a bigger toolbox.
- I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved.
- [ ] Videos:
- the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see
- [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718)
- [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749)
- [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406)
- [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22)
- [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558)
- [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
- [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12)
- [ ] List of individual DP problems (each is short):
[Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr)
- [ ] Yale Lecture notes:
- [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming)
- [ ] Coursera:
- [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem)
- [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm)
- [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm)
- [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm)
- [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation)
- [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment)
- [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment)
- ### Compilers - ### Compilers
- [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg)
@ -1512,23 +1478,8 @@ You're never really done.
- [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk)
- [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU)
- ### Floating Point Numbers
- [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU)
- [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec)
- ### Unicode
- [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html)
- [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/)
- ### Endianness
- [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html)
- [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo)
- [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0)
- Very technical talk for kernel devs. Don't worry if most is over your head.
- The first half is enough.
- ### Emacs and vi(m) - ### Emacs and vi(m)
- suggested by Yegge, from an old Amazon recruiting post: Familiarize yourself with a unix-based code editor - Familiarize yourself with a unix-based code editor
- vi(m): - vi(m):
- [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr)
- [VIM Adventures](http://vim-adventures.com/) - [VIM Adventures](http://vim-adventures.com/)
@ -1549,7 +1500,7 @@ You're never really done.
- [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk)
- ### Unix command line tools - ### Unix command line tools
- suggested by Yegge, from an old Amazon recruiting post. I filled in the list below from good tools. - I filled in the list below from good tools.
- [ ] bash - [ ] bash
- [ ] cat - [ ] cat
- [ ] grep - [ ] grep
@ -1602,20 +1553,6 @@ You're never really done.
- [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H)
- [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s)
- ### Networking
- **if you have networking experience or want to be a systems engineer, expect questions**
- otherwise, this is just good to know
- [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro)
- [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8)
- [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0)
- [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM)
- [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As)
- [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0)
- [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM)
- [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8)
- [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j)
- [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4)
- ### Computer Security - ### Computer Security
- [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
- [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
@ -1664,6 +1601,11 @@ You're never really done.
- [ ] [MessagePack](http://msgpack.org/index.html) - [ ] [MessagePack](http://msgpack.org/index.html)
- [ ] [Avro](https://avro.apache.org/) - [ ] [Avro](https://avro.apache.org/)
- ### A*
- [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm)
- [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE)
- [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE)
- ### Fast Fourier Transform - ### Fast Fourier Transform
- [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/)
- [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/)
@ -1693,24 +1635,6 @@ You're never really done.
- ### Augmented Data Structures - ### Augmented Data Structures
- [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950)
- ### Tries
- Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits
to track the path.
- I read through code, but will not implement.
- [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ)
- [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ)
- [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ)
- [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1)
- [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries)
- [ ] Short course videos:
- [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries)
- [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries)
- [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie)
- [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure)
- [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/)
- [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU)
- [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf)
- ### Balanced search trees - ### Balanced search trees
- Know least one type of balanced binary tree (and know how it's implemented): - Know least one type of balanced binary tree (and know how it's implemented):
- "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular.
@ -1873,16 +1797,6 @@ You're never really done.
- [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers)
- Data School: http://www.dataschool.io/ - Data School: http://www.dataschool.io/
- ### Go
- [ ] Videos:
- [ ] [Why Learn Go?](https://www.youtube.com/watch?v=FTl0tl9BGdc)
- [ ] [Go Programming](https://www.youtube.com/watch?v=CF9S4QZuV30)
- [ ] [A Tour of Go](https://www.youtube.com/watch?v=ytEkHepK08c)
- [ ] Books:
- [ ] [An Introduction to Programming in Go (read free online)](https://www.golang-book.com/books/intro)
- [ ] [The Go Programming Language (Donovan & Kernighan)](https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440)
- [ ] [Bootcamp](https://www.golang-book.com/guides/bootcamp)
-- --
## Additional Detail on Some Subjects ## Additional Detail on Some Subjects
@ -2023,4 +1937,3 @@ Sit back and enjoy. "Netflix and skill" :P
- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [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) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses)

View File

@ -1,7 +1,7 @@
# Coding Interview University # Tự ôn tập phỏng vấn về lập trình (Coding Interview University)
Bản gốc: Bản gốc:
* [English](./README.md) * [English](/README.md)
Tác giả gốc: [John Washam](https://github.com/jwasham) Tác giả gốc: [John Washam](https://github.com/jwasham)
@ -10,6 +10,7 @@ Tác giả gốc: [John Washam](https://github.com/jwasham)
* [Võ Tường Thọ](https://github.com/thovo) - [@thovo](https://twitter.com/tho_vo) * [Võ Tường Thọ](https://github.com/thovo) - [@thovo](https://twitter.com/tho_vo)
* [Lê Tấn Đăng Khoa](https://github.com/dangkhoasdc) - [@dksdc](https://twitter.com/dksdc) * [Lê Tấn Đăng Khoa](https://github.com/dangkhoasdc) - [@dksdc](https://twitter.com/dksdc)
* [Trương Đức Duy](https://github.com/duytruong) - [@dauruy](https://twitter.com/dauruy) * [Trương Đức Duy](https://github.com/duytruong) - [@dauruy](https://twitter.com/dauruy)
* [Lương Đăng Hải](https://github.com/jarvisluong) - [@jarvisluong](https://twitter.com/jarvisluong)
Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt: Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt:
@ -21,9 +22,9 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt
--- ---
> Ban đầu, đây chỉ là một danh sách to-do ngắn về các chủ đề phải ôn tập của tôi, để trở thành một kỹ sư phần mềm. Nhưng rôi nó lớn dần nên như ngày nay. Sau khi đi hết con đường này, [tôi đã được tuyển vào vị trí Software Development Engineer ở Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! Bạn có lẽ không cần phải học nhiều như tôi đã học. Nhưng dù sao, mọi thứ bạn cần ở đây. > Ban đầu, đây chỉ là một danh sách to-do (danh sách các việc cần làm) ngắn về các chủ đề phải ôn tập của tôi, để trở thành một kỹ sư phần mềm. Nhưng rôi nó lớn dần nên như ngày nay. Sau khi đi hết con đường này, [tôi đã được tuyển vào vị trí Software Development Engineer ở Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! Bạn có lẽ không cần phải học nhiều như tôi đã học. Nhưng dù sao, mọi thứ bạn cần ở đây.
> >
> Những chù đề này sẽ chuẩn bị cho bạn nền tảng kiến thức vững vàng cho bất kỳ công ty phần mềm nào, bao gồm cả những gã khổng lồ như: Amazon, Facebook, Google or Microsoft. > Những ch đề này sẽ chuẩn bị cho bạn nền tảng kiến thức vững vàng cho bất kỳ công ty phần mềm nào, bao gồm cả những gã khổng lồ như: Amazon, Facebook, Google hay Microsoft.
> >
> *Chúc may mắn!* > *Chúc may mắn!*
@ -31,10 +32,10 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt
Đây là kế hoạch học tập trong nhiều tháng của tôi, để từ một nhà phát triển web (tự học, không có bằng cấp về Khoa Học Máy Tính - KHMT) trở thành một kỹ sư phần mềm ở Google. Đây là kế hoạch học tập trong nhiều tháng của tôi, để từ một nhà phát triển web (tự học, không có bằng cấp về Khoa Học Máy Tính - KHMT) trở thành một kỹ sư phần mềm ở Google.
![Viết code trên bảng - ánh trích từ bộ phim Silicon Valley của HBO](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) ![Viết code trên bảng - nh trích từ bộ phim Silicon Valley của HBO](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg)
Danh sách dài này được trích và mở rộng từ **Ghi chú huấn luyện của Google**, vậy nên đây là những gì bạn cần biết. Danh sách dài này được trích và mở rộng từ **Ghi chú huấn luyện của Google**, vậy nên đây là những gì bạn cần biết.
Một vài mục tôi thêm vào ở cuối danh sách có thể xuất hiện trong cuộc phỏng vấn hoặc hữu ích cho việc giải quyết các bài toán. Nhiều mục đến từ bài viết [Lấy được việc ở Google (Get that job at Google)](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" của Steve Yegge. Một vài mục tôi thêm vào ở cuối danh sách có thể xuất hiện trong cuộc phỏng vấn hoặc hữu ích cho việc giải quyết các bài toán về lập trình. Nhiều mục đến từ bài viết [Lấy được việc ở Google (Get that job at Google)](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" của Steve Yegge.
Tôi lược bớt những gì bạn cần từ lời khuyên của yegge. Tôi cũng chỉnh sửa lại các yêu cầu dựa trên thông tin tôi có được từ bạn bè ở Google. Danh sách này được thiết kế cho **Kỹ sư phần mềm** hoặc những ai chuyển từ phát triển web hoặc phần mềm sang _kỹ nghệ_ phần mềm (khi mà kiến thức về Khoa Học Máy Tính là bắt buộc). Nếu bạn có nhiều kinh nghiệm và muốn khẳng định nhiều năm trong đó bạn làm việc như một kỹ sư phần mềm, hãy sẵn sàng cho một buổi phòng vấn khó hơn. [Xem thêm ở đây](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/). Tôi lược bớt những gì bạn cần từ lời khuyên của yegge. Tôi cũng chỉnh sửa lại các yêu cầu dựa trên thông tin tôi có được từ bạn bè ở Google. Danh sách này được thiết kế cho **Kỹ sư phần mềm** hoặc những ai chuyển từ phát triển web hoặc phần mềm sang _kỹ nghệ_ phần mềm (khi mà kiến thức về Khoa Học Máy Tính là bắt buộc). Nếu bạn có nhiều kinh nghiệm và muốn khẳng định nhiều năm trong đó bạn làm việc như một kỹ sư phần mềm, hãy sẵn sàng cho một buổi phòng vấn khó hơn. [Xem thêm ở đây](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/).
@ -48,7 +49,7 @@ Thêm vào đó, nếu bạn muốn trở thành một kỹ sư hệ thống (Sy
- [Giới thiệu?](#giới-thiệu) - [Giới thiệu?](#giới-thiệu)
- [Vì sao tôi cần tài liệu này?](#vì-sao-tôi-cần-tài-liệu-này) - [Vì sao tôi cần tài liệu này?](#vì-sao-tôi-cần-tài-liệu-này)
- [Sử dụng như thế nào?](#sử-dụng-như-thế-nào) - [Sử dụng tài liệu này như thế nào?](#sử-dụng-tài-liệu-này-như-thế-nào)
- [Đừng nghĩ rằng bạn không đủ thông minh](#đừng-nghĩ-rằng-bạn-không-đủ-thông-minh) - [Đừng nghĩ rằng bạn không đủ thông minh](#đừng-nghĩ-rằng-bạn-không-đủ-thông-minh)
- [Về nguồn video](#về-nguồn-video) - [Về nguồn video](#về-nguồn-video)
- [Quy trình phỏng vấn & các bước chuẩn bị tổng quát](#quy-trình-phỏng-vấn--các-bước-chuẩn-bị-tổng-quát) - [Quy trình phỏng vấn & các bước chuẩn bị tổng quát](#quy-trình-phỏng-vấn--các-bước-chuẩn-bị-tổng-quát)
@ -86,7 +87,7 @@ Thêm vào đó, nếu bạn muốn trở thành một kỹ sư hệ thống (Sy
- ma trận kề - ma trận kề
- danh sách kề - danh sách kề
- duyệt đồ thị: BFS, DFS - duyệt đồ thị: BFS, DFS
- [Thêm nhiều kiến thức nữa](#thêm-nhiều-kiến-thức-nữa) - [Kiến thức bổ sung](#kiến-thức-bổ-sung)
- [Đệ quy](#Đệ-quy) - [Đệ quy](#Đệ-quy)
- [Quy hoạch động](#quy-hoạch-động) - [Quy hoạch động](#quy-hoạch-động)
- [Lập trình hướng đối tượng](#lập-trình-hướng-đối-tượng) - [Lập trình hướng đối tượng](#lập-trình-hướng-đối-tượng)
@ -110,12 +111,12 @@ Thêm vào đó, nếu bạn muốn trở thành một kỹ sư hệ thống (Sy
- [Thực hành các câu hỏi về lập trình](#thực-hành-các-câu-hỏi-về-lập-trình) - [Thực hành các câu hỏi về lập trình](#thực-hành-các-câu-hỏi-về-lập-trình)
- [Giải bài tập lập trình](#giải-bài-tập-lập-trình) - [Giải bài tập lập trình](#giải-bài-tập-lập-trình)
- [Khi bạn tiến gần đến kỳ phỏng vấn](#khi-bạn-tiến-gần-đến-kỳ-phỏng-vấn) - [Khi bạn tiến gần đến kỳ phỏng vấn](#khi-bạn-tiến-gần-đến-kỳ-phỏng-vấn)
- [Resume của bạn](#resume-của-bạn) - [Lý lịch (Resume) của bạn](#lý-lịch-resume-của-bạn)
- [Hãy nghĩ đến những thứ bạn sẽ được hỏi](#hãy-nghĩ-đến-những-thứ-bạn-sẽ-được-hỏi) - [Hãy nghĩ đến những thứ bạn sẽ được hỏi](#hãy-nghĩ-đến-những-thứ-bạn-sẽ-được-hỏi)
- [Chuẩn bị câu hỏi dành cho phỏng vấn viến](#chuẩn-bị-câu-hỏi-dành-cho-phỏng-vấn-viến) - [Chuẩn bị câu hỏi dành cho phỏng vấn viên](#chuẩn-bị-câu-hỏi-dành-cho-phỏng-vấn-viên)
- [Khi bạn được nhận việc](#khi-bạn-được-nhận-việc) - [Khi bạn được nhận việc](#khi-bạn-được-nhận-việc)
---------------- Everything below this point is optional ---------------- ---------------- Những mục dưới đây là tuỳ chọn ----------------
- [Sách bổ sung](#sách-bổ-sung) - [Sách bổ sung](#sách-bổ-sung)
- [Học thêm](#học-thêm) - [Học thêm](#học-thêm)
@ -174,7 +175,7 @@ Tất cả các cấu trúc dự liệu tôi từng sử dụng đều được
Nhưng, sau khi trải qua dự án này, tôi rất tự tin rằng mình sẽ được tuyển. Đây là một dự án dài hơi, sẽ tốn của tôi hàng tháng. Nếu bạn đã quen với nhiều nội dung trong này, bạn sẽ mất ít thời gian hơn. Nhưng, sau khi trải qua dự án này, tôi rất tự tin rằng mình sẽ được tuyển. Đây là một dự án dài hơi, sẽ tốn của tôi hàng tháng. Nếu bạn đã quen với nhiều nội dung trong này, bạn sẽ mất ít thời gian hơn.
## Sử dụng như thế nào? ## Sử dụng tài liệu này như thế nào?
> Phần này được viết lại khá nhiều để thuận tiện cho các bạn tiếp cận. Dựa theo bản gốc, tác giả có vẻ như cũng đang cố hướng dẫn cho người mới dùng git. > Phần này được viết lại khá nhiều để thuận tiện cho các bạn tiếp cận. Dựa theo bản gốc, tác giả có vẻ như cũng đang cố hướng dẫn cho người mới dùng git.
@ -185,7 +186,10 @@ Nếu bạn chưa biết về [git](https://git-scm.com) thì vui lòng tham kh
- Tiếng Anh: [git - the simple guide](http://rogerdudler.github.io/git-guide/) - Tiếng Anh: [git - the simple guide](http://rogerdudler.github.io/git-guide/)
- Tiếng Viết: [Sổ tay git cho người mới bát đầu](http://rogerdudler.github.io/git-guide/index.vi.html) (Việt hóa từ nội dung với link trên) - Tiếng Viết: [Sổ tay git cho người mới bát đầu](http://rogerdudler.github.io/git-guide/index.vi.html) (Việt hóa từ nội dung với link trên)
Tiếp theo, bạn cần biết cách [fork một repo trên github](https://help.github.com/articles/fork-a-repo/) (Mình không tìm được hướng dẫn tiếng Việt nào thích hợp.) Tiếp theo, bạn cần biết cách gắp (fork) một repo trên github:
- Tiếng Anh [Fork a repo](https://help.github.com/articles/fork-a-repo/)
- Tiếng Việt: [Cách gắp (fork) một repo trên github](https://techynovice.wordpress.com/2017/03/19/cach-gap-fork-mot-repository-tren-github/) (Việt hoá tư nội dung với link trên)
Ok, bây giờ bạn có thể bắt đầu: Ok, bây giờ bạn có thể bắt đầu:
@ -216,7 +220,7 @@ Ok, bây giờ bạn có thể bắt đầu:
## Về nguồn video ## Về nguồn video
Một vài video chỉ xem được khi bạn tham gia vào các lớp học online trên Coursera, EdX, hay Lynda.com. Các lớp đó được gọi là MOOC. Một vài video chỉ xem được khi bạn tham gia vào các lớp học online trên Coursera, EdX, hay Lynda.com. Các lớp đó được gọi là MOOC.
Đôi khi các lớp không có sẵn, và bạn phải đợi một vài tháng đến khi chúng được mở lại, do đó bạn không thể truy cập vào video được. Đôi khi các lớp chưa mở, và bạn phải đợi một vài tháng đến khi chúng được mở lại, do đó bạn không thể truy cập vào video được.
Lynda.com thì không miễn phí. Lynda.com thì không miễn phí.
Tôi sẽ rất cảm kích sự hỗ trợ của các bạn trong việc thêm các nguồn video miễn phí và luôn sẵn có, ví dụ như Youtube, để hỗ trợ nguồn video từ các khóa học online. Tôi sẽ rất cảm kích sự hỗ trợ của các bạn trong việc thêm các nguồn video miễn phí và luôn sẵn có, ví dụ như Youtube, để hỗ trợ nguồn video từ các khóa học online.
@ -259,7 +263,7 @@ Xem thêm về các sự lựa chọn:
- http://blog.codingforinterviews.com/best-programming-language-jobs/ - http://blog.codingforinterviews.com/best-programming-language-jobs/
- https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview - https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview
[Xem tài liệu về các ngôn ngữ ở đây](programming-language-resources.md) [Xem tài liệu về các ngôn ngữ ở đây](/programming-language-resources.md)
Bạn sẽ thấy vài tài liệu về C, C++ và Python bên dưới, vì tôi đang học chúng. Ngoài ra còn có một vài đầu sách nữa, xem ở cuối. Bạn sẽ thấy vài tài liệu về C, C++ và Python bên dưới, vì tôi đang học chúng. Ngoài ra còn có một vài đầu sách nữa, xem ở cuối.
@ -316,12 +320,11 @@ Nếu bạn có nhiều thời gian (tôi đã muốn đọc quyển này):
### Từng ngôn ngữ riêng biệt ### Từng ngôn ngữ riêng biệt
**Bạn phải chọn một ngôn ngữ cho cuộc phỏng vấn (xem ở trên).** Đây là các khuyến nghị của tôi. Tôi không có tài liệu cho tất cả các ngôn ngữ lập trình, vậy nên, đóng góp từ bạn luôn được chào đón. **Bạn phải chọn một ngôn ngữ cho cuộc phỏng vấn (xem ở trên).** Đây là các khuyến nghị của tôi. Tôi không có tài liệu cho tất cả các ngôn ngữ lập trình, vậy nên, đóng góp từ bạn luôn được chào đón.
Nếu bạn muốn đọc xuyên suốt một trong những quyển sách này, bạn nên có kiến thức về cấu trúc dữ liệu và giải thuật. Bạn cũng nên luyện tập giải toán lập trình. Nếu bạn muốn đọc xuyên suốt một trong những quyển sách này, bạn nên có kiến thức về cấu trúc dữ liệu và giải thuật. Bạn cũng nên luyện tập giải toán lập trình.
**Bạn có thể bỏ qua bài giảng video trong project này**, trừ khi bạn muốn tự đánh giá lại kiến thức của mình. **Bạn có thể bỏ qua bài giảng video trong project này**, trừ khi bạn muốn tự đánh giá lại kiến thức của mình.
[Đây là tài liệu ngôn ngữ lập trình bổ sung.](programming-language-resources.md) [Đây là tài liệu ngôn ngữ lập trình bổ sung.](/programming-language-resources.md)
### C++ ### C++
@ -660,7 +663,7 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy
- Tìm kiếm nhị phân sử dụng đệ quy - Tìm kiếm nhị phân sử dụng đệ quy
- ### Toán tử trên bit - ### Toán tử trên bit
- [ ] [Bits cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - bạn nên thuộc lòng nhiều lũy thừa của 2 (từ 2^1 đến 2^16 và 2^32) - [ ] [Bits cheat sheet](/extras/cheat%20sheets/bits-cheat-cheet.pdf) - bạn nên thuộc lòng nhiều lũy thừa của 2 (từ 2^1 đến 2^16 và 2^32)
- [ ] Hãy chuẩn bị một nền tảng tốt về các biến đổi bit với các toán tử: &, |, ^, ~, >>, << - [ ] Hãy chuẩn bị một nền tảng tốt về các biến đổi bit với các toán tử: &, |, ^, ~, >>, <<
- [ ] [words (thuật ngữ trong kiến trúc máy tính)](https://en.wikipedia.org/wiki/Word_(computer_architecture) ) - [ ] [words (thuật ngữ trong kiến trúc máy tính)](https://en.wikipedia.org/wiki/Word_(computer_architecture) )
- [ ] Bài mở đầu: - [ ] Bài mở đầu:
@ -912,7 +915,7 @@ Nếu bạn muốn biết thêm chi tiết trong chủ đề này, xem qua phầ
Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của Skiena (xem danh mục sách bên dưới) và các sách về phỏng vấn. Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của Skiena (xem danh mục sách bên dưới) và các sách về phỏng vấn.
## Thêm nhiều kiến thức nữa ## Kiến thức bổ sung
- ### Đệ quy - ### Đệ quy
- [ ] Các bài giảng của đại học Stanford về đệ quy và quay lui: - [ ] Các bài giảng của đại học Stanford về đệ quy và quay lui:
@ -1283,7 +1286,7 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của
- [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability)
- Để có thêm thông tin, xem seri "Mining Massive Datasets" trong seri video. - Để có thêm thông tin, xem seri "Mining Massive Datasets" trong seri video.
- [ ] Thực hành thêm về thiết kế hệ thống: Sau đây là vài ý tưởng có thể thực hiện trên giấy, mỗi ý tưởng đều có tư liệu đi cùng để hiểu rõ nó thực thi thế nào trong thế giới thực. [Thiết kế hệ thống bới HiredInTech(System Design from HiredInTech)](http://www.hiredintech.com/system-design/) - [ ] Thực hành thêm về thiết kế hệ thống: Sau đây là vài ý tưởng có thể thực hiện trên giấy, mỗi ý tưởng đều có tư liệu đi cùng để hiểu rõ nó thực thi thế nào trong thế giới thực. [Thiết kế hệ thống bới HiredInTech(System Design from HiredInTech)](http://www.hiredintech.com/system-design/)
- [cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) - [cheat sheet](/extras/cheat%20sheets/system-design.pdf)
- Các bước thực hiện: - Các bước thực hiện:
1. Hiểu vấn đề và phạm vi của vấn đề: 1. Hiểu vấn đề và phạm vi của vấn đề:
- Định nghĩa các trường hợp sử dụng cụ thể với sự trợ giúp từ người phỏng vấn - Định nghĩa các trường hợp sử dụng cụ thể với sự trợ giúp từ người phỏng vấn
@ -1424,7 +1427,7 @@ Xem thêm:
- [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo)
- [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak)
## Resume của bạn ## Lý lịch (Resume) của bạn
- [10 mẹo để Resume bớt (một chút) tào lao](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) - [10 mẹo để Resume bớt (một chút) tào lao](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html)
- Xem các phần về chuẩn bị Resume trong [Cracking The Coding Interview](https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/) và [Programming Interviews Exposed](https://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/dp/1118261364) - Xem các phần về chuẩn bị Resume trong [Cracking The Coding Interview](https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/) và [Programming Interviews Exposed](https://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/dp/1118261364)
@ -1448,7 +1451,7 @@ Chuẩn bị 2 đến 3 câu trả lời cho mỗi câu hỏi. Hãy chuẩn bị
- Những gì bạn cho rằng mình đã có thể làm tốt hơn ở [công việc X/ dự án Y]? - Những gì bạn cho rằng mình đã có thể làm tốt hơn ở [công việc X/ dự án Y]?
## Chuẩn bị câu hỏi dành cho phỏng vấn viến ## Chuẩn bị câu hỏi dành cho phỏng vấn viên
Một vài câu hỏi của tôi (Tôi có thể đã tìm hiểu trước rồi, nhưng vẫn muốn được nghe ý kiến từ góc nhìn của người phỏng): Một vài câu hỏi của tôi (Tôi có thể đã tìm hiểu trước rồi, nhưng vẫn muốn được nghe ý kiến từ góc nhìn của người phỏng):
@ -1818,7 +1821,7 @@ Bạn không bao giờ thực sự học xong!
## Đọc thêm về một số đề tài ## Đọc thêm về một số đề tài
Tôi thêm những phần này để cường hóa các kiến thức đã được trình bày ở trên, nhưng không muốn đưa chúng vào danh sách trên, vì đã quá nhiều rồi. Cũng có hơi vượt mức cần thiết. Nhưng dù sao, bạn muốn trúng tuyển mà phải không?    Tôi thêm những phần này để cng cố các kiến thức đã được trình bày ở trên, nhưng không muốn đưa chúng vào danh sách trên, vì đã quá nhiều rồi. Cũng có hơi vượt mức cần thiết. Nhưng dù sao, bạn muốn trúng tuyển mà phải không?
- [ ] **Union-Find** - [ ] **Union-Find**
- [ ] [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - [ ] [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview)