yp onsite 51-60

P51 第三轮. Manager, 先说一下enter yelp.com会发生什么,说了整个过程以后他会挑了一些具体的细节继续问,例如get 之后返回什么之类的。 然后coding部分是toplogical 排序

我发现好像现在的弯曲公司,面试一般里面都会有一轮topological sort,然后另外一轮考一个trie的题。是弯曲标配么?

P52 第四轮. 美国小哥,先聊了一下project,然后就是coding,leetcode原题,Longest Substring Without Repeating Characters, follow up是如果一台机器的memory不够呢,再follow up就是如果用assii码表示呢

class Solution(object):
    def longesSustringNoRepeating(self, s):
        dic = {}
        start = 0
        res = ''
        for i in range(len(s)):
            if s[i] in dic and start<dic[s[i]]:
                start = dic[s[i]]+1
            res = s[start:i+1] if len(s[start:i+1])>len(res) else res
            dic[s[i]] = i
        return res

s = 'abcdeb'
so = Solution()
ans = so.longesSustringNoRepeating(s)
print(ans)

代码之前写过了,memory不够的话,我们可以切块来做。最差的情况是每一个char对应一个index,所以dict的size最多也就255。然后我们只用使用这个dict来更新longest就行了。

link 昨天面了y家的onsite,纠结了一下还是决定发个面经攒攒人品求保佑求保佑。

他家喜欢周五下午面试,中午有engineer的免费午餐和learning group然后下午一点四十五面试。午餐体验很好,感觉他家员工都好年轻,朝气蓬勃。 P53 一轮:主要聊一个分布式系统的project,问了下map和reduce分别做什么工作,算法的参数怎么选,还有一些behavior问题,coding是给n门课程,每个课程有k个timeslot,问能不能排出一个n门课都选的课程表,用dfs,中间出了个小bug,改对的,这面觉得一般。

这道题跟movie schedule一样的道理

class Solution(object):
    def movieSchedule(self, movies):

        res = []
        self.dfs(movies, 0, [], len(movies), res)
        schedule = [sorted(zip(i,range(len(movies)))) for i in res]
        return schedule

    def dfs(self, movies, i, path, l, res):

        if len(path)==l:
            res.append(path)
            return

        for m in movies[i]:
            if m not in path:
                self.dfs(movies, i+1, path+[m], l, res)

movies = [[14,15,16,17], [14,15,16], [14,15], [14,15,17]]
so = Solution()
ans = so.movieSchedule(movies)
print ans

P54 二轮:manager面 问网站慢什么原因,然后洋洋洒洒扯数据库,总之这轮聊天环节很不错,coding类似permutation,dfs,bug free但我觉得我的板书写得好乱,有一处中间箭头加进去一行那种。

P55 三轮:问了web development经验, 如何维护streaming data 的top k, coding是longest prefix of strings,bug free,写得也算干净,之后还剩十分钟,他说比我预期快一点,问了几个问题结束了。这轮聊天一般,前面体力有点费太多,有点累。

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        if not strs or not strs[0]:
            return ''

        if len(strs)==1:
            return strs[0]

        res = len(strs[0])
        for i in range(len(strs)-1):
            a, b = strs[i], strs[i+1]
            index = 0
            while index<min(res, len(a), len(b)):
                if a[index]!=b[index]:
                    break
                index += 1
            res = index
        return strs[0][:index]

P56 四轮:manager 问一个网站可能受到哪些安全攻击,对答算顺利,但后面他说的一个csrf attack确实没印象了。coding是encode decode 二叉树,他说有点complex,不一定做完,边做边讲思路就好。我做完了小超了两分钟,基本bug free吧,中间一个地方map.get(preorder[cur]) 写成了map.get(cur),他应该也没有发现。说了句did a good job之类。

写过了

总之题都很简单,很幸运算是遇到三个原题,觉得按照我的水平都一次bug free且clean有点难度,在stressful的环境下有时确实容易短路。但是并不知道他家如何评判candidate,与我同面的都是名校的大神,而且感觉他家题都做好都难有offer,聊天的重要性又和coding不相上下且headcount还少,哎,只能说一切都是命。。。求点大米。

