Sobes.tech

Python

Hozirda joriy ish berayotgan kompaniyangizda ishlay olasizmi?

Intern — Junior
141

# Bankomat, u qaysi banknotlar kassetalarga to'ldiriladi, bizning ilovamiz bilan # belgilangan summaga banknotlar chiqarishi yoki rad javobini berishi kerak # Bankomatdan banknotlar chiqarilganda, ular bankomat balansidan o'chiriladi. # Ruxsat etilgan nominal qiymatlar: 50R, 100R, 500R, 1000R, 5000R. class ATM: pass # kod uchun joy # Bankomat qurilmasi: # - pul bankomat ichidagi kassetalarda joylashgan, ularni yuklovchi va qayta yuklovchi inspektor; # - har bir kasseta o'z nominalidagi banknotlarni o'z ichiga oladi; # - bankomat qolgan banknotlarni hisoblash imkoniyatiga ega, ammo bu operatsiya uzoq davom etadi - uni imkon qadar kamroq chaqirish kerak. # Bankomat apparaturasi bilan muloqot qilish uchun API. # SDK interfeysi tomonlar roziligi bilan o'zgartirilishi/ kengaytirilishi mumkin, agar zarur bo'lsa 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

So'nggi marta amaliyot yoki loyihalar uchun algoritmik muammolarni qachon hal qildingiz?

Junior — Middle
140

Tashqi bog'liq bo'lmagan holda raqobatli kirishni himoya qilish uchun xotirada oddiy blokirovka (lock) mexanizmini qanday amalga oshirish mumkin?

139

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

139

Ushbu yechimning murakkabligini (vaqt va xotira bo'yicha) baholay olasizmi? Va nima uchun murakkablik O(n^2) emas?

139

Qaysi mamlakatlarda ish yoki hamkorlik variantlarini ko'rib chiqyapsiz?

Junior — Middle
137

# OneEditApart("mushuk", "it") -> noto'g'ri # OneEditApart("mushuk", "mushuklar") -> to'g'ri # OneEditApart("mushuk", "kesish") -> to'g'ri # OneEditApart("mushuk", "kasta") -> to'g'ri # OneEditApart("mushuk", "u") -> to'g'ri # OneEditApart("mushuk", "harakatlar") -> noto'g'ri def OneEditApart(s1, s2) -> bool:

137

Hozirda ish yoki loyiha qidiruvingiz qaysi bosqichda?

Junior — Middle
137

Nomzod taklif etilgan yechimni tushuntirishni so'raydi (nima uchun minimal va maksimal juftliklarning ko'paytmalari solishtirilishi kerak).

135

Tarqalgan arxitekturaga asoslangan tizimlarni yaratish va xizmat ko'rsatishda tajribangiz bormi?

Junior — Middle
135

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

Intervyu qiluvchi nomzod vazifa shartini ko'rayotganligini aniqlaydi.

133

Tarqatilgan tizimlarni qo'llab-quvvatlash yoki rivojlantirish bo'yicha tajribangiz bormi?

132

Amaliyotingizda saqlagan yoki ishlatgan eng katta ma'lumot hajmi nima edi?

Junior — Middle
132

# Qiyinchilik # Endi bizda yangi mahsulot funksiyasi mavjud: mobil ilova orqali pulni rezerv qilish. # Buning uchun ATM sinfida yangi reserve(amount) metodini qo'shishimiz kerak. Shuningdek, SDK metodlarida HardwareError ehtimolini ham hisobga olishimiz kerak.

129

Biz bu vazifa uchun kerak bo'lgan grafigni qanday tasvir qilamiz va undan qanday javob (marshrut) olamiz?

128
/5