一面(电面,半个小时)
1.非常详细地说了几个项目
2. mapreduce的工作原理
3. mysql和oracle区别
4. 数据库优化
二面(视频面,40分钟)
上来手撕五道题
//评测题目: 无 /* 问题:实现一个链表的反转算法(reserve_linked_list) */ p,rev=head,None while p: rev,rev.next,p=p,rev,p.next return head /* 问题:假定一个字符串abcabdcabxcabccdef,请写代码找出第一次完全匹配cabx的字符串index。 */ s="abcabdcabxcabccdef" s1="cabx" m,n=len(s),len(s1) cur=0 for i in range(m): cur=i for j in range(n): if s[cur]==s1[j]: cur+=1 if cur==n: return i return -1 #kmp /* 问题:判断两棵树结构是否一致 */ def is_same(node1,node2): if not node1 and not node2: #两者为空 return True if not node1 or not node2: #其一为空 return False if node1.val!=node2.val: #值不相同 return False return is_same(node1.left,node2.left) and is_same(node1.right,node2.right) /* 问题:无序整型数组,统计该数字中每个数字重复出现的次数,并以键值对的形式返回 */ dic={} a=[1,2,3,4,5,6,1,2,3,4,5,6] for num in a: if num not in a: dic[num]=1 else: dic[num]+=1 return dic #不用字典 res=[0]*max(a) for num in a: res[num]+=1 return [[idx,n] for idx,n in enumerate(res) if n>0 ] /* 问题:1kw的数字,找到最小的10个 */ #最小堆 import heapq res=[] def top10(a): for num in a: num=-num heapq.heappush(res,num) if len(res)>10: heapq.heappop(res) return [-num for num in res] #快排 def quickSort_top10(a,k): pivot=a[0] less=[i for i in a[1:] if i<=pivot] greater=[i for i in a[1:] if i>=pivot] if len(less)==k-1: return less+[pivot] elif len(less)<k-1: return less+[pivot]+quickSort_top10(greater,k-len(less)) else: #从左边寻找最小个k return quickSort_top10(less,k) quickSort_top10(a,10)
写完代码之后我说了几个项目,然后他说可以了,到时候评估下
历程
8月26做完笔试,编程1/2(当时投的钉钉),8月28收到感谢信;
9月2打电话过来面试,9月3号二面,目前没感谢信没三面,不知道是不是被kpi了
总结
面试官问我知道为什么写这么多吗,因为笔试我只有50分(编程1/2),二面平均5分钟一道题,不需要编译成功,我上面的代码估计很多错误,是快速写完的,写完马上写下一题,希望有后续,许愿三面