Ar turite patirties kuriant ar naudojant asinchroninius procesus?
Python
Kiek metų patirties turite programinės įrangos kūrimo srityje?
Kada paskutinį kartą sprendėte algoritmines užduotis praktikai ar projektams?
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
# Bankomatas, kuris kraunamas kasetėmis su banknotais, su mūsų programėle ant borto # turi gebėti išduoti banknotus už nurodytą sumą arba atsakyti atmetimu # Išduodant banknotus, jie yra atimami iš bankomato balanso. # Leidžiami nominalai: 50R, 100R, 500R, 1000R, 5000R. class ATM: pass # vieta kodui # Bankomato įranga: # - pinigai yra išdėstyti kasetėse bankomate, kurias krauna inspektorius ir papildomai; # - kiekvienoje kasetėje yra banknotų savo nominalo; # - bankomatas gali suskaičiuoti likusius banknotus kasetėse, bet ši operacija užtrunka ilgai - ją reikėtų kviesti kuo rečiau. # API sąsaja bankomato aparatūrai: # SDK sąsaja gali būti keičiama/plečiama pagal šalių susitarimą, jei tai būtina 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
Kaip įgyvendinti paprastą užrakinimo (lock) mechanizmą atmintyje, siekiant apsaugoti nuo konkurencinio prieigos be išorinių priklausomybių?
Ar galite įvertinti šio sprendimo sudėtingumą (laiko ir atminties požiūriu)? Ir kodėl sudėtingumas nėra O(n^2)?
# OneEditApart("katė", "šuo") -> netiesa # OneEditApart("katė", "katės") -> tiesa # OneEditApart("katė", "pjovimas") -> tiesa # OneEditApart("katė", "pilis") -> tiesa # OneEditApart("katė", "į") -> tiesa # OneEditApart("katė", "veiklos") -> netiesa def OneEditApart(s1, s2) -> bool:
Kokioje stadijoje šiuo metu yra jūsų paieška darbo ar projekto?
Kokiose šalyse svarstote darbo ar bendradarbiavimo galimybes?
Kandidatas prašo paaiškinti siūlomą sprendimą (kodėl reikia palyginti minimalios ir maksimalaus porų sandaugas).
Ar turite patirties kurdami ir prižiūrėti sistemas, pagrįstas paskirstytomis architektūromis?
Ar turite mums klausimų dėl vaidmens ar įmonės?
```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 ```
Interviu vadovas paaiškina, ar kandidatas mato užduoties sąlygą.
Ar turite patirties palaikant ar kuriant paskirstytas sistemas?
Koks buvo didžiausias duomenų dydis, kurį kada nors saugojote ar apdorojote savo praktikoje?
# Sudėtingumas # Dabar turime naują produkto funkciją: pinigų rezervavimą per mobilųjį programėlę. # Tam reikia pridėti naują metodą reserve(amount) ATM klasėje. Taip pat reikia atsižvelgti į HardwareError galimybę SDK metoduose.
Kokiu principu reikia judėti kairiąją lango ribą, kai ji jau apima visą abėcėlę?