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周前