收钱吧 后端一面

主要问简历项目

1.需求分析和设计这么做的

2.Post和Get的区别

3.springboot和spring的区别

4.网关的限流(旋钮)怎么做的,除了令牌桶其他分布式微服务限流的方法有了解吗

5.鉴权怎么做的

6.不同的用户有不同的限流需求,怎么做这个场景7.websocket和http的区别

8.恶意用户建立很多websocket链接怎么避免

9.mq的消息出错后,怎么重新消费

10.数据库写入高并发怎么处理

11.项目里的数据一致性怎么做,这个问题问的很模糊12.定时任务特别多,怎么让任务都能够按时执行13.Nacos在项目里的作用

14.服务挂掉怎么处理,不让网关往挂掉的机器转发请求15.redis 分布式锁怎么实现

16.请求量统计的redis排行榜怎么实现

17.排行榜数据写入数据库怎么做

18.http和https

19.你这个高并发指标这么做的,讲一下分析和优化过程19.异步的日志除了kafka还有没有好的方法去做20.docker在你们项目怎么做的

22.数据库表的查询优化

23.名字查询,怎么快速查询(面试官有口音,不太听得懂问题描述)

24.产品需求迭代怎么做

25.云服务器有用过吗,阿里云有哪些好用的组件

26.AI相关的问题

全部评论
我一面面试官直接问微服务,分布式给我这个菜鸟问自闭了
点赞 回复 分享
发布于 09-19 11:30 安徽

相关推荐

核心思路是先统计链表总长度,确定需要反转的组数,再逐组局部反转并重新连接,计算出需要反转的组数s = n/k;然后循环s次,每次对当前 k 个节点进行局部反转,反转后将当前组的首尾与前后部分重新连接,最后返回处理后的链表头。对应的代码解析如下:class Solution {public:ListNode* reverseKGroup(ListNode* head, int k) {if(!head || k == 1) return head; // 空链表或k=1无需反转ListNode* dummy = new ListNode(0); // 虚拟头节点,简化头节点处理dummy->next = head;ListNode* cur = head;ListNode* pre = dummy; // 记录上一组的尾节点ListNode* next = nullptr;ListNode* prev = nullptr;ListNode* temp = nullptr; // 记录当前组反转前的头节点int n = 0;while(cur != nullptr) {n++;cur = cur->next;}cur = head;if(n == 1) return head; // 只有1个节点直接返回int s = n / k; // 计算需要反转的组数while(s--) {for(int i = 0; i < k; i++) {if(i == 0) temp = cur; // 记录当前组反转前的头节点next = cur->next;cur->next = prev; // 当前节点指向前一个反转节点prev = cur;cur = next;}pre->next = prev;temp->next = cur;pre = temp; // 更新上一组的尾节点为当前组反转前的头节点prev = nullptr; // 重置反转前驱指针}ListNode* newhead = dummy->next;delete dummy; // 释放虚拟头节点,避免内存泄漏return newhead;}};该解法的时间复杂度为 O (n),空间复杂度为 O (1)。
点赞 评论 收藏
分享
评论
5
16
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务