头条一面总结
昨天头条的一面结束了,总体感觉就是有一点出乎一点的感觉,哈哈哈,和平时网上看到的面经完全不一样呀,主要还是自己的积累不够,所以做一个总结来警示自己还要多加努力啊,大厂从来都不会这么容易就能进去的。
一. 实现队列的方法
首先第一道题问了队列的实现,我首先有想到了是三种实现方法。基于栈的实现方法;基于链表的实现方法;基于数组的实现方法
- 首先基于站的实现方法我回答出来了,就是是想用辅助栈实现 
- 基于链表的实现也挺简单,插入直接插到最后,取的时候去头元素,然后在更新头元素 
- 基于数组的方法,妈的一开始没想到双指针我真是服了自己了,做了这么多的双指针的题,竟然没想到,这个真的是自己疏忽了,该打。。 
二. 输入一个网址到页面显示出来,发生了生么事
我回答首先域名解析将域名解析成IP地址,然后经过负载均衡分配服务器,服务器从数据库拿取数据,渲染到页面最终返回。
三.负载均衡求最小平均响应时间(有点没理解面试官的问题,现在都没怎么理解)的实现
这道题可能大致的意思就是已知客户端的IP,当前时间和响应时间,现在要将它分配给过去一分钟之内平均响应时间最短的服务器。
这里我的思路就是维护一个哈希表,记录服务器IP地址和响应次数,每当时间超过
四. 优先级队列的实现,以及为什么堆的时间复杂度?
这里听错了,回答成了堆化的时间复杂度O(n)
五. 单链表实现快排
我一开始的思路就是和数组的快拍差不多,也是找基准点,然后通过分治的方法,递归实现,不同的地方就是基准点 要遍历,因为他是链表,不支持连续访问,但是我记得我处理基准点那里有一个参数写错了,操蛋,我太紧张吧high传成了mid…….
这里看一下别人的实现
| 12
 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
后来面试官看了一下,八成凉了,直接就说面试就到这里了,问我有啥想问的不,我当时挺灰心的,就啥也没问
总结
想字节跳动这种大厂,一定要平时多积累,就练习,多思考,踏踏实实地,想单纯的靠抱佛脚是真的不怎么可能能进的,在今后的日子里要多思考和练习了,下次再战,其实真的挺爽的哈哈,第一次面试大厂,挺刺激,也算是没啥遗憾了,还是自己的实力不够,加油吧。