Введення в питання інтерв'ю з питаннями інтерв'ю та відповідями
Дизайн системи - це процедура визначення елементів такої системи, як архітектура, компоненти та модулі, різні інтерфейси цих компонентів та статистика, яка проходить через цю систему. Завдяки розробці логічної та ефективної системи вона покликана задовольнити конкретні вимоги та потреби бізнесу чи організації. Це тягне за собою організований підхід до проектування системи. Підхід «знизу вгору» або «згори вниз» необхідний для врахування всіх пов'язаних змінних системи. Мови моделювання використовуються дизайнером для передачі даних та знань у структурі системи, яка визначається сумісним набором правил та визначень. Конструкції можна описати мовами текстового чи графічного моделювання.
Деякі приклади мов графічного моделювання:
- Уніфікована мова моделювання (UML): описує програмне забезпечення як поведінково, так і структурно з графічними позначеннями.
- Позначення моделювання бізнес-процесів (BPMN): використовується для моделювання процесів
- Мова моделювання систем (SysML): використовується для інженерії систем.
- Блок-схема: символічне або поетапне зображення алгоритму.
Що слід передбачити в інтерв'ю із дизайном системи?
Таке інтерв'ю зазвичай починається з дуже відкритої проблеми, наприклад, створити власну соціальну мережу (наприклад, Facebook, Twitter). По мірі прогресу дискусії інтерв'юер додасть додаткові обмеження чи припущення, щоб зменшити масштаб проблеми.
Щоб вирішити ці питання, практичні та практичні підходи мають практику.
Тепер, якщо ви шукаєте роботу, пов’язану з дизайном системи, тоді вам потрібно підготуватися до питань інтерв'ю щодо дизайну системи 2019 року. Це правда, що кожне інтерв'ю відрізняється за різними профілями роботи. Тут ми підготували важливі запитання та відповіді щодо проектування системи, які допоможуть вам досягти успіху в інтерв'ю.
У цій статті статті щодо питань інтерв'ю щодо дизайну системи ми представимо 10 найважливіших і найчастіше заданих питань інтерв'ю щодо дизайну системи. Ці питання поділяються на дві частини:
Частина 1 - Інтерв'ю-питання щодо проектування системи (основні)
Ця перша частина стосується базового дизайну системи. Інтерв'ю. Питання та відповіді
Q1) Дизайн TinyURL або bit.ly (послуга скорочення URL-адрес)?
Відповідь:
Придумайте функції, які система повинна підтримати спочатку. По-друге, придумайте приблизну кількість того, наскільки масштабованою може бути система.
При розробці послуги слід враховувати три речі:
- API (REST API) - комунікаційний підхід клієнта з сервісом разом з балансиром навантаження, який є передньою частиною послуги.
- Шар програми - робочі потоки або хости, які беруть URL-адресу і генерують для неї крихітну URL-адресу і зберігають їх обох у шарі збереження.
- Шар стійкості - База даних
Речі для аналізу:
- Створіть унікальний ідентифікатор для кожної URL-адреси та генеруйте ідентифікатори в масштабі, оскільки 1000 запитів на скорочення URL-адреси надходять щосекунди.
- Перенаправлення службової обробки.
- Підтримка користувацьких URL-адрес.
- Відстеження статистики кліків
- Видаліть прострочені URL-адреси
2) Дизайн YouTube / Netflix (глобальна послуга потокового відео)?
Відповідь:
Речі для аналізу:
- У відеороликах сервіс буде зберігати та передавати величезну кількість даних, яку велика кількість користувачів може одночасно переглядати та ділитися ними.
- Запишіть статистику щодо відео, наприклад, загальну кількість переглядів, збільшити кількість голосів / голосів тощо.
- Додавання коментарів до відео в режимі реального часу.
Компоненти:
- OC - Хмари, такі як AWS, OpenConnect, які виконують роль мережі доставки вмісту.
- Бекенд - База даних
- Клієнт - будь-який пристрій (Настільний ПК, Android, iPhone), з якого ви відтворюєте відео на YouTube / Netflix.
Перейдемо до наступних питань інтерв'ю щодо дизайну системи.
3) Проектування Quora / Reddit / HackerNews (соціальна мережа + послуга дошки оголошень)?
Відповідь:
Речі для аналізу:
Люди, які користуються послугами, можуть ділитися посиланнями або публікувати запитання. Інші користувачі можуть відповідати на питання або коментувати спільні посилання. Отже, сервіс повинен робити наступне:
- Запис статистики для кожної відповіді, наприклад, загальна кількість переглядів, збільшити кількість голосів / голосів тощо.
- Користувачі повинні мати можливість слідкувати за іншими користувачами чи темами
- Список основних питань на шкалі часу від усіх користувачів та теми, які вони дотримуються (подібно до генерації новин).
4) Дизайн Facebook Messenger або WhatsApp (глобальна послуга чату)?
Відповідь:
Це основні запитання щодо інтерв'ю системи, задані в інтерв'ю. Речі для аналізу:
- Розробіть один на один розмови між користувачами.
- Розширення вашого дизайну на підтримку групових чатів.
- Що можна зробити, коли користувач не підключений до Інтернету?
- Коли надсилати push-повідомлення?
- Як забезпечити шифрування в кінці?
Структура:
Клієнт> Балансир завантаження> Вузли> Кеш (Redis)> База даних (Касандра)
5) Дизайн пошуку Typeahead (автозавершення)?
Відповідь:
Речі для аналізу:
- Пропозиції типу "голова" мають бути надані.
- Критерії вибору пропозицій.
- Чи потрібна система в режимі реального часу?
- Підтримка персоналізації пропозицій.
- Запити в секунду, яку повинна обробляти система.
- Кількість даних, що підлягають збереженню.
Частина 2 - Питання інтерв'ю щодо проектування системи (розширено)
Давайте тепер ознайомимось із розширеними питаннями інтерв'ю щодо дизайну системи.
6) Дизайн Dropbox / Google Drive / Google Photos?
Відповідь:
Речі для аналізу:
- Як завантажувати / переглядати / шукати / ділитися файлами чи фотографіями?
- Відстежуйте дозволи для спільного використання файлів.
- Дозволити декільком користувачам редагувати один і той же документ.
7) Дизайн Facebook, Twitter або Instagram?
Відповідь:
Особливості, які слід враховувати:
- Деякі функції Twitter / Facebook / Instagram мають підтримуватися.
- Потрібно підтримувати відповіді на твіти / групувати твіти за розмовами.
- Контроль конфіденційності навколо кожного твіту.
- Підтримуючі твітні твіти
- Пряме повідомлення
- Згадки / Позначення
Речі для аналізу:
- Кількість користувачів та трафік, якими керує система.
- Кількість підписників, які має користувач.
- Кількість разів, коли твіт був вибраний.
Компоненти, необхідні для проектування:
- Покоління новин
- Соціальний графік
- Систематичний пошук та зберігання публікацій / твітів.
Перейдемо до наступних питань інтерв'ю щодо дизайну системи.
8) Дизайн веб-сканера?
Відповідь:
Необхідний масштабований сервіс, який може сканувати всю мережу та збирати сотні мільйонів веб-документів.
Речі для аналізу:
- Пошук нових веб-сторінок.
- Визначення пріоритетів для веб-сторінок, що динамічно змінюються.
- Переконайтесь, що сканер не безмежно приєднаний до одного домену.
9) Дизайн Uber:
Відповідь:
Це найчастіше задані питання інтерв'ю System Design в інтерв'ю. Архітектура: Монолітні / мікро-сервіси (служба в режимі реального часу, Front-end (додаток) та база даних)
- Резервний сервіс - це обслуговування трафіку мобільного телефону, і клієнти підключаються до сервера за допомогою мобільних даних.
- Клієнти посилаються на диспетчерську систему, яка відповідає водіям та водіям.
- Відправка майже повністю пишеться в node.js.
- Карти / ETA: Для того, щоб диспетчер здійснив розумний вибір, важливо отримати карти та дані про маршрутизацію.
- Послуги: Служби бізнес-логіки здебільшого написані пітоном.
- Бази даних: Postgres, Redis, MySQL.
Речі для аналізу:
- Клієнт запитує проїзд та як їх економно співставити з водіями, що знаходяться поблизу.
- Зберігання тонн географічних місць для водіїв та водіїв, які завжди в русі.
- Обробка оновлень для розташування драйверів.
10) Створіть обмежувач швидкості API (Github)?
Відповідь:
Речі для аналізу:
- Обмеження кількості запитів, яке може надіслати суб'єкт господарювання в API протягом часового вікна, наприклад, десять запитів в секунду.
- Обмеження швидкості повинно працювати для розсіяної установки, оскільки API доступні через групу серверів.
Рекомендовані статті
Це було керівництвом до списку запитань та відповідей щодо інтерв'ю дизайну системи, щоб кандидат міг легко розправити ці запитання щодо інтерв'ю із дизайном системи. Ось у цій публікації ми вивчили основні запитання щодо інтерв'ю системи, які часто задаються в інтерв'ю. Ви також можете переглянути наступні статті, щоб дізнатися більше -
- Питання для інтерв'ю AutoCAD
- Питання для інтерв'ю Photoshop
- Adobe Illustrator для початківців
- Помічник графічного дизайнера