Читать книгу Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию - Гейл Макдауэлл - Страница 39

Часть VIII. Вопросы собеседования
Концепции и алгоритмы. Вопросы и советы
11. Масштабируемость и ограничения памяти

Оглавление

Несмотря на пугающее название, вопросы о масштабируемости чаще всего оказываются самыми легкими. Нет никаких ловушек и необычных алгоритмов (по крайней мере обычно их не бывает). Вам не нужно посещать спецкурсы по распределенным системам или иметь опыт системного проектирования. Любой умный программист с небольшим опытом может непринужденно ответить на все эти вопросы.

Пошаговый подход

Интервьюеры не пытаются проверить ваши знания в области системного проектирования. Фактически, интервьюеры чаще всего проверяют только знание основ информатики. Приведенная ниже последовательность действий отлично помогает при решении многих задач системного проектирования.


Шаг 1. Абстрагируйтесь от реальности

Представьте, что все данные хранятся на одном компьютере и не существует никаких ограничений памяти. Как бы вы решили задачу? Ответ на этот вопрос позволит построить общую схему решения.


Шаг 2. Вернитесь к реальности

Вернитесь к исходной задаче. Сколько данных можно разместить в одном компьютере? Какие проблемы могут возникнуть, если вы разделите данные? Обычно достаточно выяснить, как разделить данные и как дать понять одному из компьютеров, где находится недостающая информация.


Шаг 3. Решите задачу

Подумайте о том, как избавиться от обнаруженных проблем. Помните, что решение может полностью исключить проблему или немного улучшить ситуацию. Скорее всего, вам будет достаточно слегка модифицировать исходный алгоритм (шаг 1), но иногда его требуется существенно изменить.

Используйте итерационный подход. Как только проблемы, появившиеся на втором шаге, будут устранены, могут появиться новые, и вам придется заняться ими.

Ваша цель – не спроектировать сложную систему, на которую компании придется потратить миллионы долларов, а продемонстрировать, что вы можете анализировать и решать задачи подобного плана.

Что нужно знать: информация, стратегия и проблема

Типичная система

Хотя суперкомпьютеры еще не канули в Лету, многие веб-ориентированные компании используют огромные распределенные системы. Скорее всего, вам придется работать в такой системе.

Заполните следующую таблицу перед собеседованием, она поможет запомнить, сколько данных может находиться на компьютере.


Конец ознакомительного фрагмента. Купить книгу
Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию

Подняться наверх