BitPin
Status
📜📞📝🔧🔧❌
Software Engineer - Backend
Interview Process
flowchart LR
    sr(Send Resume) --> hr(HR Call) --> task(Algorithmic task) --> ti("Technical Interview I
(On-site)") --> ti2("Technical Interview II
(On-site)")--rejected--x ti3("Technical Interview III
(On-site)")-.-> hri(HR Interview) -.-> o(Offer)
Apply Way
Site & Jobinja
Interview Date
- 
Sent Resume
1404.02.03 - 
HR Call
1404.01.18 - 
Task
1404.02.07 - 
Technical Interview I (On-site)
1404.06.24 - 
Technical Interview II (On-site)
1404.07.19 - 
Rejection Email
1404.07.22 
Interview Duration
- 
Technical Interview I
1 hour & 30 minutes - 
Technical Interview II
1 hour & 30 minutes 
Interview Platform
In-person
Task
به طور کلی فرآیند مصاحبهشون الگوریتمی سگیه به علاوه سیستم دیزاین. سوالها رو هم باید کامل بزنید تا قبول شید ذات الگوریتم همینه. مرحله اول زنگ میزنن یه لینک quera میفرستن که سه تا سواله و باید اونا رو حل کنید تا برسید مرحله بعدی. من دادم gpt و آپلود کردم درست بودن. ممکنه جوابها بهینه نباشن اما کار میکنن.
- 
  
Answer
in_put = str(input()) res = in_put.split() print(len(res[len(res) - 1]))
 - 
  
Answer
def check_2sum(nums: list, k: int) -> tuple | int: map_ = {} for i in range(len(nums)): map_[nums[i]] = i for i in range(len(nums)): target = k - nums[i] if target in map_ and map_[target] != i: return i + 1, map_[target] + 1 return -1 n, target = map(int, input().split()) nums = list(map(int, input().split())) res = check_2sum(nums, target) if res == -1: print(res) else: print(*res)
 - 
  
Answer
def longest_palindromic_subsequence(s: str) -> int: n = len(s) dp = [[0] * n for _ in range(n)] for i in range(n): dp[i][i] = 1 for length in range(2, n + 1): for i in range(n - length + 1): j = i + length - 1 if s[i] == s[j]: if length == 2: dp[i][j] = 2 else: dp[i][j] = dp[i + 1][j - 1] + 2 else: dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]) return dp[0][n - 1] print(longest_palindromic_subsequence(input())) # Output: 3 # Output: 5 
Technical Interview I (Live Coding)
- 
Tell me about yourself
 - 
Write some test cases for this code:
def func(x: int): if x <= 0: x += 2 if x == 2: x = 100 return xAnswer
Input Explanation Expected Output -3-3 + 2 = -1-1-2-2 + 2 = 00-1-1 + 2 = 1100 + 2 = 2 → x == 2 → 1001001no change 12x == 2 → 1001003no change 3
 - 
  
