Как оценявате привлекателността и перспективите за използване на езика Go във вашата професионална дейност?
Python
В кои ситуации е целесъобразно да се провежда техническа проверка на етапа на интервюто?
Можеш ли да обясниш как работи next()?
Как да реализираме прост механизъм за блокиране (lock) в паметта за защита срещу конкурентен достъп без използване на външни зависимости?
Как можете да определите броя на участниците във вашия предишен екип?
Какъв беше максималният размер на данните, които някога сте съхранявали или обработвали в практиката си?
Можеш ли да оцениш сложността на това решение (по време и памет)? И защо сложността не е O(n^2)?
Кога беше последният път, когато решихте алгоритмични задачи за практика или проекти?
# Банкомат, който се зарежда с касети с банкноти, с нашето приложение на борда # трябва да може да издава банкноти за зададена сума или да откаже # При издаване, банкнотите се изписват от баланса на банкомата. # Разрешени номинали: 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
# OneEditApart("котка", "куче") -> грешка # OneEditApart("котка", "котки") -> вярно # OneEditApart("котка", "нарязване") -> вярно # OneEditApart("котка", "замък") -> вярно # OneEditApart("котка", "на") -> вярно # OneEditApart("котка", "действия") -> грешка def OneEditApart(s1, s2) -> bool:
Имали ли сте опит в създаването и поддържането на системи, базирани на разпределени архитектури?
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
Имате ли опит в поддръжката или разработването на разпределени системи?
Имаш ли въпроси към нас относно ролята или компанията?
В кои страни разглеждате възможности за работа или сътрудничество?
```python from collections import Counter def min_s(a: str, s: str) -> str: need = set(a) window = Counter() res = "" c = 0 left = 0 best_len = float('inf') for right, char in enumerate(s): if char in need and \ window[char] += 1 if window[char] == 1: c += 1 while c == len(need): if right - left + 1 < best_len: res = s[left:right + 1] best_len = right - left + 1 if s[left] in need: window[s[left]] -= 1 if window[s[left]] == 0: c -= 1 left += 1 return res ```
На какъв етап е в момента вашето търсене на работа или проект?
Интервюиращият уточнява дали кандидатът вижда условието на задачата.
Разкажи повече за последния ти проект: за какво беше, какви задачи изпълняваше, каква беше зоната ти на отговорност?
# Усложнение # Сега имаме нова функция на продукта: резервиране на пари чрез мобилното приложение. # За това трябва да добавим нов метод reserve(amount) в класа ATM. Също така трябва да вземем предвид възможността за HardwareError в методите SDK.