Sobes.tech

Python

Ar šiuo metu galite dirbti savo dabartinėje įmonėje?

Intern — Junior
141

Kada paskutinį kartą sprendėte algoritmines užduotis praktikai ar projektams?

Junior — Middle
141

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

140

# 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

140

Kaip įgyvendinti paprastą užrakinimo (lock) mechanizmą atmintyje, siekiant apsaugoti nuo konkurencinio prieigos be išorinių priklausomybių?

139

Ar galite įvertinti šio sprendimo sudėtingumą (laiko ir atminties požiūriu)? Ir kodėl sudėtingumas nėra O(n^2)?

139

# 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:

138

Kokioje stadijoje šiuo metu yra jūsų paieška darbo ar projekto?

Junior — Middle
137

Kokiose šalyse svarstote darbo ar bendradarbiavimo galimybes?

Junior — Middle
137

Kandidatas prašo paaiškinti siūlomą sprendimą (kodėl reikia palyginti minimalios ir maksimalaus porų sandaugas).

136

Ar turite patirties kurdami ir prižiūrėti sistemas, pagrįstas paskirstytomis architektūromis?

Junior — Middle
136

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

133

Interviu vadovas paaiškina, ar kandidatas mato užduoties sąlygą.

133

Ar turite patirties palaikant ar kuriant paskirstytas sistemas?

133

Koks buvo didžiausias duomenų dydis, kurį kada nors saugojote ar apdorojote savo praktikoje?

Junior — Middle
133

# 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.

129

Kokiu principu reikia judėti kairiąją lango ribą, kai ji jau apima visą abėcėlę?

128
/5