Как стать автором
Поиск
Написать публикацию
Обновить
63.78

Занимательные задачки

Разминаем мозги

Сначала показывать
Порог рейтинга

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

import java.util.stream.Stream;
public class Main {
    public static void main(String[] args) {
        Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
        Integer result = prepareStream(stream);
        System.out.printf("Result after stream processing: %s%n", result);
    }

    private static Integer prepareStream(Stream<Integer> stream) {
        System.out.printf("Incoming stream with: %d elements%n", stream.count());
        return stream
                .map(integer -> integer++ + ++integer)
                .filter(integer -> integer % 3 == 0)
                .reduce(0, Integer::sum);
    }
}

Дальше будет решение, поэтому если не хотите спойлеров — не читайте!

.

.

.

Подвох в том, что будет выброшено исключение:

Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed
 at java.base/java.util.stream.AbstractPipeline.<init>(AbstractPipeline.java:203)
 at java.base/java.util.stream.ReferencePipeline.<init>(ReferencePipeline.java:96)
 at java.base/java.util.stream.ReferencePipeline$StatelessOp.<init>(ReferencePipeline.java:800)
 at java.base/java.util.stream.ReferencePipeline$3.<init>(ReferencePipeline.java:191)
 at java.base/java.util.stream.ReferencePipeline.map(ReferencePipeline.java:190)
 at Main.prepareStream(Main.java:16)
 at Main.main(Main.java:7)

Исключение выбрасывается из-за того, что при выводе в консоль лога с количеством элементов стрима мы использовали операцию stream.count(), которая является терминальной и делает дальнейшее использование стрима невозможным.

System.out.printf("Incoming stream with: %d elements%n", stream.count());

Ну а после того, как мы избавимся от лога, который нам все ломает, правильный ответ будет — 18.

С учетом postfix и prefix инкремента числа в каждой итерации мы получаем:
.map(1 → 1 + 3)...(5 → 5 + 7)

Потом после фильтрации по делению на 3 без остатка в стриме остаются числа 6 и 12. И при помощи операции reduce() находим сумму этих чисел.

Теги:
-1
Комментарии0

Хорошо ли вы разбираетесь в Python?

В Академии Selectel есть небольшой тест на владение синтаксисом Python. Он позволит оценить свои знания и отыскать пробелы. Вопросы подобраны для тех, кто уже не пугается None, но продолжает разбираться, что происходит «под капотом». Бонусом — подборка полезных материалов для изучения Python!

Пройти тест →

Теги:
+2
Комментарии0

Задача о поиске флага на видеосервере

Эта задача для тех, кто любит сложности и не боится искать верное решение, перебирая разные подходы. И особенно полезна тем, кто готовится к CTF-турнирам. Мы подготовили ее по следам соревнования Selectel для специалистов по информационной безопасности.

Условие
На видеосервере находятся очень ценные изображения, но для их просмотра необходимо пройти авторизацию! А для этого вам понадобится флаг — строка в формате slcctf{}.

Задача
Найдите флаг. Чтобы выполнить задание, перейдите на страницу http://watcher.slcctf.fun/.

Предлагайте свое решение в комментариях или подсмотрите его в Академии Selectel.

Теги:
+7
Комментарии0

Задача о Тирексе, который строил сеть наугад

Будет полезна всем, кто хочет попрактиковаться в комбинаторике на графах и лучше понять, как устроены остовные деревья.

Условие

Тирекс построил собственный дата-центр и теперь хочет объединить 15 серверов в одну сеть. Он не задумывается о надежности топологии, поэтому хочет использовать минимально возможное количество кабелей — 14. 

Схема дата-центра Тирекса.
Схема дата-центра Тирекса.

Задача

Тирекс случайным образом проложил 14 проводов. С какой вероятностью все серверы будут соединены в одну сеть? 

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

Предлагайте свое решение в комментариях. А правильный ответ можно подсмотреть в Академии Selectel.

Теги:
+7
Комментарии2

Подводя промежуточные итоги

Ареопаг челленджа имени Винтика и Шпунтика в лице @qbertych и вашего покорного, посовещавшись, принял решение выплатить @ripatti половину призового фонда конкурса (25000р). Артем опубликовал две замечательные статьи:

Винтик и Шпунтик, часть 1: формула включений-исключений

Винтик и Шпунтик, часть 2: гиперкубы, шляпы и фартуки

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

Теги:
Всего голосов 11: ↑11 и ↓0+16
Комментарии0

Задача о новой фиче, которую никто не видит

Задача будет полезна разработчикам веб-приложений и сервисов.

Текст подготовил Артём Шумейко — внештатный райтер, амбассадор Selectel и автор YouTube-канала о разработке.

Условие

В компании «ГигаПост» выпустили долгожданное обновление: на сайте появилась новая кнопка «Подписаться на тему». Интерфейс готов, API поддерживает, проверено на стенде — все работает как часы.

Но после релиза начались странности. Некоторые пользователи видят кнопку, а некоторые — нет. Кто-то говорит, что она появилась через сутки. Кто-то — что только после нажатия Ctrl+F5.

Команда фронтенда уверена — код задеплоен. Бэкенд-эндпоинт отвечает корректно. На тестовом стенде все видно. Даже сам разработчик открывает сайт на своем ноутбуке — кнопка есть.

Начали подозревать баг в логике отображения, потом — переключение языка, затем подумали про авторизацию. Но фича пропадает у пользователей даже с одинаковыми условиями.

И вот тогда кто-то предложил простую мысль: а пользователи вообще видят свежую версию сайта?

Задача

Почему часть пользователей не видит новую кнопку, хотя код задеплоили? В чем может быть причина? Где в цепочке доставки может остаться старая версия?

Предлагайте свое решение в комментариях. А правильный ответ можно подсмотреть в Академии Selectel.

Теги:
Всего голосов 8: ↑8 и ↓0+10
Комментарии3

Задача об анализе адреса

Задание будет интересно всем, кто любит CTF-турниры или просто не боится вызовов. Особенно — новичкам или опытным специалистам по информационной безопасности.

Условие
Вы — участник CTF-турнира. Ваша задача — как можно быстрее найти флаг.
Что известно: флаг находится на нестандартном порту сервера. Чтобы его получить, необходимо проанализировать адрес 79.141.77.70.

Задача
Найдите флаг — строку в формате slcctf{}.

Предлагайте свое решение в комментариях. Подсмотреть его можно в Академии Selectel.

Теги:
Всего голосов 6: ↑6 и ↓0+12
Комментарии1

Claude vs ChatGPT + Codex: Кто лучше решит комплексную задачу? Тестируем 6 моделей 💫

Ссылка на статью, там подробнее и с картинками

Суть эксперимента

Дал одинаковое задание ChatGPT и Claude: создать интерактивную игру с кодом и интерфейсом. Задача комплексная — нужно и код написать, и текст придумать, и интерфейс сделать

Наши испытуемые

  • ChatGPT: 4.1, o3, Codex-1

  • Claude: Sonnet 3.7, Sonnet 4, Opus 4

💬 Исходный промпт для всех моделей выбрал такой
Каждая модель ИИ получила идентичное задание

Давай сделаем игру на основе этого промпта

Придумай 10 заранее заготовленных Change (сам придумай) - и в формате истории рассказываешь что бы произошло

I want to simulate a new reality by altering a single variable. I'll give you the change, and you'll break down the cascade of consequences — starting from the most fundamental shift down to specific, real-world effects — so I can trace the full chain of cause and reaction. Let's begin with: [change]

Напиши код с интерфейсом

Да, промпт без всяких изысков и правил написания правильного промпта. Без указания ролей, структуры и тому подобного. Специально, что бы не фреймить модели на слишком точную задачу

Результаты по моделям ⤵️

ChatGPT семейство 💫

GPT o3 — 80 строк, 6KB Самый компактный код, но с серьезными косяками: текст размазан по экрану, нет viewport для мобилок, поверхностное выполнение основной задачи.

GPT 4.1 — 137 строк, 5KB
Наиболее сбалансированный результат среди ChatGPT. Есть viewport, чистый ES6+ код, корректная мобильная версия. Но отсутствуют медиазапросы и не подсвечивается выбранный вариант.

Codex-1 — 105 строк, 6KB Единственный из ChatGPT написал интерфейс на русском. Технически грамотно, но слабо раскрыл суть задачи — вместо каскада последствий дал простые описания в 2-3 предложения.

Claude семейство 💗

Sonnet 3.7 — 317 строк, 20KB Структурированный подход с выпадающими списками и кнопками выбора. Хорошо выполнил часть с "каскадом последствий". В 3.2 раза тяжелее ChatGPT решений, но функциональность это оправдывает

Sonnet 4 — 562 строки, 33KB Появились переходы между страницами с искусственными загрузками через setTimeout. Модель уже начала осознавать UX-принципы: время ожидания увеличивает вовлеченность

Opus 4 — 497 строк React, 26KB Полноценный React-компонент с JSX, анимациями и пошаговым интерфейсом. Opus реализовал не прототип, а интерактивный полноценный опыт, который можно хоть сейчас отправлять на прод

Главные выводы

ChatGPT: Vanilla JS, минимализм, работает и хорошо, файлы 5-6KB
Claude: Продуманная архитектура, UX-решения, выглядит вау, файлы 20-33KB

Разница в подходе и результате очень значительная — от HTML до React-приложений

Детальный разбор каждой модели, анализ кода, ссылки на GitHub, сравнение стоимости токенов, любопытные наблюдения о "личности" моделей и практические рекомендации для выбора — всё это в полной статье 👈

Там же найдете рабочие демо всех 6 результатов

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии1

На днях в офисе я столкнулась с коллегами из направления системного программирования в «Криптоните». Они пишут на С++ — а ошибки на этом языке у нас ещё не было!

Поэтому я попросила их придумать код с ошибкой специально для Хабра — и вот что получилось!

Итак, есть ли в этом коде проблема кроме narrowing conversion? Ждём ваши варианты в комментариях.

#include <cstdint>
#include <vector>

struct Type
{
    Type(uint16_t, uint32_t = {}) 
    {}
};

int main()
{
    std::vector<Type> vector;
    std::uint32_t object_id{};

    // Есть предупреждение о narrowing conversion
    vector.insert(vector.begin(), {0, object_id}); 

    // Нет narrowing conversion
    vector.push_back({0, object_id}); 

    // Нет narrowing conversion
    vector.insert(vector.begin(), Type{0, object_id}); 
}

АККУРАТНО, ДАЛЬШЕ СПОЙЛЕР!

Проблема в том, что в строке

 vector.insert(vector.begin(), {0, object_id});

в вектор вставляется 2 элемента типа Type, а не один, как ожидает программист.

Причина в том, что метод insert у вектора имеет перегрузку (номер 5), которая вторым параметром принимает std::initializer_list. А компилятор, видя фигурные скобки в коде, в первую очередь пытается создать объект такого типа.

И тут ему это удается, потому что у конструктора Type второй параметр имеет значение по умолчанию, следовательно, Type умеет создаваться, если в конструктор передали только один аргумент. В итоге компилятор успешно создает std::initializer_list с двумя элементами типа Type.

Так как создание std::initializer_list выполняется с использованием uniform initialization, то компилятор следит за корректностью преобразований. В примере объект типа std::uint32_t передается в конструктор Type, который принимает первым параметром std::uint16_t. То есть, возникает риск потери точности (32 бита не могут поместиться в 16 бит).

Об этом компилятор и предупреждает. Вот упрощенный пример, где видим то же самое предупреждение.

Может возникнуть вопрос, почему создание Type от 0 не вызывает предупреждение, ведь 0 - это int, а он, скорее всего 32 бита и тоже не помещается в 16 бит. Но тут литерал. Компилятор видит, что 0 вмещается в 16 бит и не предупреждает. Но если поместить int в переменную, то также возникает предупреждение.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Задача об анализе ответа сервера

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

Условие
На веб-сервере спрятан флаг. Отправьте правильный запрос, чтобы получить к нему доступ. Будьте внимательны при анализе ответа.

Задача
Найдите флаг — строку в формате slcctf{}. Чтобы выполнить задание, перейдите на страницу http://attention.slcctf.fun/.

Делитесь решением в комментариях. А правильный ответ можно посмотреть в Академии Selectel.

Теги:
Всего голосов 5: ↑5 и ↓0+8
Комментарии1

Задача о габаритном файле и ошибке

Привет, Хабр! Попробуйте решить задачу. Особенно интересно будет бэкенд-разработчикам, которые работают с микросервисной архитектурой и регулярно сталкиваются с неожиданным поведением инфраструктуры.

Условие

В компании «Доки.Онлайн» выкатили обновление: теперь пользователи могут загружать PDF-файлы с отсканированными договорами. Все работало отлично в локальной среде — разработчик протестировал загрузку больших файлов, убедился, что API обрабатывает их корректно, и спокойно отправил изменения в продакшн.

Но радость была недолгой. На боевом сервере при попытке загрузить файл система выдавала ошибку 413 Request Entity Too Large. Причем происходило это до того, как пользователь получал какой-либо отклик от самого приложения.

Разработчик Геннадий Завров начал искать причину. Он проверил логи всех четырех компонентов системы:

  • фронтенда;

  • API Gateway (определяет, в какой микросервис послать запрос);

  • микросервиса загрузки файлов;

  • микросервиса обработки документов.

Во всех логах пусто, будто никакого запроса и не было. Ни один сервис даже не попытался начать обработку файла.

Геннадий начал подозревать сетевые сбои, перегрузку API Gateway и баг в коде фронтенда. Однако простые тесты с маленькими файлами работали стабильно. Проблема проявлялась только при загрузке чего-то «потяжелее».

В какой-то момент он задал себе вопрос: а точно ли запрос доходит до приложений?

Задача

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

Делитесь своим ответом в комментариях. А посмотреть полное решение можно в Академии Selectel.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии3

Занимательные задачи от Cloud.ru ☁️

Привет! Вновь с вами Павел Бузин — эксперт Cloud.ru по AI, машинному обучению и точным наукам. Это финальная задача нашего интеллектуального марафона, в которой я предлагаю пересмотреть или просто вспомнить, пожалуй, самый культовый фильм «Бойцовский клуб» и подумать об отношениях главных героев — рассказчика-протагониста и Тайлера Дёрдена.

Если мы посмотрим на Тайлера спустя четверть века после выхода фильма, кого мы представим в первую очередь? Цифрового аватара-двойника? Ассистента с искусственным интеллектом, умело манипулирующего своим хозяином? Или вторую половину раздвоившейся личности рассказчика?

Вот несколько лежащих на поверхности фактов в пользу аватара: взрыв в квартире рассказчика, переход Марлы через дорогу в нужный момент, покупка авиабилетов, о которых не помнит рассказчик.

А теперь предлагаю посмотреть на Тайлера с позиции теста Тьюринга. На какие логические противоречия по сюжету фильма может опереться рассказчик, чтобы делать вывод о том, что Тайлер Дёрден — его цифровой аватар, а не его человеческое альтер-эго?

Делитесь вариантами в комментариях 👇 Обсудим их 30 мая.

Теги:
Рейтинг0
Комментарии1

Занимательные задачи от Cloud.ru ☁️

Привет! На связи Павел Бузин — эксперт Cloud.ru по AI, машинному обучению и точным наукам. Сегодня предлагаю вспомнить фильм Кин-Дза-Дза и известное выражение «Скрипач не нужен!».

В статьях Википедии, посвященных культовому фильму Кин-Дза-Дза, нет прямого изложения сюжета про катапультирование Гедевана Александровича. Как результат — современные LLM не понимают контекста этого выражения и начинают галлюцинировать.

В качестве тренировки навыков промт-инжиниринга предлагаю спросить разные LLM на эту тему. Как минимум вы получите большое удовольствие, спрашивая в разных вариантах «Скрипач не нужен!», «Не Скрипач нужен!», «Нужен не Скрипач!» и т. д.

P. S. Если вы вспомните, что внутри LLM оперирует эмбеддингами, вы сможете обнаружить и сравнить неэквивалентность «Скрипач не нужен!», «Нужен не Скрипач!» и других вариантов в понимании современных LLM.

Делитесь самыми интересными вариантами в комментариях 👇 Результаты обсудим 30 мая.

Теги:
Рейтинг0
Комментарии1

Ближайшие события

Привет! Собрали для вас три интересных разбора математических задач из журнала КОД, которые помогут размять мозг.

  1. Почему время на сервере отличается от времени у пользователей
    Разбираемся, почему в некоторых сервисах вы видите странное время публикации сообщений и что происходит с временными метками на бэке.
    Читать статью

  2. Миллион умножений и нестандартное мышление
    История о популярной школьной задаче, где нужно перемножить много чисел. Важно не просто посчитать, а придумать оптимальное решение. Пример того, как иногда важно выйти за рамки шаблонов.
    Читать статью

  3. Самая сложная задача для школьников, которую никто не смог решить
    Разбор олимпиадной задачи, которая оказалась настолько непростой, что за всё время не нашлось ни одного решения. Хороший повод задуматься, почему некоторые вопросы сложнее, чем кажутся на первый взгляд.
    Читать статью

Теги:
Рейтинг0
Комментарии0

Посмотрите на код ниже — где в нём проблема? Пишите ваши мысли в комментариях, а ниже мы дадим решение ошибки.

object UnitError {

def printMsg(message: String): Unit = {
 println(message)
 }

def process(data: List[Int]): List[Unit] = {
 for (element <- data) yield {
 printMsg(s"Элемент: $element")
 }
 }

def main(args: Array[String]): Unit = {
 val nums = List(1, 2, 3)
 val res = process(nums)
 println(s"Результат: $res") // Вывод List[Unit] даёт неожиданный результат
 }
 }

Дальше будет решение — если не хотите спойлеров, пролистните текст ниже.

Ошибка заключается в неверной конструкции при использовании функции process. Она возвращает пустые значения: List((), (), ()). Происходит это потому, что yield собирает результаты каждой итерации. В итоге получается список, состоящий из пустых значений Unit — по одному на каждый элемент в data.

Unit в Scala — это аналог void в Java и Си-подобных языках, означающий пустое значение. В данном примере yield собирает результаты printMsg(...), которые все являются Unit (пустыми).

Программисты, привыкшие к императивным языкам и переходящие на Scala, интуитивно ожидают, что такая конструкция будет возвращать какие-то преобразованные данные, например — как это делает map в JavaScript. То есть, начинающие скалисты могут ожидать здесь на выходе список элементов, а получат пустой вывод.

Исправление

Если требуется вернуть список преобразованных значений, тогда нужно использовать эти значения в yield.

def printMsg(message: String): String = { // Теперь возвращает String
 println(message)
 message // Возвращает саму строку
 }

def process(data: List[Int]): List[String] = { // Теперь функция возвращает List[String]
 for {
 element <- data
 } yield {
 printMsg(s"Обрабатываем элемент: $element") // Теперь выводится результат String
 }
 }
Теги:
Рейтинг0
Комментарии1

Задача о поиске флага в журналах системы

Несложная задача с CTF-турнира. Будет интересна всем, кто интересуется информационной безопасностью.

Условие
Представьте, что вы — дежурный инженер. Вместе с коллегами вы ежедневно фиксируете состояние информационной системы в специальном журнале. Этот документ помогает определять угрозы и вовремя на них реагировать.

Однажды ваши коллеги рассказали, что где-то на странице журнала находится флаг. Но вот где именно — не раскрыли. Попробуйте найти этот флаг без подсказок коллег.

Задача
Найдите флаг — строку в формате slcctf{}. Чтобы выполнить задание, перейдите на страницу http://findme.slcctf.fun/.

Делитесь своим решением в комментариях. А правильный ответ можно посмотреть в Академии Selectel.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

Интеллектуальная разминка с Cloud.ru 🦾

Всем привет! Продолжаем занимать вас интеллектуальными задачами, и наша следующая — по мотивам фантастической комедии «Быть Джоном Малковичем»:

Примерно на 19-й минуте фильма Крег Шварц выясняет имя своей коллеги Максин, с которой он решил обязательно познакомиться. Крег произносит, казалось бы, нечленораздельную последовательность звуков «ваал-люуупэлюкааадашээрзуузээльмэммамайманмаксин» и следит за реакцией Максин. Алгоритм Крега понятен — после того как ему удается угадать первую букву имени, он видит положительную реакцию на лице Максин и переходит к следующей и следующей букве, озвучивая «мэммамайманмаксин». После четвертой угаданной буквы ему удается подставить полное имя из словаря. 

Вопрос: сколько букв потребуется озвучить, чтобы выяснить методом Крега Шварца первые четыре буквы имени на русском языке? Будем считать, что имя из числа распространенных и не начинается на Й, Ь, Ы, Ъ, Ч, Ш и Щ.

При решении рекомендуем использовать поисковые системы, AI и Википедию.

Варианты ответов оставляйте в комментариях 👇 Я Павел Бузин — эксперт Cloud.ru по AI, машинному обучению и точным наукам, раскрою правильный ответ под этим постом 16 мая.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии1

