Cik gadu pieredzes jums ir programmatūras izstrādē?
Python
Vai jums ir pieredze asinhrono procesu izstrādē vai izmantošanā?
# Bankomāts, kas tiek uzpildīts ar kasetēm ar banknotiem, ar mūsu lietotni uz klāja # tam jāspēj izsniegt banknotes par norādīto summu vai atbildēt ar atteikumu # Izsniedzot banknotes, tās tiek atskaitītas no bankomāta bilances. # Atļautie nominālvērtības: 50R, 100R, 500R, 1000R, 5000R. class ATM: pass # vieta kodam # Bankomāta iekārta: # - nauda atrodas kasetēs iekšā bankomatā, kuras ielādē inspektors un papildina; # - katrā kasetē ir banknotes ar savu nominālvērtību; # - bankomāts var saskaitīt atlikušās banknotes kasetēs, bet šī operācija aizņem ilgu laiku - to vajadzētu izsaukt pēc iespējas retāk. # API saskarne bankomāta aparatūrai: # SDK saskarne var tikt mainīta/paplašināta pēc pušu vienošanās, ja tas ir nepieciešams 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
Kad jūs pēdējo reizi risinājāt algoritmiskas uzdevumus praksei vai projektiem?
Kā īstenot vienkāršu bloķēšanas (lock) mehānismu atmiņā, lai aizsargātu pret konkurējošu piekļuvi bez ārējām atkarībām?
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
Vai vari novērtēt šī risinājuma sarežģītību (laikā un atmiņā)? Un kāpēc sarežģītība nav O(n^2)?
Kādās valstīs apsverat darba vai sadarbības iespējas?
# OneEditApart("kaķis", "suņš") -> nepareizi # OneEditApart("kaķis", "kaķi") -> pareizi # OneEditApart("kaķis", "griešana") -> pareizi # OneEditApart("kaķis", "cietoksnis") -> pareizi # OneEditApart("kaķis", "uz") -> pareizi # OneEditApart("kaķis", "darbības") -> nepareizi def OneEditApart(s1, s2) -> bool:
Kurā posmā šobrīd ir jūsu darba vai projekta meklējumi?
Kandidāts lūdz paskaidrot piedāvāto risinājumu (kāpēc ir nepieciešams salīdzināt minimālo un maksimālo pāru reizinājumus).
Vai jums ir pieredze sistēmu izveidē un uzturēšanā, kas balstītas uz izplatītām arhitektūrām?
Vai jums ir kādi jautājumi mums par lomu vai uzņēmumu?
```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 ```
Intervijas veicējs precizē, vai kandidāts redz uzdevuma nosacījumu.
Vai jums ir pieredze sadalītu sistēmu atbalstē vai izstrādē?
Kāda bija maksimālā datu apjoma, ko jūs kādreiz esat glabājis vai apstrādājis savā praksē?
# Sarežģītība # Tagad mums ir jauna produkta funkcija: naudas rezervēšana caur mobilo lietotni. # Tam nepieciešams pievienot jaunu metodi reserve(amount) ATM klasē. Tāpat jāņem vērā HardwareError iespēja SDK metodēs.
Kā mēs attēlotu grafiku, kas mums nepieciešams šiai uzdevumam, un kā no tā iegūt atbildi (maršrutu)?