Sobes.tech

Как оценявате привлекателността и перспективите за използване на езика Go във вашата професионална дейност?

Junior — Middle
149

В кои ситуации е целесъобразно да се провежда техническа проверка на етапа на интервюто?

149

Можеш ли да обясниш как работи next()?

148

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

147

Как можете да определите броя на участниците във вашия предишен екип?

Junior — Middle
146

Какъв беше максималният размер на данните, които някога сте съхранявали или обработвали в практиката си?

Junior — Middle
145

Можеш ли да оцениш сложността на това решение (по време и памет)? И защо сложността не е O(n^2)?

145

Кога беше последният път, когато решихте алгоритмични задачи за практика или проекти?

Junior — Middle
143

# Банкомат, който се зарежда с касети с банкноти, с нашето приложение на борда # трябва да може да издава банкноти за зададена сума или да откаже # При издаване, банкнотите се изписват от баланса на банкомата. # Разрешени номинали: 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

143

# OneEditApart("котка", "куче") -> грешка # OneEditApart("котка", "котки") -> вярно # OneEditApart("котка", "нарязване") -> вярно # OneEditApart("котка", "замък") -> вярно # OneEditApart("котка", "на") -> вярно # OneEditApart("котка", "действия") -> грешка def OneEditApart(s1, s2) -> bool:

142

Имали ли сте опит в създаването и поддържането на системи, базирани на разпределени архитектури?

Junior — Middle
142

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

141

Имате ли опит в поддръжката или разработването на разпределени системи?

141

В кои страни разглеждате възможности за работа или сътрудничество?

Junior — Middle
140

```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 ```

138

На какъв етап е в момента вашето търсене на работа или проект?

Junior — Middle
137

Интервюиращият уточнява дали кандидатът вижда условието на задачата.

134

Разкажи повече за последния ти проект: за какво беше, какви задачи изпълняваше, каква беше зоната ти на отговорност?

132

# Усложнение # Сега имаме нова функция на продукта: резервиране на пари чрез мобилното приложение. # За това трябва да добавим нов метод reserve(amount) в класа ATM. Също така трябва да вземем предвид възможността за HardwareError в методите SDK.

131
/5