04 2022 档案
摘要:TCP/IP面试要点浅析 一.TCP基本认识 1.TCP头部格式 序列号 在建立连接时由计算机生成的随机数作为初始值,通过SYN包传输给接收端 每发送一次数据,就累加一次该数据字节数的大小 用来解决网络包乱序的问题 确认应答号 指下次期望收到数据的序列号 发送端收到这个确认应答号以后,可以认为在这个
阅读全文
摘要:如何设计 Twitter 时间线和搜索? 1.业务场景 业务场景如下: 用户发布推文 服务将推文推送给关注者,发送推送通知和电子邮件 用户查看用户时间线(来自用户的活动) 用户查看主页时间线(用户关注的人的活动) 用户搜索关键字 服务具有高可用性 其他场景: 服务将推文推送到 Twitter Fir
阅读全文
摘要:如何设计一个Pastebin.com? 1.用例 我们将问题的范畴限定在如下用例 用户 输入一段文本,然后得到一个随机生成的链接 过期设置 默认的设置是不会过期的 可以选择设置一个过期的时间 用户 输入一个 paste 的 url 后,可以看到它存储的内容 用户 是匿名的 Service 跟踪页面分
阅读全文
摘要:Golang 面试题 (4) N个协程交替打印1-100 启动N个协程,共用一个外部变量计数器,计数器范围是1到100 开启N个有缓冲chan,chans[i]塞入数据代表协程i可以进行打印了,打印的数字就是计数器的数 协程i一直阻塞,直到chan[i]通道有数据可以拉,才打印 func main(
阅读全文
摘要:Golang面试编程题3 实现两个协程轮流输出A 1 B 2 C 3 .... Z 26 方案1:有缓冲的chan func ChannelFunc() { // 思想:两个g,一个输出数字,一个输出字母,重点是如何控制两个g的打印顺序,让其可以轮流打印 // 分别使用两个缓存为1的chan,来控制
阅读全文
摘要:Golang面试编程题2 实现一个函数可以根据指定的size切割切片为多个小切片 func main() { lenth := 11 size := 5 list := make([]int, 0, lenth) for i := 0; i < lenth; i++ { list = append(
阅读全文
摘要:二叉树的中序遍历 题目链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/ 面试的时候问这道题基本都是考察非递归的写法,但还是贴一下递归写法: 方法1:递归 var result []int func f(root *T
阅读全文
摘要:最长有效括号 题目链接:https://leetcode-cn.com/problems/longest-valid-parentheses/ 给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例 1: 输入:s = "(()" 输出:2 解释:最长有效
阅读全文
摘要:和为k的子数组(map统计前缀和) 题目链接:https://leetcode-cn.com/problems/subarray-sum-equals-k/ 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 示例 1: 输入:nums = [1,1,
阅读全文
摘要:旋转图像(找规律) 题目链接:https://leetcode-cn.com/problems/rotate-image/ 题目大意:将矩阵顺时针旋转90度,要求原地旋转,空间复杂度O(1) 先水平对折翻转,然后主对角线翻转 func rotate(matrix [][]int) { n:=len(
阅读全文
摘要:Golang 面试题 (1) 用协程交替打印奇偶数 两个G,分别打印奇数和偶数 无缓冲channel通知这两个G,控制打印顺序 var flagChan=make(chan int) func wokr1(){ for i:=1;i<=10;i++{ flagChan <- 1 //塞入 if i%
阅读全文
摘要:二叉树的序列化和反序列化 题目链接:https://leetcode-cn.com/problems/serialize-and-deserialize-binary-tree/ 题目大意:写两个函数,能够分别对二叉树进行序列化和反序列化 方法1:bfs 序列化:采用队列实现,根节点先入队,处理时按
阅读全文
摘要:删除二叉搜索树中的节点 题目链接:https://leetcode-cn.com/problems/delete-node-in-a-bst/ 题目大意:删除指定key的节点,返回root 分析:树是二叉搜索树,要求返回后仍然保持搜索树的位置 二叉搜索树:根节点值大于左孩子值,根节点值小于右孩子值
阅读全文
摘要:课程表( 拓扑排序/dfs 判环) 题目链接:https://leetcode-cn.com/problems/course-schedule/ 题目大意:给定一个课程依赖关系图,比如课程A依赖课程B,课程B依赖课程C,按照上述的依赖关系,能否学习完所有的课程? 先学C,再学B,最后学A即可 方式1
阅读全文
摘要:LRU缓存 题目链接:https://leetcode-cn.com/problems/lru-cache/ 双向链表+map map用来确定链表中是否存在此key的节点 双向链表用来实际存储 每次get,都把get的节点放到链表头部 每次put,两种情况 key存在,更新value,此节点移到头部
阅读全文
摘要:二叉树的最近公共祖先 链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/ 题目大意:求p和q在root树上的公共祖先,p和q可以是自身的祖先 方法1: 归根结底还是分解成子问题,然后递归求解 针对树
阅读全文
摘要:二叉树最大路径和 题目链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/ 分析: 这个题目是求二叉树的最大路径和,要点有两个: 最大不能走回头路:从根节点延伸的路径,你不能走了左子树又掉过头来走右子树 最大路径不一定要经
阅读全文