TESTING, API calls, SCHEDULING, BINARY SEARCH, partially PAPERS

This commit is contained in:
Julia
2018-03-09 15:53:52 +00:00
parent 0efbdff3b2
commit e52ba2361b

View File

@ -83,10 +83,10 @@
- [NP, NP-полные and Аппроксимирующие алгоритмы](#np-np-complete-and-approximation-algorithms) - [NP, NP-полные and Аппроксимирующие алгоритмы](#np-np-complete-and-approximation-algorithms)
- [Кэш](#caches) - [Кэш](#caches)
- [Процессы и нити](#processes-and-threads) - [Процессы и нити](#processes-and-threads)
- [Статьи](#papers) - [Статьи](#Статьи)
- [Тестирование](#testing) - [Тестирование](#Тестирование)
- [Планирование](#scheduling) - [Планирование](#Планирование)
- [Реализация системных вызовов](#implement-system-routines) - [Реализация системных вызовов](#Реализация-системных-вызовов)
- [Поиск в строке & манипуляции](#string-searching--manipulations) - [Поиск в строке & манипуляции](#string-searching--manipulations)
- [Проектирование систем, Масштабируемость, Обработка данных](#system-design-scalability-data-handling) (if you have 4+ years experience) - [Проектирование систем, Масштабируемость, Обработка данных](#system-design-scalability-data-handling) (if you have 4+ years experience)
- [Финальный обзор](#final-review) - [Финальный обзор](#final-review)
@ -118,7 +118,7 @@
- [Сети](#Сети-и-сетевые-протоколы) - [Сети](#Сети-и-сетевые-протоколы)
- [Компьютерная безопасность](#Компьютерная-безопасность) - [Компьютерная безопасность](#Компьютерная-безопасность)
- [Сборка мусора](#Сборка-мусора-(Garbage-collection)) - [Сборка мусора](#Сборка-мусора-(Garbage-collection))
- [Параллельное программирование](#parallel-programming) - [Параллельное программирование](#Параллельное-программирование)
- [Сообщения, сериализация и системы очередей](#messaging-serialization-and-queueing-systems) - [Сообщения, сериализация и системы очередей](#messaging-serialization-and-queueing-systems)
- [Быстрое преобразование Фурье](#fast-fourier-transform) - [Быстрое преобразование Фурье](#fast-fourier-transform)
- [Фильтр Блума](#bloom-filter) - [Фильтр Блума](#bloom-filter)
@ -704,9 +704,9 @@ Google не возьмёт тебя на работу.
## Дополнительно ## Дополнительно
- ### Бинарный поиск - ### Бинарный поиск
- [ ] [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [Бинарный поиск (видео на ютубе)](https://www.youtube.com/watch?v=D5SrAga1pno)
- [ ] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [Бинарный поиск (видео на khanacademy)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search)
- [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) - [ ] [Длинная статья с деталями](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/)
- [ ] Реализация: - [ ] Реализация:
- бинарный поиск (на отсортированном числовом массиве) - бинарный поиск (на отсортированном числовом массиве)
- бинарный поиск с использованием рекурсии - бинарный поиск с использованием рекурсии
@ -824,7 +824,7 @@ Google не возьмёт тебя на работу.
## Сортировка ## Сортировка
- [ ] Заметки: - [ ] Заметки:
- Реализуй сортировки и помни про лучшую/худую, среднюю сложность для каждой: - Напиши код для разный сортировкок и помни про лучшую/худую, среднюю сложность для каждой:
- не пузырьковая сортировка - она медленная - O(n^2), заисключением n <= 16 - не пузырьковая сортировка - она медленная - O(n^2), заисключением n <= 16
- [ ] устоичивость в алгоритмах сортировки ("Быстрая сортировка устойчива?") - [ ] устоичивость в алгоритмах сортировки ("Быстрая сортировка устойчива?")
- [Устоичивость алгоритма сортировки](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - [Устоичивость алгоритма сортировки](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability)
@ -879,7 +879,7 @@ Google не возьмёт тебя на работу.
- Сортировка выбором и сортировка вставками обе имеют среднюю и худшую сложность O(n^2) - Сортировка выбором и сортировка вставками обе имеют среднюю и худшую сложность O(n^2)
- Для пирамидальной сортировки, смотри структуру данных "Куча" выше. - Для пирамидальной сортировки, смотри структуру данных "Куча" выше.
- [ ] Не обязательно, но я рекомендую: - [ ] Необязательно, но я рекомендую:
- [ ] [Седжвик (Sedgewick) - Поразрядная сортировка (6 видео)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - [ ] [Седжвик (Sedgewick) - Поразрядная сортировка (6 видео)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53)
- [ ] [1. Строки в Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) - [ ] [1. Строки в Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6)
- [ ] [2. Ключевые индексные расчеты](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) - [ ] [2. Ключевые индексные расчеты](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5)
@ -905,7 +905,7 @@ Google не возьмёт тебя на работу.
- список смежности - список смежности
- Ознакомьтесь с каждым представлением, его преимуществами и недостатками - Ознакомьтесь с каждым представлением, его преимуществами и недостатками
- BFS и DFS - узнайте их вычислительную сложность, соотношение преимуществ и недостатков, способы реализации в коде - BFS и DFS - узнайте их вычислительную сложность, соотношение преимуществ и недостатков, способы реализации в коде
- Когда вы получили задачу, в первую очередь попробуйте построить свое решение с использованием графов, а затем двигайтесь дальше, если такого решения нет. - Когда вы получили задачу, сначала попробуйте решить её с использованием графов, а затем двигайтесь дальше, если такого решения нет.
- [ ] Лекции профессора Стивена Скина - хорошее введение: - [ ] Лекции профессора Стивена Скина - хорошее введение:
- [ ] [CSE373 2012 - Лекция 11 - Структуры данных для представления графов (видео)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - [ ] [CSE373 2012 - Лекция 11 - Структуры данных для представления графов (видео)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11)
@ -956,7 +956,7 @@ Google не возьмёт тебя на работу.
- [ ] список сильно связных компонентов - [ ] список сильно связных компонентов
- [ ] проверку графа на двудольность - [ ] проверку графа на двудольность
Вы найдете больше практических задач на графах в книге Стивена Скина (см раздел книги ниже) и в книгах о прохождении интервью. Вы найдете больше практических задач на графах в книге Стивена Скина (см. раздел книги ниже) и в книгах о прохождении интервью.
## Еще больше знаний ## Еще больше знаний
@ -1095,58 +1095,57 @@ Google не возьмёт тебя на работу.
- [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU)
- [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY)
- ### Papers - ### Статьи
- These are Google papers and well-known papers. - Здесь вы найдете статьи от Google, а также дургие известные статьи.
- 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. - У вас вряд ли будет время прочитать их все с начала до конца. Я рекоммендую выбирать статьи и главы в них - тратье время грамотно на то, что хотите изучить глубже.
- [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - [Любите классические статьи?](https://www.cs.cmu.edu/~crary/819-f09/)
- [implemented in Go](https://godoc.org/github.com/thomas11/csp) - [ ] [1978: Коммуникация последовательных процессов](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf)
- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - [разработка на языке Go](https://godoc.org/github.com/thomas11/csp)
- [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - [ ] [2003: Файловая система Google](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf)
- replaced by Colossus in 2012 - в 2012 заменена на Colossus
- [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - [ ] [2004: MapReduce: Упрощенная обработка данных на крупных кластерах](http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf)
- mostly replaced by Cloud Dataflow? - в основном заменена Cloud Dataflow
- [ ] [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: Что каждый программист должен знать о памяти (очень длинная статья, и автор говорит пропускать некоторые разделы)](https://www.akkadia.org/drepper/cpumemory.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/)
- paper not available - [ ] 2012: AddressSanitizer: Быстрая проверка адресов:
- [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker: - [статья](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf)
- [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - [видео](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany)
- [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - [ ] 2013: Spanner: Глобальная дистрибутивная база данных Google:
- [ ] 2013: Spanner: Googles Globally-Distributed Database: - [статья](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf)
- [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - [видео](https://www.usenix.org/node/170855)
- [video](https://www.usenix.org/node/170855) - [ ] [2014: Машинное обучение: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf)
- [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - [ ] [2015: Continuous Pipelines в Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf)
- [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf)
- [ ] [2015: High-Availability at Massive Scale: Building Googles Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - [ ] [2015: High-Availability at Massive Scale: Building Googles Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf)
- [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf )
- [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - [ ] [2015: Как разработчики ищут код: на примере](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf)
- [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - [ ] [2016: Borg, Omega, и Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf)
- ### Testing - ### Тестирование
- To cover: - Нужно пройти:
- how unit testing works - модульное тестирование
- what are mock objects - Mock-объекты (от англ. «объект-пародия», «объект-имитация»)
- what is integration testing - интеграционное тестирование
- what is dependency injection - внедрение зависимости
- [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - [ ] [Гибкая методология разработки с James Bach (видео)](https://www.youtube.com/watch?v=SAhJf36_u5U)
- [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - [ ] [Открытая лекция, данная James Bach на тему тестирования (видео)](https://www.youtube.com/watch?v=ILkT_HV9DVU)
- [ ] [Steve Freeman - Test-Driven Development (thats not what we meant) (video)](https://vimeo.com/83960706) - [ ] [Steve Freeman - разработка через тестирование (это не то, что мы имели в виду) (видео)](https://vimeo.com/83960706)
- [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - [слайды](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf)
- [ ] [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - [ ] [Новая эра разработки через тестирование](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html)
- [ ] [Is TDD dead? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo) - [ ] [Мертва ли разработка через тестирование? (видео)](https://www.youtube.com/watch?v=z9quxZsLcfo)
- [ ] [Video series (152 videos) - not all are needed (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - [ ] [Видео-курс (152 видео) - нужны не все (видео)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g)
- [ ] [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc) - [ ] [Вэб-разработка через тестирование на Питоне](http://www.obeythetestinggoat.com/pages/book.html#toc)
- [ ] Dependency injection: - [ ] Внедрение зависимости:
- [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [ ] [видео](https://www.youtube.com/watch?v=IKD2-MAkXyQ)
- [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] [Принципы тестирования](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html)
- [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - [ ] [Как писать тесты](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html)
- ### Scheduling - ### Планирование
- in an OS, how it works - как работает планирование (scheduling) в операционной системе
- can be gleaned from Operating System videos - можно найти информацию в видео про Операционные системы
- ### Implement system routines - ### Реализация системных вызовов
- understand what lies beneath the programming APIs you use - пойми, что находится под обложкой библиотек и программных интерфейсов (API), которые ты используешь
- can you implement them? - можешь ли ты написать код для них?
- ### String searching & manipulations - ### String searching & manipulations
- [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg)