Скрининг на middle-senior Python Разработчик в ****

Доступно с премиум-подпиской

Оформите премиум-подписку, чтобы получить доступ к:

  • Фильтрации по компаниям
  • Названиям компаний в интервью
  • Видеозаписям собеседований в категории Python Разработчик

Посмотреть видео в категории

(2025-01-30)

Задача на скрининге: Система фильтрации сетевого трафика

Вы разрабатываете систему фильтрации сетевого трафика для межсетевого экрана. Цель системы — фильтровать пакеты в зависимости от их типа и политики безопасности.

Каждый тип пакета обрабатывается по-разному:

  1. HTTP-пакеты — проверяются на наличие запрещенных URL.
  2. DNS-запросы — проверяются на запрещенные домены.
  3. ICMP-пакеты — блокируются, если исходят от запрещенных IP-адресов.

Задание:

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

Ожидаемый результат:

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

Пример:

# Входные данные
packets = [
    {"type": "http", "url": "example.com"},
    {"type": "dns", "domain": "blocked.com"},
    {"type": "icmp", "src_ip": "192.168.1.1"}
]

# Ожидаемый результат
# HTTP-пакет с example.com - разрешен
# DNS-запрос к blocked.com - заблокирован
# ICMP-пакет от 192.168.1.1 - заблокирован

Задача на скрининге: Бинарное дерево (из изображения)

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

Например, для дерева

    5
   / 
  4   2
 /  / 
1   6 3
     
      7

Результатом будет число 14 (1 + 6 + 7).

class Node(object):
    def __init__(self, value, left=None, right=None):
        self.value = value
        self.left = left
        self.right = right

def tree_sum(root: Node) -> int:
    ...

Вложения

40_1531_photo.jpg