در ابتدا این سوال با وجود صرفا پرانتز مطرح شد و مصاحبهکننده بهم گفت رو تخته راهحلی که دارم رو بنویسم و اومدم کدش رو بزنم، گفت خب حالا جوری پیاده کن که بقیه کاراکترها (براکت و کروشه) هم هستن. این سوال رو بلد بودم و زدم و اوکی بود.
Answer
def check_braces(args: str)-> bool: dic = {'(':')', '[':']', '{':'}'} stack = [] for s in args: if s in dic: stack.append(s) elif stack == [] or dic[stack.pop()] != s: return False return stack == []سپس ازم خواسته شد حالتی که فقط پرانتز داریم رو بهینهتر کنم و بدون استفاده از حافظه حل کنم و من اینطوری نوشتم:
Answer
def check_braces2(args: str)-> bool: counter = 0 for s in args: if s == '(': counter += 1 else: if counter == 0: return False counter -= 1 return counter == 0
سپس ازم خواسته شد ورودی رو از stdin بگیرم و پس از زدن Enter جواب نشون داده بشه و اجازه سرچ برای این قسمت رو هم داشتم و در نهایت شد همچین چیزی:
Answer
from sys import stdin def check_braces(args: str)-> bool: dic = {'(':')', '[':']', '{':'}'} stack = [] for s in args: if s in dic: stack.append(s) elif stack == [] or dic[stack.pop()] != s: return False return stack == [] def check_braces2(args: str)-> bool: counter = 0 for s in args: if s == '(': counter += 1 else: if counter == 0: return False counter -=1 return counter == 0 def process(): for line in stdin: print(check_braces(line.strip())) def process2(): for line in stdin: print(check_braces2(line.strip())) # process() process2() 
در آخر ازم پرسیده شد دوست داری فرآیند مصاحبه رو سریعتر طی کنیم؟ آیا عجله داری که سریعتر طی بشه؟ منم گفتم بله خوشحال میشم.
Technical Interview II (Live Coding)
- 
Tell me about yourself.
 - 
  
مصاحبهکننده آدم بسیار باتجربه و مودب و خوشبرخوردی بود. و مثل مصاحبهکننده مرحله اول گفت راهحلم رو توضیح بدم رو تخته بعد پیاده کنم. من سوال رو قبلا ندیده بودم و شک داشتم به جوابم و خیلی طول کشید تا حل کنم و هی به باگ میخوردم. حس میکنم سر همین، خوب نبودم. تفاوتی که سوال با ورژن لیتکدی داشت، این بود که خروجی باید در یک لیست به تعداد لیست ورودی، تعداد candyهای هر کس رو نشون میداد.
My Answer
def student_gift(nums: list): ans = [1] * len(nums) for i in range(len(nums)): for i in range(1, len(nums)): if nums[i] > nums[i - 1]: if ans[i] > ans[i -1]: continue else: ans[i]+= 1 elif nums[i] < nums[i-1]: if ans[i] < ans[i -1]: continue else: ans[i-1]+=1 for i in range(len(nums) - 1, 0, -1): if nums[i] > nums[i - 1]: if ans[i] > ans[i -1]: continue else: ans[i]+= 1 elif nums[i] < nums[i-1]: if ans[i] < ans[i -1]: continue else: ans[i-1]+=1 return ans students = [18, 14, 10,20] students2 = [i for i in range(1, 15)] students2.reverse() print("test case 1: ", students) result = student_gift(students) print("answer: ", result) print("test case 2: ", students2) result = student_gift(students2) print("answer: ", result)خودم با این کد حال نکردم. قشنگ انگار رو دراگ زده شده.
Leetcode Answer
def candy(ratings): n = len(ratings) cnt = 0 candies = [1] * n for i in range(1, n): if ratings[i] > ratings[i - 1]: candies[i] = candies[i - 1] + 1 for i in range(n - 1, 0, -1): if ratings[i - 1] > ratings[i]: candies[i - 1] = max(candies[i] + 1, candies[i - 1]) cnt += candies[i - 1] return cnt + candies[n - 1] 
Score
7.5/10
سختترین مصاحبه و بهترین عملکردم (به نسبت سختی موجود) بود. در کل با این مصاحبههای سخت و فرسایشی حال نمیکنم چون که یه کشور در کنج خاورمیانه زیر سایه جنگ و تحریم و با حقوق در نهایت هزار دلاری رو چه به الگوریتم و این اداها آخر؟ حالا از این گذشته که خودم نسبتا توش خوب بودم و به نظرم میشد رفت مرحلهی بعدی و مقداری دردم آمد چون بسیار نزدیک بود، مورد دیگری که خیلی رو مخم بود، حضوری بودن مصاحبهها بود. هر دفعه باید بلند میشدم میرفتم اون سر جهان (سعادت آباد). به جز این موارد در کل شرکت خوب و اداییایه و جای خوبیه برای کار کردن و پول درآوردن.