avatar

zoom面试经历


zoom是一家外企,在脉脉、知乎、小红书上口碑还是不错的,几乎都是褒奖。他们的主业是在线会议,围绕在线会议衍生出一些周边产品,我面试的是武汉的在线文档相关岗位的后端开发。

这个岗位是前同事内推的,由于我之前待的一家公司zoom比较认可(就武汉而言),因此只有一轮技术面,面试官也是前公司的另一部门的同事,之前没有交集。

面试先对我的过往项目经历做了些讨论,然后问了些八股文,最后给了两个技术问题,一个是系统设计:怎么设计一个多人编辑的在线表格,回答中主要围绕怎么解冲突、怎么应对高并发做了些讨论。另外一个是一个leetcode, 把我的实现贴在这里。

  1package main
  2
  3import (
  4	"fmt"
  5)
  6
  7type Node struct {
  8	Value int
  9	Next  *Node
 10}
 11
 12func sortList(head *Node) *Node {
 13	if head == nil {
 14		return head
 15	}
 16
 17	nodes := make([]*Node, 0)
 18	for head != nil {
 19		nodes = append(nodes, head)
 20		head = head.Next
 21	}
 22
 23	for i := 0; i < len(nodes)-1; i++ {
 24		for j := i + 1; j < len(nodes); j++ {
 25			if nodes[i].Value > nodes[j].Value {
 26				nodes[i].Value, nodes[j].Value = nodes[j].Value, nodes[i].Value
 27			}
 28		}
 29	}
 30
 31	return nodes[0]
 32}
 33
 34func merge(lists []*Node) *Node {
 35	if len(lists) == 1 {
 36		lists[0] = sortList(lists[0])
 37		return lists[0]
 38	}
 39
 40	start, end := 0, len(lists)
 41	middle := (start + end) / 2
 42	leftPart := merge(lists[start:middle])
 43	rightPart := merge(lists[middle:end])
 44
 45	head := &Node{}
 46	ret := head
 47
 48	for leftPart != nil && rightPart != nil {
 49		if leftPart.Value > rightPart.Value {
 50			leftPart, rightPart = rightPart, leftPart
 51		}
 52
 53		head.Next = leftPart
 54		leftPart = leftPart.Next
 55		head = head.Next
 56	}
 57
 58	if leftPart != nil {
 59		head.Next = leftPart
 60	}
 61	if rightPart != nil {
 62		head.Next = rightPart
 63	}
 64
 65	return ret.Next
 66}
 67
 68func main() {
 69	// 多个单链表
 70	n1 := Node{Value: 1}
 71	n2 := Node{Value: 7}
 72	n3 := Node{Value: 5}
 73	n4 := Node{Value: 4}
 74	n5 := Node{Value: 6}
 75	n6 := Node{Value: 9}
 76	n7 := Node{Value: 10}
 77	n8 := Node{Value: 2}
 78	n9 := Node{Value: 3}
 79	n10 := Node{Value: 8}
 80
 81	n1.Next, n2.Next, n3.Next = &n2, &n3, nil // 1->2->3
 82
 83	// l1 := sortList(&n1)
 84	// fmt.Println("test sortList...")
 85	// printList(l1)
 86
 87	n4.Next, n5.Next, n6.Next = &n5, &n6, &n7
 88	n8.Next, n9.Next = &n9, &n10
 89
 90	lists := []*Node{&n1, &n4, &n8}
 91
 92	fmt.Println("before merge...")
 93	for _, l := range lists {
 94		printList(l)
 95	}
 96
 97	fmt.Println("after merge...")
 98	m := merge(lists)
 99	printList(m)
100}
101
102func printList(l *Node) {
103	for l != nil {
104		fmt.Println(l.Value)
105		l = l.Next
106	}
107}

最终给了我offer, 但是考虑到自己年纪大了,不敢轻易挪窝了,待遇给的也没让我心动,因此没去。

也许当前这份工作,是做技术岗职业生涯的最后一站?不知道还能坚持多久……

评论列表:

Josephmum: 有趣的 旅游网站, 不要停下 保持这种风格。谢谢! <a href=https://iqvel.com/zh-Hans/a/%E4%BF%84%E7%BD%97%E6%96%AF/%E7%A5%96%E6%8B%89%E7%89%B9%E5%BA%AB%E7%88%BE%E5%9C%8B%E5%AE%B6%E5%85%AC%E5%9C%92>觀景山嶺</a> 我经常访问 旅行者网站。有帮助 阅读这样的内容。 1周前