diff --git a/translations/README-ru.md b/translations/README-ru.md index efb2d23..f6cf63f 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -156,7 +156,7 @@ ## Чем это полезно? Я следую этому плану, готовясь к собеседованию в Google. Я разрабатываю веб-приложения, сервисы и запускаю стартапы с -1997 года. У меня есть степень по экономике, но нет по CS. На данные момент у меня очень успешная карьера, но я хочу работать +1997 года. У меня есть степень по экономике, но нет по CS. На данный момент у меня очень успешная карьера, но я хочу работать в Google. Я хочу работать с большими системами и понять принципы их работы, изучить эффективность алгоритмов и различные структуры данных, узнать, как работают низкоуровневые языки программирования. Если ты не знаешь что-то из перечисленного, Google не возьмёт тебя на работу. @@ -254,7 +254,7 @@ Google не возьмёт тебя на работу. прежде чем получите к ним доступ. Курсы на Lynda.com платные. Я был бы вам благодарен за помощь в добавлении бесплатных, всегда доступных публичных ресурсов, таких - как видео с YouTube сопровождающих онлайн курсы. Мне нравяться использовать университетские лекции. + как видео с YouTube сопровождающих онлайн курсы. Мне нравится использовать университетские лекции. ## Процесс собеседования & Основное в подготовке к интервью @@ -275,11 +275,11 @@ Google не возьмёт тебя на работу. - [ ] Подготовительные курсы: - [ ] [Собеседование инженера-программиста (платный курс)](https://www.udemy.com/software-engineer-interview-unleashed): - - Как самостоятельно подготовиться r собеседованию на позицию инженера-программиста от бывшего сотрудника Google + - Как самостоятельно подготовиться к собеседованию на позицию инженера-программиста от бывшего сотрудника Google - [ ] Дополнительно (это не рекомендация Google, а моя собственная): - [ ] [ABC: Программируй всегда](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - - [ ] [4 шага в Google без образованияв CS](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) + - [ ] [4 шага к Google без образования в CS](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) - [ ] [Кодирование на доске](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - [ ] [Что думает Google о найме, управлении и культуре](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) - [ ] [Эффективное кодирование на доске в процессе собеседования](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) @@ -315,7 +315,7 @@ Google не возьмёт тебя на работу. [Ресурсы по языкам программирования вы можете найти тут](../programming-language-resources.md) -Вы найдете кое-что по С, С++ и Python ниже, потому-что я еще в процессе обучения. +Вы найдете кое-что по С, С++ и Python ниже, потому что я еще в процессе обучения. ## Список книг @@ -323,7 +323,7 @@ Google не возьмёт тебя на работу. ### Подготовка к собеседованию -- [ ] [Собеседование по программированию в подробнастях: Секреты получения твоей следующей работы, 2-е издание](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) +- [ ] [Собеседование по программированию в подробностях: Секреты получения твоей следующей работы, 2-е издание](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - ответы на C++ и Java - рекомендации Google по обучению кандидатов - это отличная разминка перед подробным разбором собеседования по программированию @@ -346,11 +346,11 @@ Google не возьмёт тебя на работу. - [ ] [Писать отличный код: Том 1: Понимание компьютера](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - Книга была опубликована в 2004 и отчасти она устарела, но благодаря ей вы быстро поймете как устроены компьютеры. - - Автор придумал HLA, поэтому скептически отнеситесь к примерам и упоминаниям HLA. Широко не используется, но содержит ряд примеров, демострирующих assembler. + - Автор придумал HLA, поэтому скептически отнеситесь к примерам и упоминаниям HLA. Широко не используется, но содержит ряд примеров, демонстрирующих assembler. - Чтение следующих глав не займет много времени и даст хорошую основу: - Глава 2 - Представление в числовой форме - Глава 3 - Двоичная арифметика и битовые операции - - Глава 4 - Представление числа с плавующей запятой + - Глава 4 - Представление числа с плавающей точкой - Глава 5 - Представление символа - Глава 6 - Организация памяти и доступа - Глава 7 - Составные типы данных и объекты в памяти @@ -358,7 +358,7 @@ Google не возьмёт тебя на работу. - Глава 10 - Набор инструкций - Глава 11 - Архитектура и организация памяти -Если вы рапологаете свободным временем (я хочу купить эту книгу): +Если вы располагаете свободным временем (я хочу купить эту книгу): - [ ] [Архитектура компьютера, 5-е издание: Количественный подход](https://www.amazon.com/dp/012383872X/) @@ -378,7 +378,7 @@ Google не возьмёт тебя на работу. - [ ] [Алгоритмы на C++, Части 1-4: Основы, Структуры данных, Сортировка, Поиск](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Алгоритмы на C++ Часть 5: Алгоритмы графов](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -Если вы можете порекоммендовать литературу по C++, которая лучше, сообщите мне об этом. Я ищу лучшие книги. +Если вы можете порекомендовать литературу по C++, которая лучше, сообщите мне об этом. Я ищу лучшие книги. ### Java @@ -417,12 +417,12 @@ Google не возьмёт тебя на работу. - автор описывает реальный опыт решения задач как академических, так и промышленных - примеры кода написаны на C - недостатки: - - местами изложение может быть не очевидным и не понятным как в CLRS (Cormen, Leiserson, Rivest, Stein), некоторые темы лучше описаны в CLRS + - местами изложение может быть неочевидным и непонятным как в CLRS (Cormen, Leiserson, Rivest, Stein), некоторые темы лучше описаны в CLRS - главы 7, 8, 9 сложно понять, некоторые вещи плохо разъяснены или требуют больших знаний чем есть у меня - - не поймите меня не правильно: Мне нравиться Skiena, ее стиль и манера изложения, но я не могу стать физически Stony Brook. + - не поймите меня неправильно: Мне нравится Skiena, его стиль и манера изложения, но я не могу стать физически Stony Brook. - каталог алгоритмов: - это реальная причина, почему следует купить эту книгу. - - о том как дойти до этой части. Обновлю, когда изучу этот раздел. + - о том, как дойти до этой части. Обновлю, когда изучу этот раздел. - Цитата Йеги: "Больше чем какая-либо другая книга, эта помогла мне понять насколько банальны задачи на графы - они должны быть в инструментарии каждого программиста. Книга так же включает в себя разбор базовых структур данных и алгоритмов сортировки, что является приятным бонусом. Но важнейшей частью стала вторая часть книги, которая написана как энциклопедия, описывающая большое @@ -465,7 +465,7 @@ Google не возьмёт тебя на работу. Прочитайте пожалуйста эту статью, что бы не совершать моих ошибок: -[Как сохранить знания в CS](https://googleyasheck.com/retaining-computer-science-knowledge/) +[Как сохранить знания в CS](https://startupnextdoor.com/retaining-computer-science-knowledge/) ### 2. Используйте карточки-напоминания @@ -477,7 +477,7 @@ Google не возьмёт тебя на работу. Сделай свой собственный бесплатно: - [Репозиторий сайта Flashcards](https://github.com/jwasham/computer-science-flash-cards) -- [Моя база данных с карточками](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): Имейте ввиду, я зделал больше чем требуется в Google, описав все начиная с assembler и заканчивая Python с машиным обучением и статистикой. +- [Моя база данных с карточками](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): Имейте в виду, я сделал больше чем требуется в Google, описав все начиная с assembler и заканчивая Python с машиным обучением и статистикой. **Заметка о карточках:** в первый раз вы сразу вспомните ответ, но не помечайте эту карточку как изученную. Нужно просмотреть много раз карточку и ответить правильно прежде чем вы действительно ее запомните. Повторение позволяет мозгу надолго @@ -541,10 +541,10 @@ Google не возьмёт тебя на работу. ## Необходимые знания - [ ] **Изучайте C** - - С используется везде. Вы встретите примеры в книгах, лекциях, видео, везде, пока вы будите учиться. + - С используется везде. Вы встретите примеры в книгах, лекциях, видео, везде, пока вы будете учиться. - [ ] [Язык программирования С, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - Это небольшая книга, но после ее прочтения вы получите необходимые знания по С и если будите практиковать, - то достаточно быстро его освоите. Понимание С поможет вам понять как программы и память работают. + - Это небольшая книга, но после ее прочтения вы получите необходимые знания по С и если будете практиковать, + то достаточно быстро его освоите. Понимание С поможет вам понять как работают программы и память. - [ответы на вопросы](https://github.com/lekkas/c-algorithms) - [ ] **Как компьютеры выполняют программу:** @@ -599,9 +599,9 @@ Google не возьмёт тебя на работу. - [ ] insert(index, item) - вставка элемента по индексу, сдвигает значение по индексу и следующие за ним элементы вправо - [ ] prepend(item) - может вставить элемент выше индекса 0 - [ ] pop() - удалить последний элемент, вернуть значение - - [ ] delete(index) - удаляет элемент по индексу, сдвигает все следующие за ним элементы в лево + - [ ] delete(index) - удаляет элемент по индексу, сдвигает все следующие за ним элементы влево - [ ] remove(item) - ищет элементы по значению и удаляет их, даже если их несколько - - [ ] find(item) - ищет элемент по значению и возвращает индекс первого найденного элемента, возвращает -1 если ничего не найденно + - [ ] find(item) - ищет элемент по значению и возвращает индекс первого найденного элемента, возвращает -1 если ничего не найдено - [ ] resize(new_capacity) // private function - когда массив полностью заполнен, увеличивает его размер вдвое - при добавлении элемента, если размер массива 1/4 от общего размера, увеличиваем на половину @@ -622,10 +622,10 @@ Google не возьмёт тебя на работу. - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Ага, попался: тебе нужны знания указетелей на указатели: + - [ ] Ага, попался: тебе нужны знания указателей на указатели: (для тех случаев, когда ты передаешь указатель функции, которая может менять адрес, куда указывает указатель) Это страница просто для того, чтобы понять указатели на указатели. Читабельность и обслуживаемость страдает - из-за искусность. + из-за искусности. - [Указатели на указатели](https://www.eskimo.com/~scs/cclass/int/sx8.html) - [ ] воплотить в жизнь (я сделал это с помощью указателя на хвост и без): - [ ] size() - возвращает количество элементов в листе @@ -661,13 +661,13 @@ Google не возьмёт тебя на работу. - enqueue(value) - добавляет элемент в конец очереди - dequeue() - возвращает значение и удаляет из очереди последний добавленный элемент(front) - empty() - - [ ] Реализация с приминением массива фиксированного размера: + - [ ] Реализация с применением массива фиксированного размера: - enqueue(value) - добавляет элемент в конец очереди - dequeue() - возвращает значение и удаляет из очереди последний добавленный элемент - empty() - full() - [ ] Затраты: - - плохая реализация с приминением связанного списка когда элемент добавляется в начало очереди и удаляется с конца очереди за O(n), + - плохая реализация с применением связанного списка когда элемент добавляется в начало очереди и удаляется с конца очереди за O(n), операция dequeue в таком случае будет требовать каждый раз обхода всего списка - enqueue: O(1) (amortized, связанный список и массив [probing]) - dequeue: O(1) (связанный список и массив) @@ -694,7 +694,7 @@ Google не возьмёт тебя на работу. - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - - [ ] реализация с помощью массива и приминением linear probing + - [ ] реализация с помощью массива и применением linear probing - hash(k, m) - m размер хеш-таблицы - add(key, value) - если ключ уже существует обновляем значение - exists(key) @@ -712,8 +712,8 @@ Google не возьмёт тебя на работу. - бинарный поиск с использованием рекурсии - ### Побитовые операции - - [ ] [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/google-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - ты должен знать сколько степеней двойки от (2^1 до 2^16 и 2^32) + - [ ] Даст отличное понимание манипуляций битами с помощью: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Хорошее введение: [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I)