Проверьте точность ваших вычислений 🧮

Привет, Хабр! Мы продолжаем рубрику для тех, кто хочет размять мозги. На этот раз предлагаем вспомнить момент из фильма про Алана Тьюринга «Игра в имитацию».

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

Вопрос: какова должна быть минимальная длина случайной последовательности, чтобы четыре единицы подряд в последовательности (четыре реакции на шифровки) были неотличимы от случайности? 

Иначе говоря: найдите математическое ожидание количества бросков монеты до первого появления четырех единиц подряд (т. е. «орел», «орел», «орел», «орел») в последовательности бросков, если вероятности выпадения 1 («орла») и 0 («решки») равны и независимы друг от друга.

При решении рекомендуем использовать поисковые системы, AI и Википедию.

Варианты ответов оставляйте в комментариях 👇 Я Павел Бузин — эксперт Cloud.ru по AI, машинному обучению и точным наукам, раскрою правильный ответ под этим постом 12 мая.

Теги:
Рейтинг0
Комментарии2

Майский марафон интеллектуальных задач 🤖

Привет, Хабр! Праздники на носу, и чтобы вы не успели заскучать, мы подготовили для вас новую партию интеллектуальных задач. На этот раз на интуицию и сообразительность 😉. 

В фильме «Умница Уилл Хантинг» главный герой — двадцатилетний Уилл Хантинг из Южного Бостона, гений-самоучка, который работает уборщиком в Массачусетском технологическом институте и проводит свободное время, выпивая с друзьями Чаки, Билли и Морганом. В один момент профессор Джеральд Ламбо вывешивает на доске сложную комбинаторную математическую задачу, а Уилл ее решает. Попробуйте решить похожую задачу:

Есть фигура, составленная из двух тетраэдров, как показано на рисунке выше. Вопросы:

  • каким количеством вариантов можно добраться от вершины A до вершины B, не посещая на пути каждую вершину более одного раза?

  • какая длина самого длинного пути из вершины A до вершины B, если длина ребра равна 1, и мы не проходим одно ребро более одного раза? 

Варианты ответов оставляйте в комментариях 👇 Павел Бузин (@pbuzin) — эксперт Cloud.ru по точным наукам, AI и машинному обучению, раскроет правильный ответ под этим постом 5 мая.

Теги:
Рейтинг0
Комментарии10

Подборка задачек на тему сетевых технологий от Selectel

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

  • Задача о пропавшем интернете и резервировании каналов связи. Вы — создатель онлайн-игры, которая в последнее время набрала завидную популярность. Ваши игровые серверы доступны 24/7, и аудитория стремительно растет. Все вроде бы хорошо, пока в офисе не пропадает интернет… Настройте BGP и политики маршрутизации так, чтобы стоимость интернет-трафика оказалась минимальной, но доступ в интернет был зарезервирован от аварий у любого из операторов связи.

  • Задача об адресации в локальной вычислительной сети. Артем работает в сетевом департаменте фабрики по производству плюшевых тирексов. У фабрики появилось новое здание, для которого Артем проектирует локальную вычислительную сеть. Есть блок адресов 172.65.0.0/23 и восемь отделов, которым нужно определенное количество адресов. Помогите Артему разбить блок адресов 172.65.0.0/23 по отделам.

  • Задача об IP-адресе подсети. Даша мечтает попасть на стажировку в сетевой департамент IT-компании. Чтобы пройти отбор, ей необходимо решить задачу: найти адрес подсети, зная IP-адрес 192.168.150.111 и маску 255.255.255.224. Помогите ей найти адрес подсети и попасть на стажировку.

  • Задача об отказоустойчивом построении сети. У вас есть два сервера, на которых расположен один и тот же сервис. Он имеет один IP-адрес. Есть master-нода и standby-нода. Вам нужно защитить сервис на случай падения сервера. Реализуйте схему «горячего» резерва, то есть без выключения standby-ноды.

  • Задача об IP-адресах для новых сотрудников. В компании появилось пять новых сотрудников, и HR попросили сисадмина Платона помочь в подготовке рабочих мест. У него есть список IP-адресов, но только часть из них можно назначить коллегам. Определите, какие адреса можно использовать, а какие нет. Объясните, почему другие не подходят.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Вклад авторов