头条一面总结
昨天头条的一面结束了,总体感觉就是有一点出乎一点的感觉,哈哈哈,和平时网上看到的面经完全不一样呀,主要还是自己的积累不够,所以做一个总结来警示自己还要多加努力啊,大厂从来都不会这么容易就能进去的。
一. 实现队列的方法
首先第一道题问了队列的实现,我首先有想到了是三种实现方法。基于栈的实现方法;基于链表的实现方法;基于数组的实现方法
首先基于站的实现方法我回答出来了,就是是想用辅助栈实现
基于链表的实现也挺简单,插入直接插到最后,取的时候去头元素,然后在更新头元素
基于数组的方法,妈的一开始没想到双指针我真是服了自己了,做了这么多的双指针的题,竟然没想到,这个真的是自己疏忽了,该打。。
二. 输入一个网址到页面显示出来,发生了生么事
我回答首先域名解析将域名解析成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
后来面试官看了一下,八成凉了,直接就说面试就到这里了,问我有啥想问的不,我当时挺灰心的,就啥也没问
总结
想字节跳动这种大厂,一定要平时多积累,就练习,多思考,踏踏实实地,想单纯的靠抱佛脚是真的不怎么可能能进的,在今后的日子里要多思考和练习了,下次再战,其实真的挺爽的哈哈,第一次面试大厂,挺刺激,也算是没啥遗憾了,还是自己的实力不够,加油吧。