面经
bugplus-free
花有重开日,人无在少年
展开
-
面:现在我需要你插入40万条数据,怎么优化让我更快插入
目前使用了这两个方面进行优化,还有其他方面例如,mysql认为的磁盘性能的iops的情况,以及redo log的文件大小和个数,缓冲区大小,以及其他的都是需要考虑的地方。将lnnodb_flush_log_at_trx_commit=2时,让他每秒刷新一次磁盘,可以发现快了将近一倍。可以发现,我们通过这样的方式优化以后,性能提升了近30倍,但是安全性降低了,要看实际的运用场景了。因为参数为1时,每一个事务都要写到磁盘里面去,太慢了,虽然安全,但是效率太低,要寻找平衡点。原创 2024-04-27 11:29:15 · 236 阅读 · 1 评论 -
面:你说MySQL底层是用B+树的,那为什么不用其他数据结构,你来说说原因
所以在B树上面进行了改进,有了B+树,B+树的层级低,并且B+树除了叶子结点以外,只存一些信息,并且叶子结点可以前后遍历,有指针指向下一个节点,这样的话范围遍历就变得更快,不需要做出额外的查找,只需要顺序遍历,对于非叶子结点一般就是维护的节点的第一个索引以及该索引的地址,有多个维护的节点就有多个这样的索引加地址,一般来说,一个节点是16KB,对于非叶子结点上面存的那个索引以及索引地址分别的大小是8B和6B的样子,所以他们可维护的范围很广。在B+树之前,有二叉树,红黑树,B树这些。原创 2024-04-24 16:56:21 · 188 阅读 · 0 评论 -
面: 简历中有看你写使用过JWT,那你来谈谈JWT的三个组成部分
对于载荷部分,一般是claims声明类型,里面一般是存放在创建的时间戳,结束的时间戳以及可能要存放的用户名密码之类的东西。之后就是签名部分,签名使用前面的头部和载荷两部分对于我给出的秘钥secretKey进行签名得到结果。头部一般需要表面令牌的类型,以及使用的签名算法,一般使用HS256的签名算法。jwt的组成部分分为头部,载荷和签名。原创 2024-04-24 08:51:11 · 173 阅读 · 0 评论 -
面:go能不能手写一个简单的协程池?
最简单的想法是使用chan管道和wg也就是sync.WaitGroup这两个搭档来进行实现协程池。并且要明白,这个协程池是不是你叫他停他才能停,如果没说,就让他一直死循环做他应该做的事情。之后是不是还要有一个shutdown函数告诉waitgroup要停止了,结束。对于这个东西,我们肯定要提交任务给他这是一个submit功能函数。那么在chan管道中最简单的就是无缓冲的了。第一个要想到newPool。有这些之后,那就开始书写。对于协程池有啥操作?原创 2024-04-22 00:11:36 · 544 阅读 · 1 评论 -
七大排序(简洁思路版)
从左到右,遍历每一个数字,在每一个位置的操作是,只看当前位置以及左边的,我看我这个数字应该放在哪里就放过去,切记,不管后面,只看前面,时间复杂度高到O(n^2)了。堆排序和直接选择排序是类似的思路,选择最大的,放到末尾去,直接选择排序是直接遍历,但是堆排序并不是,堆排序使用的是维护一个最大堆来快速的确定最大值是什么。和冒泡排序有点像,但是冒泡排序实在数组上两两进行交换,直接选择排序是,扫一遍,确定最大的元素的下标在哪,往数组末尾加,思路一样,实现的方式有点不一样。快并排序是从上往下,归并排序是从下往上。原创 2024-03-16 16:56:59 · 224 阅读 · 0 评论