Jiang's blog

头条一面凉经

Word count: 1.1kReading time: 4 min
2020/03/23 Share

头条一面总结

昨天头条的一面结束了,总体感觉就是有一点出乎一点的感觉,哈哈哈,和平时网上看到的面经完全不一样呀,主要还是自己的积累不够,所以做一个总结来警示自己还要多加努力啊,大厂从来都不会这么容易就能进去的。

一. 实现队列的方法

首先第一道题问了队列的实现,我首先有想到了是三种实现方法。基于栈的实现方法;基于链表的实现方法;基于数组的实现方法

  • 首先基于站的实现方法我回答出来了,就是是想用辅助栈实现

  • 基于链表的实现也挺简单,插入直接插到最后,取的时候去头元素,然后在更新头元素

  • 基于数组的方法,妈的一开始没想到双指针我真是服了自己了,做了这么多的双指针的题,竟然没想到,这个真的是自己疏忽了,该打。。

二. 输入一个网址到页面显示出来,发生了生么事

我回答首先域名解析将域名解析成IP地址,然后经过负载均衡分配服务器,服务器从数据库拿取数据,渲染到页面最终返回。

三.负载均衡求最小平均响应时间(有点没理解面试官的问题,现在都没怎么理解)的实现

这道题可能大致的意思就是已知客户端的IP,当前时间和响应时间,现在要将它分配给过去一分钟之内平均响应时间最短的服务器。

这里我的思路就是维护一个哈希表,记录服务器IP地址和响应次数,每当时间超过

四. 优先级队列的实现,以及为什么堆的时间复杂度?

这里听错了,回答成了堆化的时间复杂度O(n)

五. 单链表实现快排

我一开始的思路就是和数组的快拍差不多,也是找基准点,然后通过分治的方法,递归实现,不同的地方就是基准点 要遍历,因为他是链表,不支持连续访问,但是我记得我处理基准点那里有一个参数写错了,操蛋,我太紧张吧high传成了mid…….

这里看一下别人的实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// 链表结点类
class Node():
def __init__(self, item=None):
self.item = item // 数据域
self.next = None // 指针域


// 链表类,生成链表以及定义相关方法
class LinkList():
def __init__(self):
self.head = None

// 生成链表,这里使用list来生成
def create(self, item):
self.head = Node(item[0])
p = self.head
for i in item[1:]:
p.next = Node(i)
p = p.next

// 遍历显示
def print(self):
p = self.head
while p != None:
print(p.item, end=' ')
p = p.next
print()

// 根据索引取值
def getItem(self, index):
p = self.head
count = 0
while count != index:
p = p.next
count += 1
return p.item

// 根据索引设值
def setItem(self, index, item):
p = self.head
count = -1
while count < index-1:
p = p.next
count += 1
p.item = item

// 互换
def swapItem(self, i, j):
t = self.getItem(j)
self.setItem(j, self.getItem(i))
self.setItem(i, t)

def quicksortofloop(self, left, right):
if left < right:
// 初始化
i = left
j = i+1
start = self.getItem(i)

// 大循环条件,j不能超过链表长度
while (j <= right):
// 如果 j 指向的值大于等于基准数字,直接跳过
while (j <= right and self.getItem(j) >= start):
j += 1
// 否则,j 指向的值小于基准,则交换
if (j <= right):
i += 1
self.swapItem(i, j)
self.print()
j += 1
self.swapItem(left, i)
self.quicksortofloop(left, i-1)
self.quicksortofloop(i+1, right)


if __name__ == "__main__":
L = LinkList()
L.create([4, 2, 5, 3, 7, 9, 0, 1])
L.quicksortofloop(0, 7)
L.print()

原文链接:https://blog.csdn.net/a66273039/article/details/84565065
后来面试官看了一下,八成凉了,直接就说面试就到这里了,问我有啥想问的不,我当时挺灰心的,就啥也没问

总结

想字节跳动这种大厂,一定要平时多积累,就练习,多思考,踏踏实实地,想单纯的靠抱佛脚是真的不怎么可能能进的,在今后的日子里要多思考和练习了,下次再战,其实真的挺爽的哈哈,第一次面试大厂,挺刺激,也算是没啥遗憾了,还是自己的实力不够,加油吧。

CATALOG
  1. 1. 头条一面总结
    1. 1.0.1. 一. 实现队列的方法
    2. 1.0.2. 二. 输入一个网址到页面显示出来,发生了生么事
    3. 1.0.3. 三.负载均衡求最小平均响应时间(有点没理解面试官的问题,现在都没怎么理解)的实现
    4. 1.0.4. 四. 优先级队列的实现,以及为什么堆的时间复杂度?
    5. 1.0.5. 五. 单链表实现快排
  2. 1.1. 总结