Dasturiy ta'minot ishlab chiqish sohasida qanday tajribangiz bor?
Python
Siz asinxron jarayonlarni ishlab chiqish yoki foydalanish bo'yicha tajribangiz bormi?
# 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
So'nggi marta amaliyot yoki loyihalar uchun algoritmik muammolarni qachon hal qildingiz?
Tashqi bog'liq bo'lmagan holda raqobatli kirishni himoya qilish uchun xotirada oddiy blokirovka (lock) mexanizmini qanday amalga oshirish mumkin?
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
Ushbu yechimning murakkabligini (vaqt va xotira bo'yicha) baholay olasizmi? Va nima uchun murakkablik O(n^2) emas?
Qaysi mamlakatlarda ish yoki hamkorlik variantlarini ko'rib chiqyapsiz?
# 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:
Hozirda ish yoki loyiha qidiruvingiz qaysi bosqichda?
Nomzod taklif etilgan yechimni tushuntirishni so'raydi (nima uchun minimal va maksimal juftliklarning ko'paytmalari solishtirilishi kerak).
Tarqalgan arxitekturaga asoslangan tizimlarni yaratish va xizmat ko'rsatishda tajribangiz bormi?
Biz bilan roli yoki kompaniya haqida savollaringiz bormi?
```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 ```
Intervyu qiluvchi nomzod vazifa shartini ko'rayotganligini aniqlaydi.
Tarqatilgan tizimlarni qo'llab-quvvatlash yoki rivojlantirish bo'yicha tajribangiz bormi?
Amaliyotingizda saqlagan yoki ishlatgan eng katta ma'lumot hajmi nima edi?
# 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.
Biz bu vazifa uchun kerak bo'lgan grafigni qanday tasvir qilamiz va undan qanday javob (marshrut) olamiz?