Hai esperienza nello sviluppo di applicazioni o componenti multithread che utilizzano l'esecuzione parallela di compiti?
Python
```python # a = "abc", non vuoto, unico (m) # s = "dfaga[bfkac]ebf" => "aceb" (n) O(n) # s = "cfaafb" => "cfaafb" # s = "affb" => "" from collections import Counter def min_s(a: str, s: str) -> str: need = Counter(a) ```
Qual è stato la dimensione massima dei dati che hai mai memorizzato o elaborato nella tua pratica?
Come implementare un meccanismo di blocco (lock) semplice in memoria per proteggersi dall'accesso concorrente senza usare dipendenze esterne?
Hai domande per noi riguardo al ruolo o all'azienda?
Hai esperienza pratica nell'uso di piattaforme cloud per l'archiviazione dei dati?
In quali situazioni è opportuno effettuare una verifica tecnica durante la fase del colloquio?
Come gestire i casi limite dei dati di input — numeri negativi, somme troppo grandi, valori non corretti?
# Bancomat che si carica con cassette di banconote, con la nostra app a bordo # deve essere in grado di erogare banconote per una somma data o rispondere con un rifiuto # Durante l'erogazione, le banconote vengono scalate dal saldo del bancomat. # Denominazioni consentite: 50R, 100R, 500R, 1000R, 5000R. class ATM: pass # spazio per il codice # Dispositivo del bancomat: # - il denaro è posizionato in cassette all'interno del bancomat, caricate dall'incassatore e ricaricate; # - ogni cassetta contiene banconote della sua denominazione; # - il bancomat può contare le banconote rimanenti nelle cassette, ma questa operazione richiede tempo - dovrebbe essere chiamata il meno possibile. # API per interagire con l'hardware del bancomat. # L'interfaccia SDK può essere modificata/estesa secondo accordo tra le parti, se necessario 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
```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 ```
Quando è stata l'ultima volta che hai risolto problemi algoritmici per esercitarti o progetti?
Come si può determinare il numero di partecipanti nel tuo team precedente?
Hai esperienza nella creazione e manutenzione di sistemi basati su architetture distribuite?
In quali paesi stai considerando opzioni di lavoro o collaborazione?
# OneEditApart("gatto", "cane") -> falso # OneEditApart("gatto", "gatti") -> vero # OneEditApart("gatto", "taglio") -> vero # OneEditApart("gatto", "cast") -> vero # OneEditApart("gatto", "a") -> vero # OneEditApart("gatto", "atti") -> falso def OneEditApart(s1, s2) -> bool:
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
Qual è la tua esperienza con Python e da quanto tempo lo usi nei tuoi progetti?
A che punto è attualmente la tua ricerca di lavoro o progetto?
Hai esperienza nel supporto o nello sviluppo di sistemi distribuiti?
Parlami più nel dettaglio dell'ultimo progetto: di cosa si trattava, quali compiti hai svolto, qual era la tua area di responsabilità?