Aveți experiență în dezvoltarea sau utilizarea proceselor asincrone?
Python
Care este experiența ta în domeniul dezvoltării software?
Când a fost ultima dată când ai rezolvat probleme algoritmice pentru practică sau proiecte?
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
# Bancomat, care se încarcă cu cassetete de bancnote, cu aplicația noastră la bord # trebuie să poată elibera bancnote pentru suma specificată sau să răspundă cu o refuzare # La eliberare, bancnotele sunt scăzute din soldul bancomatului. # Denominațiile permise: 50€, 100€, 500€, 1000€, 5000€. class ATM: pass # spațiu pentru cod # Dispozitivul bancomatului: # - banii sunt plasați în cassetete în interiorul bancomatului, încărcate de inspector și reîncărcate; # - în fiecare casetă se află bancnote de o denominație proprie; # - bancomatul poate număra bancnotele rămase în cassetete, dar această operație durează mult - trebuie apelată cât mai rar. # API pentru interacțiunea cu echipamentul bancomatului. # interfața SDK poate fi modificată/extinsă după acordul părților, dacă este necesar 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
Cum se implementează un mecanism simplu de blocare (lock) în memorie pentru protecție împotriva accesului concurent fără a folosi dependențe externe?
Poți evalua complexitatea acestei soluții (din punct de vedere al timpului și memoriei)? Și de ce complexitatea nu este O(n^2)?
# OneEditApart("pisică", "câine") -> fals # OneEditApart("pisică", "pisici") -> adevărat # OneEditApart("pisică", "tăietură") -> adevărat # OneEditApart("pisică", "castel") -> adevărat # OneEditApart("pisică", "la") -> adevărat # OneEditApart("pisică", "acte") -> fals def OneEditApart(s1, s2) -> bool:
În ce etapă se află în prezent căutarea dvs. de job sau proiect?
În ce țări iei în considerare opțiuni de muncă sau colaborare?
Candidatul solicită explicații pentru soluția propusă (de ce este necesar să comparăm produsele perechilor minime și maxime).
Aveți experiență în crearea și întreținerea sistemelor bazate pe arhitecturi distribuite?
Ai întrebări pentru noi despre rol sau companie?
```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 ```
Intervievatorul clarifică dacă candidatul vede condiția problemei.
Aveți experiență în suportul sau dezvoltarea sistemelor distribuite?
Care a fost dimensiunea maximă a datelor pe care le-ai stocat sau procesat vreodată în practica ta?
# Complicație # Acum avem o nouă funcție de produs: rezervarea banilor prin aplicația mobilă. # Pentru aceasta, în clasa ATM, trebuie să adăugăm o nouă metodă reserve(amount). De asemenea, trebuie să luăm în considerare posibilitatea unui HardwareError în metodele SDK.
După ce principiu trebuie să miști limita stângă a ferestrei atunci când aceasta acoperă deja întreg alfabetul?