МТС Линк · ноябрь 2024

Тех собес на middle-senior Golang Разработчик в МТС Линк

middle-senior Тех собес 7 задач
1

Таблица "Продукты"

+---------------+--------+
| Column Name   | Type   |
+---------------+--------+
| id            | int    | id-уникальный ключ для таблицы продуктов
| name          | varchar | наименование продукта
| company       | varchar | ссылка на компанию
| product_count | int    | количество продукта
| price         | int    | цена продукта
| is_discounted | int    | есть скидка на продукт
+---------------+--------+

1. Задача: Написать функцию, которая переворачивает строку на месте без дополнительной памяти

Example 1:

Input: s = ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]

Example 2:

Input: s = ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]

2. Задача: Написать декоратор, который выводит время выполнения функции

3. Задача: Реализовать класс Singleton

4. Задача: Написать класс RedisLock — контекстный менеджер, который будет блокировать доступ другим обращениям при обращении в Redis по ключу

def redis_get(key: str): pass
def redis_set(key: str, value: Any, expire: float): pass
def redis_delete(key: str): pass

class RedisLock:
   pass

def updateuser(userid: int):
   key = f"user{userid}"
   with RedisLock(key=key):
       pass

5. Задача: Что не так в коде?

import asyncio
import aiohttp

async def download_file(url: str, filename: str) -> None:
   session = aiohttp.ClientSession()
   resp = await session.get(url)
   body = await resp.read()
   
   with open(filename, "wb") as f:
       f.write(body)

6. Задача: Сгруппировать товары по производителям с ценой выше 30000 рублей

7. Задача: Сгруппировать по производителям и найти все группы, для которых определено более 1 модели и общая стоимость товаров превышает 80000