Ako spracovať hraničné prípady vstupných údajov — záporné čísla, príliš veľké súčty, nesprávne hodnoty?
Python
Máte praktické skúsenosti s používaním cloudových platforiem na ukladanie dát?
Ako implementovať jednoduchý mechanizmus zámku (lock) v pamäti na ochranu pred súbežným prístupom bez použitia externých závislostí?
Môžeš vysvetliť, ako funguje next()?
Ako môžete určiť počet účastníkov vašej predchádzajúcej tímu?
Aká bola maximálna veľkosť dát, ktoré ste kedy uložili alebo spracovali vo svojej praxi?
Môžeš odhadnúť zložitosť tohto riešenia (z hľadiska času a pamäte)? A prečo zložitosť nie je O(n^2)?
# OneEditApart("mačka", "pes") -> nesprávne # OneEditApart("mačka", "mačke") -> správne # OneEditApart("mačka", "rez") -> správne # OneEditApart("mačka", "hrad") -> správne # OneEditApart("mačka", "na") -> správne # OneEditApart("mačka", "činnosti") -> nesprávne def OneEditApart(s1, s2) -> bool:
Kedy ste naposledy riešili algoritmické úlohy na precvičenie alebo projekty?
Máte skúsenosti s tvorbou a údržbou systémov založených na distribuovaných architektúrach?
# Bankomat, ktorý sa nabíja kazetami s bankovkami, s našou aplikáciou na palube # musí byť schopný vydávať bankovky pre zadanú sumu alebo odpovedať zamietnutím # Pri vydávaní sa bankovky odpočítavajú zo zostatku bankomatu. # Povolené nominály: 50₽, 100₽, 500₽, 1000₽, 5000₽. class ATM: pass # miesto pre kód # Zariadenie bankomatu: # - peniaze sú umiestnené v kazetách vo vnútri bankomatu, ktoré načítava inšpektor a znovu načítava; # - v každej kazete sú bankovky svojho nominálu; # - bankomat môže spočítať zostávajúce bankovky v kazetách, ale táto operácia trvá dlhú dobu - je vhodné ju volať čo najmenej. # API na interakciu s zariadením bankomatu. # rozhranie SDK môže byť zmenené/rozšírené dohodou strán, ak je to potrebné 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(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
V ktorých krajinách zvažujete možnosti práce alebo spolupráce?
Máte skúsenosti s podporou alebo vývojom distribuovaných systémov?
Máte u nás nejaké otázky ohľadom úlohy alebo spoločnosti?
V akej fáze je momentálne vaše hľadanie práce alebo projektu?
```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 ```
Aké máte skúsenosti s Pythonom a ako dlho ho používate vo svojich projektoch?
Tvorca pohovoru objasňuje, či kandidát vidí podmienku úlohy.
# Zloženosť # Teraz máme novú funkciu produktu: rezerváciu peňazí cez mobilnú aplikáciu. # Na to je potrebné pridať do triedy ATM novú metódu reserve(amount). Tiež je potrebné zvážiť možnosť HardwareError v SDK metódach.