来源:投稿作者:LSC编辑:学姐话不多说,直接上题1.链表反转ListNode* reverseList(ListNode* head) { ListNode *prev = nullptr; ListNode *curr = head; while (curr) { ListNode *next = curr->next; curr->next = prev; prev = curr; curr = next; } return prev;}2.小偷偷东西,但是不能在相邻的两个房子里偷东西,问偷到的物品价值的最大值经典的动态规划问题状态转移方程式:dp[0]=v[0]//v是物品价值
哪些情况会导致内存泄漏以下四种情况会造成内存的泄漏:意外的全局变量:由于使用未声明的变量,而意外的创建了一个全局变量,而使这个变量一直留在内存中无法被回收。被遗忘的计时器或回调函数:设置了setInterval定时器,而忘记取消它,如果循环函数有对外部变量的引用的话,那么这个变量会被一直留在内存中,而无法被回收。脱离DOM的引用:获取一个DOM元素的引用,而后面这个元素被删除,由于一直保留了对这个元素的引用,所以它也无法被回收。闭包:不合理的使用闭包,从而导致某些变量一直被留在内存当中。常见的CSS布局单位常用的布局单位包括像素(px),百分比(%),em,rem,vw/vh。(1)像素(px
哪些情况会导致内存泄漏以下四种情况会造成内存的泄漏:意外的全局变量:由于使用未声明的变量,而意外的创建了一个全局变量,而使这个变量一直留在内存中无法被回收。被遗忘的计时器或回调函数:设置了setInterval定时器,而忘记取消它,如果循环函数有对外部变量的引用的话,那么这个变量会被一直留在内存中,而无法被回收。脱离DOM的引用:获取一个DOM元素的引用,而后面这个元素被删除,由于一直保留了对这个元素的引用,所以它也无法被回收。闭包:不合理的使用闭包,从而导致某些变量一直被留在内存当中。常见的CSS布局单位常用的布局单位包括像素(px),百分比(%),em,rem,vw/vh。(1)像素(px
1.介绍泛型中的约束,其实就是针对类型参数的约束,限制类型参数的选择只能在某个特定范围内。其中的体现包括:限制类型参数必须是一个结构、限制类型参数必须是某个具体类型、限制类型参数必须派生自某个基类等等。在默认情况下,定义的泛型没有任何约束,这意味着在调用泛型时,可以使用任何数据类型作为类型参数。如果定义了约束,则在应用端调用泛型时,不传入符合约束条件的类型参数,编译器将提示错误。通过这种约束实现了编译前类型检查,确保了泛型在运行时对类型参数使用的安全性。以上说的这种限制性的作用,只能体现约束表面的用意,这种用意是比较浅显易懂。但实际上泛型的约束还有另一层的用意:“定义约束可以告知编译器,类型参
1.介绍泛型中的约束,其实就是针对类型参数的约束,限制类型参数的选择只能在某个特定范围内。其中的体现包括:限制类型参数必须是一个结构、限制类型参数必须是某个具体类型、限制类型参数必须派生自某个基类等等。在默认情况下,定义的泛型没有任何约束,这意味着在调用泛型时,可以使用任何数据类型作为类型参数。如果定义了约束,则在应用端调用泛型时,不传入符合约束条件的类型参数,编译器将提示错误。通过这种约束实现了编译前类型检查,确保了泛型在运行时对类型参数使用的安全性。以上说的这种限制性的作用,只能体现约束表面的用意,这种用意是比较浅显易懂。但实际上泛型的约束还有另一层的用意:“定义约束可以告知编译器,类型参
最近看书看到的伪共享问题,直接触碰到知识盲区了,之前确实没听说过这个东西,打开百度就像吃饭一样自然。虽然面经上出现的次数不多,不过我觉得还是很重要的一个问题,而且不难,花个五分钟就能弄清楚~老规矩,背诵版在文末。公众号【飞天小牛肉】定期更新大厂面试题,提供背诵版和详解版三级缓存架构众所周知,为了缓解内存和CPU之间速度不匹配的矛盾,引入了高速缓存这个东西,它的容量比内存小很多,但是交换速度却比内存要快得多。之前我们画过这样的分级存储体系结构:事实上,高速缓存仍然存在细分,也称为三级缓存结构:一级(L1)缓存、二级(L2)缓存、三级(L3)缓存越靠近CPU的缓存,速度越快,容量也越小。所以L1缓
最近看书看到的伪共享问题,直接触碰到知识盲区了,之前确实没听说过这个东西,打开百度就像吃饭一样自然。虽然面经上出现的次数不多,不过我觉得还是很重要的一个问题,而且不难,花个五分钟就能弄清楚~老规矩,背诵版在文末。公众号【飞天小牛肉】定期更新大厂面试题,提供背诵版和详解版三级缓存架构众所周知,为了缓解内存和CPU之间速度不匹配的矛盾,引入了高速缓存这个东西,它的容量比内存小很多,但是交换速度却比内存要快得多。之前我们画过这样的分级存储体系结构:事实上,高速缓存仍然存在细分,也称为三级缓存结构:一级(L1)缓存、二级(L2)缓存、三级(L3)缓存越靠近CPU的缓存,速度越快,容量也越小。所以L1缓
众所周知,InnoDB中既有读锁也有写锁,也称为共享锁和排他锁,这两种锁既可以加在整张表上,也可以加在行上。MySQL自身就提供了表锁的能力:读锁:LOCKTABLEtable_nameREAD 用读锁锁表,会阻塞其他事务的写操作写锁:LOCKTABLEtable_nameWRITE 用写锁锁表,会阻塞其他事务的读和写操作行锁是InnoDB存储引擎提供的,MySQL本身并不提供行级锁的能力:读锁,如SELECT*FROMtable_nameWHERE...LOCKINSHAREMODE 加行级读锁,会阻塞其他事务对该行记录的写操作写锁,如SELECT*FROMtable_nameWHERE..
众所周知,InnoDB中既有读锁也有写锁,也称为共享锁和排他锁,这两种锁既可以加在整张表上,也可以加在行上。MySQL自身就提供了表锁的能力:读锁:LOCKTABLEtable_nameREAD 用读锁锁表,会阻塞其他事务的写操作写锁:LOCKTABLEtable_nameWRITE 用写锁锁表,会阻塞其他事务的读和写操作行锁是InnoDB存储引擎提供的,MySQL本身并不提供行级锁的能力:读锁,如SELECT*FROMtable_nameWHERE...LOCKINSHAREMODE 加行级读锁,会阻塞其他事务对该行记录的写操作写锁,如SELECT*FROMtable_nameWHERE..
大家好,我是小林。之前有位读者面字节被问到两个很经典的TCP问题:第一个问题:服务端大量处于TIME_WAIT状态连接的原因。第二个问题:服务端大量处于CLOSE_WAIT状态连接的原因。这两个问题在面试中很常问,主要也是因为在工作中也很常遇到这个问题。这次,我们就来聊聊这两个问题。服务端出现大量TIME_WAIT状态的原因有哪些?我们先来看一下TCP四次挥手的流程吧,看看TIME_WAIT状态发生在哪一个阶段。下面这个图,是由「客户端」作为「主动关闭方」的TCP四次挥手的流程。TCP四次挥手的流程从上面我们可以知道,TIME_WAIT状态是「主动关闭连接方」才会出现的状态。而且TIME_WA