karat sde 面試 經歷 | karat 最新面試經歷 | Karat VO 再難,也難不倒你!

507Views
karat sde 面試 經歷 | karat 最新面試經歷 | Karat VO 再難,也難不倒你!

Karat的面試官是全球外包的,主打一個時間靈活,很多人比如我會選晚上或者周末的時間面試。

Karat sde 面試 的一點經驗:請自行在karat環境下訓練,和leetcode不一樣,這裡的testcase需要自己寫。當然題目中可能已經準備好testcase。那種需要復雜輸入的不會考,比如二叉樹,leetcode都是幫你讀入testcase然後自動調用solution,而這裡不可能那樣做。數組、字符串、hash Map是考察重點。

karat sde 面試 真實分享

Code Question 1

karat sde 面試 經歷 | karat 最新面試經歷 | Karat VO 再難,也難不倒你!

題目要求判斷給定的二位數組中的元素是否符合每行與每列的特定規則。

思路

就是兩個遍歷二維數組,只要有任意一行或一列不符合要求,就返回 False;如果所有行列都通過驗證,返回 True

題目難度不高,不關注算法複雜度,能過所有測試就行。

Code Question 2

karat sde 面試 經歷 | karat 最新面試經歷 | Karat VO 再難,也難不倒你!

題目意思是你有若干人要去露營地,其中只有 2 個人有車,分別從不同的起點出發。
道路是線性的有向鍊錶結構(無環、無岔路)。

每輛車沿著道路前進(每條邊有行駛時間),
途經每個地點時會接上住在那裡的朋友。

思路:

這題其實是一個最短路徑覆蓋問題,但由於路線是線性的、無分支,因此題目可以簡化為:對每個地點,計算兩輛車到達的時間,取較早的一輛接上對應的朋友。

# TC: O(n) = max(len(list), len(products)) = MAX(m, n) =
# SC: O(n) = products len, depts len = max(m, n)
def shopping(products, shopping_list):
    # dict
    product2dept = {product: dept for product, dept in products}

    # calc original visits
    original_visits = 0
    prev = None
    for item in shopping_list:
        curr = product2dept[item]
        if curr != prev:
            original_visits += 1
        prev = curr

    # optimal visits
    depts = set()
    for item in shopping_list:
        depts.add(product2dept[item])

    # output diff
    return original_visits - len(depts)


# print(shopping(products, list1))
# print(shopping(products, list2))
# print(shopping(products, list3))
# print(shopping(products, list4))
# print(shopping(products, list5))

ProgramHelp 平時會幫學生全程mock,coding、八股、系統設計都可以面試輔助,代面試。有了我們的支持,Karat / Google / Amazon / Microsoft / TikTok 的 OA 和 VO 都能穩拿。

author avatar
Alex Ma Staff Software Engineer
目前就職於Google,10餘年開發經驗,目前擔任Senior Solution Architect職位,北大計算機本碩,擅長各種算法、Java、C++等編程語言。在學校期間多次參加ACM、天池大數據等多項比賽,擁有多項頂級paper、專利等。
END