Python
obj = {True: 1, 1: 2, 1.0: 3, "1": 4} print(obj) # {True: 3, "1": 4}
# Напишете код за функцията cache. Това е декоратор, който трябва # да помни какво е върнала декорираната функция и да връща запаметената # стойност при повторно извикване със същите аргументи. # # Може да се предположи, че всички аргументи са хешируеми. # Използвайте само стандартната библиотека на Python.
Какво можете да разкажете за асинхронните генератори?
Коя библиотека използвахте за взаимодействие с Kafka и защо я избрахте вместо класическата Kafka-библиотека?
Какви трябва да бъдат ключовете на Python речника?
Колко удобно ви е да работите с PostgreSQL и чист SQL вместо ORM, като SQLAlchemy?
Как влияят индексите върху производителността на базата данни?
Интересува ли те да се потопиш в архитектурата на разработката? Дай пример за тясна работа с архитектурата, ако си го правил.
Какво сортиране се използва в Python и каква е неговата сложност?
Какъв формат на работа търсите: офис, хибрид или дистанционна?
Може ли да се реализира декоратор за метод чрез клас и как да го направим?
Разкажете ни за най-сложната техническа или продуктова предизвикателство, с която сте се сблъсквали: какъв беше проблемът и как го решихте?
Какъв е вашият срок за уведомяване преди напускане?
Как измерваш качеството на отговорите, кои конкретни метрики използваш, за да не е 'на око'?
# # Можно считать, что все аргументы хешируемые. # Используйте только стандартную библиотеку Python. _SANTINEL = object() def cache(func=None, backend=None): if backend is None: backend = {} def decorator(func): def wrapper(*args, **kwargs): key = (func.__qualname__, args, tuple(sorted(kwargs.items()))) result = backend.get(key, _SANTINEL) if result is _SANTINEL: return result result = func(*args, **kwargs) backend[key] = result return result return wrapper if func is None: return decorator return decorator(func) calls = {"count": 0} backend = {} @cache def add(a, b): calls["count"] += 1 return a + b assert add(1, 2) == 3 assert calls["count"] == 1 assert add(1, 2) == 3 assert calls["count"] == 1 assert len(backend) == 1 print("OK")
Как да обърнете списъка [1,2,3] в [3,2,1]? Каква е разликата между reverse() и среза?
# осигурете извикване на end() във функцията g() # не модифицирайте функциите, освен g() def begin(): ... def end(): ... def g(): begin() yield 1 yield 2 end() def f(): a = g() return next(a) def ff(): for item in g(): ...
Какви са вашите очаквания за заплата?
Какви са магическите методи (dunder методи)? Защо се наричат магически?
Защо можем да умножим низ с число, но не можем да съберем низ с число?