link backend 的职位,一共四轮:

P57 java 基本概念问题:garbage collection hashmap list 和 javascript 区别(我的第二语言) 数据库问题: Nosql 和 mysql 的选择 (从 resume project 延伸) 文化问题: 对 yelp 的功能提建议 why yelp why cs why sde

算法题: P58 load balancer
就是一个地址轮询,最多就是轮询前检查一下healthy不。具体情况具体讨论吧

class LoadBanlancer(object):
    def __init__(self, ips):
        self.ips = ips
        self.index = 0

    def getIP(self):
        if self.ips:
            ip = ips[self.index]
            self.index = (self.index+1)%len(self.ips)
            return ip


    def checkHealth(self, ip):
        pass

ips = ['1.0.0.1', '1.1.1.2', '1.0.0.2']
so = LoadBanlancer(ips)
a = so.getIP()
print(a)
a = so.getIP()
print(a)
a = so.getIP()
print(a)
a = so.getIP()
print(a)
a = so.getIP()
print(a)
a = so.getIP()
print(a)

P59 search matrix II 给你一串 string 里面一些小写字母可能原来是大写求所有可能解. https://leetcode.com/problems/search-a-2d-matrix/ 先偷个懒

class Solution(object):
    def searchMatrix(self, matrix, target):
        """
        :type matrix: List[List[int]]
        :type target: int
        :rtype: bool
        """
        if not matrix or not matrix[0]:
            return False

        nums = [i for row in matrix for i in row]

        l, r = 0, len(nums)

        while l<r:
            mid = (l+r)//2
            if nums[mid]==target:
                return True
            elif nums[mid]<target:
                l = mid + 1
            else:
                r = mid
        return False


matrix = [
  [1,   3,  5,  7],
  [10, 11, 16, 20],
  [23, 30, 34, 50]
]

so = Solution()
ans = so.searchMatrix(matrix, 50)
print(ans)
class Solution(object):
    def searchMatrix(self, matrix, target):
        """
        :type matrix: List[List[int]]
        :type target: int
        :rtype: bool
        """
        if not matrix or not matrix[0]:
            return False


        l, r = 0, len(matrix)*len(matrix[0])

        while l<r:
            mid = (l+r)//2
            x, y =  mid//len(matrix[0]), mid%len(matrix[0])
            print(x, y, mid)
            if matrix[x][y]==target:
                return True
            elif matrix[x][y]<target:
                l = mid+1
            else:
                r = mid
        return False


matrix = [
  [1,   3,  5,  7],
  [10, 11, 16, 20],
  [23, 30, 34, 50]
]

so = Solution()
ans = so.searchMatrix(matrix, 50)
print(ans)
class Solution(object):
    def searchMatrix(self, matrix, target):
        """
        :type matrix: List[List[int]]
        :type target: int
        :rtype: bool
        """
        if not matrix or not matrix[0]:
            return False

        i, j = 0, len(matrix[0])-1

        while 0<=i<len(matrix) and 0<=j<len(matrix[0]):
            if matrix[i][j]==target:
                return True
            elif matrix[i][j]>target:
                j -= 1
            else:
                i += 1

        return False

matrix =[
  [1,   4,  7, 11, 15],
  [2,   5,  8, 12, 19],
  [3,   6,  9, 16, 22],
  [10, 13, 14, 17, 24],
  [18, 21, 23, 26, 30]
]
so = Solution()
ans = so.searchMatrix(matrix, )
print(ans)

P60 如何对ordered input stream 进行搜索(从搜索延伸开),不用写代码只讲四轮和画图~

不太懂这道题木的意思。如果是stream data的话,一个一个进来就直接check就行了啊。一片一片进来,那么就先检查首尾两个,看target是否在里面。在的话就binary search

results matching ""

    No results matching ""