Что должен знать системный администратор, программист-специалист по версии Яндекса. Книги. Программа подготовки

Подготовка

Опыт работы для стажировки в Яндексе не обязателен, но требуется хорошее знание одного из языков программирования. Многие из стажёров Яндекса остаются работать в компании постоянно, и мы собрали их полезные советы — самим себе в молодости и всем, кто всерьёз решил стать разработчиком.

  • Учите объектно-ориентированные языки: C++, Java или Python.
  • Для расширения кругозора не забывайте о функциональной, процедурной и других парадигмах.
  • Научитесь читать код, искать в нём ошибки.
  • Прочитайте об основных структурах данных (стек, очереди, деревья, хэш-таблицы) и алгоритмах сортировки: quicksort, mergesort, heapsort.
  • Попробуйте что-нибудь запрограммировать: написать игру, создать сайт или поднять сервер.
  • Практикуйтесь в командной работе, например, над учебными проектами или в опенсорс-сообществе.
  • Участвуйте в ACM ICPC, Яндекс.Алгоритме, TopСoder и других соревнованиях. Решайте алгоритмические задачи на Codeforces, Kaggle, ChekiO и подобных сайтах.

Ниже — далеко не полный и не исчерпывающий список полезных книг и ресурсов для самообучения. Чтобы стать стажёром в Яндексе, читать всё не нужно.
Полезные материалы

Математика

  • Курс ШАД «Дискретный анализ и теория вероятностей»
  • Курс MIT «Mathematics for Computer Science»
  • Курс EPFL «Linear and Discrete Optimization»
  • Курс Stanford «Probabilistic Graphical Models»
  • Курс Stanford и UBC «Game Theory»

Алгоритмы и структуры данных

  • Т. Кормен, Ч. Лейзерсон, Р. Ривест и др. Алгоритмы: построение и анализ
  • Материалы на сайтах e-maxx.ru и algolist.ru
  • Курс ШАД «Алгоритмы и структуры данных поиска»
  • Курс MIT «Introduction to Algorithms»
  • Курс Stanford «Algorithms: Design and Analysis»
  • Список алгоритмов и структур данных

Программирование

  • Брайан Керниган, Роб Пайк. Практика программирования
  • Эндрю Хант, Дэвид Томас. Программист-прагматик. Путь от подмастерья к мастеру
  • Курс UToronto «Learn to Program: Crafting Quality Code»
  • Курс Udacity «Design of Computer Programs»
  • Курс Brown University «Introduction to Programming Languages»

Системное администрирование

  • Брайан Керниган, Роб Пайк. Программное окружение Unix
  • Курс для начинающих «Learn to Program: The Fundamentals»
  • Э. Немет, Г. Снайдер, Т. Хейн и др. Unix и Linux. Руководство системного администратора
  • Кристофер Негус. Linux. Библия пользователя
  • У. Ричард Стивенс. Протоколы TCP/IP. Практическое руководство
  • W. Richard Stevens. TCP/IP Illustrated, Volume 1. The Protocols
  • Андрей Робачевский. Операционная система Unix
  • Марк Лутц. Изучаем Python
  • Advanced Bash-Scripting Guide в оригинале и на русском
  • Perl Compatible Regular Expressions
  • Курсы информационных технологий

Тестирование

  • Онлайн-класс «Software Testing Methodologies»
  • Онлайн-класс «Software Debugging»
  • Видеолекции ШАПР
  • С. Канер, Д. Фолк, Е. К. Нгуен. Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений
  • Роман Савин. Teстирование dот com
  • Р. Калбертсон, К. Браун, Г. Кобб. Быстрое тестирование
  • Glenford J. Myers. The Art of Software Testing
  • Том ДеМарко и Тимоти Листер. Вальсируя с Медведями
  • Семинар «Теория и практика нагрузочного тестирования»
  • Доклады с Тестовой среды
  • Школа тестирования баннерной системы

C++

  • Бьерн Страуструп. Язык программирования C++
  • Герб Саттер. Решение сложных задач на С++
  • Герб Саттер. Новые сложные задачи на С++
  • Г. Саттер, А. Александреску. Стандарты программирования на С++
  • Мартин Фаулер. Рефакторинг. Улучшение существующего кода
  • Э. Гамма, Р. Хелм, Р. Джонсон и др. Приемы объектно-ориентированного проектирования. Паттерны проектирования
  • Эндрю Таненбаум. Современные операционные системы

Java

  • Документация Java
  • Библиотека IBM developerWorks
  • Курс MIT «Introduction to Programming in Java»
  • Python
  • Документация Python
  • Курс Rice «An Introduction to Interactive Programming in Python»
  • Jeffrey Elkner, Allen B. Downey, Chris Meyers. How to Think Like a Computer Scientist
  • PEP 8 — Style Guide for Python Code
  • Google Python Style Guide
  • Mark Pilgrim. Dive Into Python
  • Alex Martelli, David Ascher. Python Cookbook
  • Фреймворк pytest
  • Python Packaging User Guide
  • The Hitchhiker’s Guide to Python

JavaScript

  • David Flanagan. JavaScript: The Definitive Guide (5-е издание)
  • John Resig. Pro JavaScript Techniques
  • Ross Harmes, Dustin Diaz. Pro JavaScript Design Patterns
  • Douglas Crockford. JavaScript: The Good Parts
  • Курс Tuts+ «30 Days to Learn HTML & CSS»
  • Курс Tuts+ «30 Days to Learn jQuery»

Git

  • Git Tutorials
  • Git Workflows
  • Git Internals
  • Scott Chacon, Ben Straub. Pro Git

Прочее

  • Джеффри Фридл. Регулярные выражения
  • Курс ШАД «Машинное обучение»
  • Курс Stanford «Machine Learning»
  • Курс Stanford «Natural Language Processing»

Взато отсюда: https://yandex.ru/jobs/internship/