Karat的面试官是全球外包的,主打一个时间灵活,很多人比如我会选晚上或者周末的时间面试。
Karat sde 面试 的一点经验:请自行在karat环境下训练,和leetcode不一样,这里的testcase需要自己写。当然题目中可能已经准备好testcase。那种需要复杂输入的不会考,比如二叉树,leetcode都是帮你读入testcase然后自动调用solution,而这里不可能那样做。数组、字符串、hash Map是考察重点。
karat sde 面试 真实分享
Code Question 1
题目要求判断给定的二位数组中的元素是否符合每行与每列的特定规则。
思路
就是两个遍历二维数组,只要有任意一行或一列不符合要求,就返回 False;如果所有行列都通过验证,返回 True。
题目难度不高,不关注算法复杂度,能过所有测试就行。
Code Question 2
题目意思是你有若干人要去露营地,其中只有 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 都能稳拿。