Курс для розробників, готових вийти на новий рівень в кар'єрі за короткий термін.
- Спотикаєтеся при вирішенні хитрих алгоритмічних задач на співбесідах?
- Сумніваєтеся як достовірно порахувати часову складність алгоритму?
- Хочете братися за складні проекти і знаходити елегантне рішення?
Кому підійде курс:
- Початківцям розробникам для впевненого старту і проходження ТЕХНІЧНИХ співбесід.
- Розробникам, які прагнуть на рівень вище - на позиції Middle і Senior. Отримайте вигідну перевагу на тлі інших кандидатів.
- Тим, хто хоче братися за складні проекти і працювати в IT-гігантах, і пройти багатоступінчастий жорсткий відбір.
- Тим, хто хоче брати участь в олімпіадному програмуванні, готовий вчитися новому і допитливість його друге ім'я.
1. Фундаментальна теоретична база
Щоб навчитися писати власні алгоритми, потрібно знати досконально як вони працюють.
2. Прокачаєтеся в математиці
Математика для програмістів потрібна в серйозних проектах і нетривіальних завданнях.
3. Багато практики і рішення алгоритмічних задач
Вирішуємо вправи і завдання різної складності, в тому числі олімпіадні і бізнес-завдання.
4. Підготовка до технічної співбесіди
Під час курсу ви потренуєтеся у вирішенні реальних завдань з технічних співбесід.
після навчання ви:
- Дізнаєтеся чому розробнику важливо розбиратися в структурах даних і алгоритмах.
- Навчіться відтворювати з нуля будь-який алгоритм і писати власні.
- Зрозумієте як збільшувати продуктивність коду завдяки розумінню часової складності і витратам по пам'яті.
- Зможете порівнювати структури даних і вибирати оптимальний варіант для конкретного завдання.
- Почнете впевнено себе почувати при проходженні ТЕХНІЧНИХ співбесід в будь-які IT-компанії світу.
Блок 1-основний
1. Лінійні структури даних.
2. Рекурсія та комбінаторика.
3. Сортування та пошук.
4. Гешування.
5. Графа.
6. Деревина.
7. Динамічне програмування.
Блок 2-кар'єрний
1. Лінійні структури даних.
- Вступ до алгоритмів та структур даних.
- визначення асимптотики, оцінка часу роботи програми, оцінка витраченої пам'яті.
- Однозв'язні і двозв'язні списки, робота з ними.
2. Рекурсія та комбінаторика.
- рекурсивні перебори, перебори всіх комбінаторних об'єктів.
- Перестановки, розбиття на доданки, рядки Фібоначчі.
- перебір бітових масок.
3. Сортування та пошук.
- сортування, використання вбудованої функції sort в мовах.
- Алгоритм бінарного пошуку. Бінарний пошук по відповіді.
4. Гешування.
- Принцип хешування. Парадокс днів народження. Відомі алгоритми хешування. Полиномиальное хешування.
- алгоритми на рядках.
- хеш-таблиця, вбудована реалізація, власна реалізація.
5. Графа.
- графи. Представлення графіків та алгоритм DFS.
- графи. Завдання про пошук найкоротшого шляху в графі, алгоритм BFS.
- Алгоритм Дейкстри.
6. Деревина.
- графи. Представлення дерев. Алгоритми на деревах.
- бінарне дерево пошуку, робота з ним.
- AVL-дерево.
- купи. Дерева Хаффмана.
7. Динамічне програмування.
- Завдання динамічного програмування. Базові застосування. Префіксні суми.
- Завдання динамічного програмування. Складні завдання. Задача про рюкзак.
- кінцеві автомати. Регулярні вирази.
Блок 2-кар'єрний
- фішки проходження ТЕХНІЧНИХ співбесід у великі IT-компанії.
- Mock-інтерв'ю "Співбесіда в Amazon".
https://privatelink.de/?https://skillfactory.ru/algo