博客记录-day139-力扣+场景题

一、力扣

1、字符串相加

415. 字符串相加

java 复制代码
class Solution {
    public String addStrings(String num1, String num2) {
        StringBuilder res = new StringBuilder();
        int i = num1.length() - 1, j = num2.length() - 1, carry = 0;
        while(i >= 0 || j >= 0){
            int n1 = i >= 0 ? num1.charAt(i) - '0' : 0;
            int n2 = j >= 0 ? num2.charAt(j) - '0' : 0;
            int tmp = n1 + n2 + carry;
            carry = tmp / 10;
            res.append(tmp % 10);
            i--; j--;
        }
        if(carry == 1) res.append(1);
        return res.reverse().toString();
    }
}

2、重排链表

143. 重排链表

java 复制代码
class Solution {
    public void reorderList(ListNode head) {
        ListNode sec=findmid(head);
        ListNode head2=reverse(sec);
        ListNode cur=head;
        while(head2!=null){
            ListNode head2next=head2.next;
            head2.next=null;
            ListNode cop=cur.next;
            cur.next=head2;
            head2.next=cop;
            cur=cop;
            head2=head2next;
        }
    }
    public ListNode findmid(ListNode head){
        ListNode fast=head;
        ListNode slow=head;
        while(fast!=null&&fast.next!=null){
            fast=fast.next.next;
            slow=slow.next;
        }
        ListNode res=slow.next;
        slow.next=null;
        return res;
    }
    public ListNode reverse(ListNode head){
        ListNode pre=null;
        while(head!=null){
            ListNode nextHead=head.next;
            head.next=pre;
            pre=head;
            head=nextHead;
        }
        return pre;
    }
}

3、相交链表

160. 相交链表

java 复制代码
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode temp1=headA,temp2=headB;
        while(temp1!=temp2){
            temp1=(temp1==null?headB:temp1.next);
            temp2=(temp2==null?headA:temp2.next);
        }
        return temp1;
    }
}

二、语雀-场景题

1、如何实现敏感词过滤

✅如何实现敏感词过滤?

1. 字符串匹配

2. 前缀树

3. DFA算法

2、为啥不要在事务中做外部调用?

✅为啥不要在事务中做外部调用?

3、如何实现一个抢红包功能

✅如何实现一个抢红包功能?

1. 二倍均值

2. 高并发

4、使用分布式锁时,分布式锁加在事务外面还是里面,有什么区别?

✅使用分布式锁时,分布式锁加在事务外面还是里面,有什么区别?

1. 锁的粒度大于事务粒度

2. 事务的粒度大于锁粒度

3. 建议选择第一个

5、加分布式锁之后影响并发了怎么办?

✅加分布式锁之后影响并发了怎么办?

1. 主要防止重复消费,消息重投

6、数据库乐观锁和悲观锁以及redis分布式锁的区别和使用场景?

✅数据库乐观锁和悲观锁以及redis分布式锁的区别和使用场景?

1. 悲观锁

2. 乐观锁

3. 乐观锁与悲观锁区别

4. Redis分布式锁

7、为什么不用分布式锁来实现秒杀?

✅为什么不用分布式锁来实现秒杀?

8、为什么不直接用原生的BlockinQueue做消息队列

✅为什么不直接用原生的BlockinQueue做消息队列

9、Spring Event和MQ有什么区别?各自适用场景是什么?

✅Spring Event和MQ有什么区别?各自适用场景是什么?

相关推荐
waterHBO4 小时前
( github actions + workflow 03 ) 手动添加 token, 防止权限不够
github
国际云,接待6 小时前
AWS S3:云存储的“超级基石”
服务器·网络·人工智能·github·aws·亚马逊
寻月隐君7 小时前
手把手教你用 Solana Token-2022 创建支持元数据的区块链代币
后端·web3·github
MinIO官方账号9 小时前
AIStor 的模型上下文协议 (MCP) 服务器:管理功能
运维·服务器·github
A-wliang13 小时前
深入解析 GitHub Token 与 NPM Token:自动化发布的完整指南
npm·自动化·github
滴答滴答嗒嗒滴13 小时前
GitHub Actions 深度实践:零运维搭建 CI/CD 流水线
运维·ci/cd·github
Jooolin16 小时前
【编程史】Gitee是啥?它和GitHub关系是什么?
git·github·ai编程
chenquan17 小时前
ArkFlow 流处理引擎 0.4.0-rc1 发布
人工智能·后端·github
江梦寻1 天前
软件工程教学评价
开发语言·后端·macos·架构·github·软件工程
掘金安东尼1 天前
换了无数键盘、工学椅,却从没认真选过一块为程序员“注意力”设计的屏
前端·面试·github