Sobes.tech

შენ გაქვს გამოცდილება ასინქრონული პროცესების განვითარების ან გამოყენების სფეროში?

142

რამდენი გამოცდილება გაქვთ პროგრამული უზრუნველყოფის განვითარების სფეროში?

142

შეგიძლიათ ამჟამად მუშაობთ თქვენს მიმდინარე კომპანიაში?

Intern — Junior
141

როდის იყავით ბოლო ჯერ, როდესაც გადაწყვეტდით ალგორითმული ამოცანების პრაქტიკის ან პროექტებისთვის?

Junior — Middle
141

როგორ განვახორციელოთ მარტივი ბლოკირების (lock) მექანიზმი მეხსიერებაში კონკურენტული წვდომისგან დაცვისთვის, გარეგანი დამოკიდებულებების გამოყენების გარეშე?

140

შეგიძლიათ შეაფასოთ ამ გადაწყვეტილების სირთულე (დროისა და მეხსიერების თვალსაზრისით)? და რატომ არ არის სირთულე O(n^2)?

140

# ბანკომატი, რომელიც იტვირთება კასეტებით ბილეთებით, ჩვენი აპლიკაციით ბორტზე # უნდა შეძლოს ბილეთების გამოტანა მითითებული თანხისთვის ან უარის მიცემა # ბილეთების გამოტანის დროს, ისინი ამოღებულია ბანკომატის ბალანსიდან. # დაშვებული ნომინალები: 50R, 100R, 500R, 1000R, 5000R. class ATM: pass # კოდის ადგილი # ბანკომატის მოწყობილობა: # - ფული განთავსებულია კასეტებში ბანკომატში, რომლებიც იტვირთება ინკასანტის მიერ და განახლდება; # - თითოეულ კასეტაში მდებარეობს თავისი ნომინალის ბილეთები; # - ბანკომატი შეუძლია ითვალოს დარჩენილი ბილეთები კასეტებში, მაგრამ ეს ოპერაცია გრძელია - უნდა იძახოს რაც შეიძლება იშვიათად. # API ბანკომატის აპარატურისთან ურთიერთქმედებისთვის: # SDK ინტერფეისი შეიძლება შეიცვალოს/გაფართოვდეს მხარეების შეთანხმებით, თუ ეს აუცილებელია 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

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

140

# OneEditApart("კატა", "ძაღლი") -> არასწორია # OneEditApart("კატა", "კატები") -> სწორი # OneEditApart("კატა", "გაჭრა") -> სწორი # OneEditApart("კატა", "კასტელი") -> სწორი # OneEditApart("კატა", "მ") -> სწორი # OneEditApart("კატა", "მოქმედებები") -> არასწორია def OneEditApart(s1, s2) -> bool:

138

გაქვს გამოცდილება განაწილებული სისტემების მხარდაჭერაში ან განვითარების სფეროში?

138

რომელ ქვეყნებში განიხილავთ სამუშაო ან თანამშრომლობის ვარიანტებს?

Junior — Middle
137

სადაც თქვენი სამუშაოს ან პროექტის ძიება ახლა მდებარეობს?

Junior — Middle
137

გაქვს გამოცდილება განაწილებული არქიტექტურებზე დაფუძნებული სისტემების შექმნასა და მომსახურებაში?

Junior — Middle
137

კანდიდატმა სთხოვა შეთავაზებული გადაწყვეტილების ახსნა (რატომ არის საჭირო მინიმალური და მაქსიმალური წყვილების გამრავლების შედარება).

137

შეგიძლიათ ჩვენთან როლთან ან კომპანიასთან დაკავშირებით კითხვები გქონდეთ?

136

ინტერვიურმა განმარტა, ხედავს თუ არა კანდიდატი ამოცანის პირობას.

133

თქვენი პრაქტიკის განმავლობაში რა იყო მაქსიმალური მონაცემების ზომა, რომელსაც ოდესმე შეინახეთ ან დამუშავეთ?

Junior — Middle
133

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

# სირთულე # ახლა გვაქვს ახალი პროდუქტის ფუნქცია: თანხის განთავსება მობილური აპლიკაციის საშუალებით. # ამისთვის, ATM კლასში უნდა დავამატოთ ახალი მეთოდი reserve(amount). ასევე უნდა გავითვალისწინოთ HardwareError-ის შესაძლებლობა SDK მეთოდებში.

129

როგორ წარმოვაჩენთ ამ დავისთვის საჭირო გრაფს და როგორ მივიღებთ პასუხს (მარშრუტს) მასიდან?

129
/5