Namizəd təklif olunan həll yolunu izah etməyi istəyir (nə üçün ən kiçik və ən böyük cütlüklərin hasillərini müqayisə etmək lazımdır).
Python
İşə qəbul mərhələsində texniki yoxlamanın həyata keçirilməsi üçün hansı vəziyyətlər uyğundur?
next() necə işləyir, izah edə bilərsən?
Xarici asılılıqlar olmadan rəqabətli girişdən qorunmaq üçün yaddaşda sadə kilid (lock) mexanizmi necə həyata keçirilir?
Təcrübənizdə heç vaxt saxladığınız və ya işlədiyiniz ən böyük məlumat ölçüsü nə idi?
Əvvəlki komandanızın iştirakçı sayını necə müəyyən edə bilərsiniz?
Bu həllin mürəkkəbliyini (vaxt və yaddaş baxımından) qiymətləndirə bilərsinizmi? Və niyə mürəkkəblik O(n^2) deyil?
Ən son nə vaxt praktika və ya layihələr üçün algoritmik məsələləri həll etdiniz?
# Bankomat, ki banknotların kassetləri ilə yüklənir, bizim tətbiqimizlə birlikdə # müəyyən edilmiş məbləğ üçün banknotları vermək və ya rədd cavabı vermək qabiliyyətinə malik olmalıdır # Banknotlar verildikdə, onlar bankomatın balansından çıxılır. # İcazə verilən nominal dəyərlər: 50₼, 100₼, 500₼, 1000₼, 5000₼. class ATM: pass # kod üçün yer # Bankomatın cihazı: # - pul bankomatın içindəki kassetlərdə yerləşir, inspektor tərəfindən yüklənir və yenidən yüklənir; # - hər kassette öz nominal dəyərində banknotlar yerləşir; # - bankomat qalan banknotları saya bilər, amma bu əməliyyat vaxt alır - onu mümkün qədər az çağırmaq lazımdır. # Bankomat avadanlığı ilə qarşılıqlı əlaqə üçün API. # SDK interfeysi tərəflər arasında razılaşma ilə dəyişdirilə və genişləndirilə bilər, əgər lazım olarsa 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
Paylanmış memarlığa əsaslanan sistemlərin yaradılması və saxlanması təcrübəniz varmı?
# OneEditApart("pişik", "it") -> yanlış # OneEditApart("pişik", "pişiklər") -> doğru # OneEditApart("pişik", "kəsik") -> doğru # OneEditApart("pişik", "kasta") -> doğru # OneEditApart("pişik", "ə") -> doğru # OneEditApart("pişik", "fəaliyyətlər") -> yanlış 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
Paylanmış sistemlərin dəstəyi və ya inkişafı sahəsində təcrübəniz varmı?
Hansı ölkələrdə iş və ya əməkdaşlıq variantlarını nəzərdən keçirirsiniz?
Vəzifə və ya şirkət haqqında bizə suallarınız var mı?
```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 ```
İş və ya layihə axtarışınız hazırda hansı mərhələdədir?
İntervyu edən şəxs namizədin problemin şərtini görüb görmədiyini aydınlaşdırır.
Son layihəniz haqqında daha ətraflı məlumat verin: nə idi, hansı vəzifələri yerinə yetirdiniz, məsuliyyət sahəniz nə idi?
# Çətinlik # İndi yeni məhsul xüsusiyyəti var: mobil tətbiq vasitəsilə pulun rezervasiyası. # Bunu etmək üçün ATM sinfinə yeni reserve(amount) metodu əlavə etmək lazımdır. Həmçinin, SDK metodlarında HardwareError ehtimalını nəzərə almaq lazımdır.