Sobes.tech

Что если вы считаете что проект требует чистой архитектуры, но менеджер говорит доставлять быстро с грязной архитектурой?

Middle
aya
0

Тесты: без тестов время на добавление фичи растёт экспоненциально, с тестами — линейно или медленнее?

Middle
aya
0

# Банкомат, который заряжается кассетами с купюрами, с нашим приложением на борту # должен уметь выдавать купюры для заданной суммы или отвечать отказом # При выдаче купюры списываются с баланса банкомата. # Допустимые номиналы: 50Р, 100Р, 500Р, 1000Р, 5000Р. class ATM: pass # место для кода # Устройство банкомата: # - деньги расположены в кассетах внутри банкомата, которые загружает инкассатор и перезагружает банкомат; # - в каждой кассете лежат купюры своего номинала; # - банкомат может подсчитать оставшиеся в кассетах банкноты, но эта операция занимает продолжительное время - её стоит вызывать как можно реже. # API для взаимодействия с аппаратурой банкомата. # интерфейс SDK может быть изменён/расширен по договорённости сторон, если это необходимо class SDK(ABC): @abstractmethod def count_banknotes(self, banknote: int) -> int: pass @abstractmethod def move_banknote_to_dispenser(self, banknote: int, count: int) -> None: pass @abstractmethod def open_dispenser(self) -> None: pass

Senior
Яндекс
0

Какой правильный вариант выдачи купюр — почему нужно выдавать максимально крупными купюрами?

Senior
Яндекс
0

```python BILLS = (5000, 1000, 500, 100, 50) class SDK(ABC): @abstractmethod def count_banknotes(self, banknote: int) -> int: pass @abstractmethod def move_banknote_to_dispenser(self, banknote: int, count: int) -> None: pass @abstractmethod def open_dispenser(self) -> None: pass class ATM(): def __init__(self, atm_api: SDK): self.atm_api: SDK = atm_api def withdraw(self, amount: int) -> bool: bills_plan: dict[int: int] = {} for bill in BILLS: available = self.count_bills(bill) self.atm_api.open_dispenser() for bill, count in bills_plan.items(): self.atm_api.move_banknote_to_dispenser(bill, count) return True ``` Complete the implementation of the `withdraw` method in the `ATM` class to correctly dispense the requested amount using the available banknotes.

Senior
Яндекс
0

В какой правильной последовательности должна работать выдача денег в реальном банкомате?

Senior
Яндекс
0

from file import ATM, SDK import pytest BILLS = {5000, 1000, 500, 100, 50} @pytest.mark.parametrize( "bills_count_const,expected", [ ({5000: 0, 1000: 0, 500: 0, 100: 0, 50: 0}, False), ({5000: 100, 1000: 100, 500: 100, 100: 100, 50: 100}, True) ] ) def test_false(bills_count_const, expected): atm = ATM(SDK()) atm.bills_count = bills_count_const amount = 1000 res = atm.withdraw(amount) assert res == expected return

Senior
Яндекс
0

class ATM(SKD): def __init__(self, atm_api: "SKD"): self.atm_api: SKD = atm_api self.bills_count: dict[int:int] = {bill: self.atm_api.count_banknotes(bill) for bill in BILLS} def withdraw(self, amount: int) -> bool: bills_plan: dict[int: int] = {} remaining = amount for bill in BILLS: available = self.bills_count[bill] take = min(remaining // bill, available) if take > 0: bills_plan[bill] = take remaining -= take * bill if remaining != 0: return False bills_count_const = {50: 0, 100: 2, 500: 0, 1000: 0, ...}, expected = True @pytest.mark.parametrize( "bills_count_const,expected", [ ({5000: 0, 1000: 0, 500: 0, 100: 0, 50: 0}, False), ({5000: 100, 1000: 100, 500: 100, 100: 100, 50: 100}, True), ({5000: 1, 1000: 0, 500: 0, 100: 2, 50: 0}, True) ] ) def test_false(bills_count_const, expected): atm = ATM(FakeSDK()) atm.bills_count = bills_count_const amount = 1000 res = atm.withdraw(amount) assert res == expected

Senior
Яндекс
0

Как обработать граничные случаи входных данных — отрицательные числа, слишком большие суммы, некорректные значения?

Senior
Яндекс
0

# Усложнение # У нас появляется новая продуктовая фича: резервирование денег через мобильное приложение. # Для этого в класс ATM нужно добавить новый метод reserve(amount). Также нам надо учесть возможность HardwareError в методах SDK.

Senior
Яндекс
0

Что произойдёт, если одновременно придут два запроса на резервацию? Как обеспечить консистентность?

Senior
Яндекс
0

Как реализовать простой механизм блокировки (lock) в памяти для защиты от конкурентного доступа без использования внешних зависимостей?

Senior
Яндекс
0

Что такое Garbage Collector в Python и как он работает?

Middle
ГК АСК
0

Как понять, что есть утечка памяти? Что делать, если PM говорит, что приложение тормозит?

Middle
ГК АСК
0

Как локализовать проблему с тормозящей ручкой? Что делать с падающей внешней зависимостью?

Middle
ГК АСК
0

The screenshots contain Python code for an asynchronous function to create an order in a web service. The code involves: - Parsing JSON request data for user_id, items, and promo_code. - Calculating the total price of items. - Optionally applying a discount by calling an external discount service. - Inserting the order into a PostgreSQL database. - Reserving items by calling a warehouse service. - Publishing an order created event to a Kafka adapter. - Updating the order status to 'processed'. The task implied by the code is: "Implement an asynchronous API endpoint to create an order that: - Validates input data. - Calculates the total order price. - Applies a discount if a promo code is provided by calling an external discount service. - Inserts the order into a PostgreSQL database and retrieves the new order ID. - Calls a warehouse service to reserve the ordered items. - Publishes an order created event to a Kafka adapter. - Updates the order status to 'processed' in the database. - Handles potential errors such as discount service disconnection gracefully." No explicit question text is present, but the task is to implement or improve this order creation workflow with asynchronous calls, error handling, and database interaction.

Middle
ГК АСК
0

Принимал ли ты участие в выборе микросервисной архитектуры? Почему именно микросервисы?

Middle
d8
0

Как ты понимаешь, когда нужно остановиться с оптимизацией запросов? В какой момент успокаиваешься?

Middle
d8
0

Зачем в проекте на FastAPI использовался Alembic и были ли прямые SQL-запросы к базе данных?

Middle
d8
0

Понимаешь ли ты, чем отличается фронт-офис от бэк-офиса и мидл-офиса в брокерской деятельности?

Middle
d8
0
/476