博客记录-day142-力扣+线上问题排查,操作系统

一、力扣

1、二分查找

704. 二分查找

注意,代码找的是数组中第一个大于等于target的下标,可能下标越界

java 复制代码
class Solution {
    public int search(int[] nums, int target) {
        int left=0,right=nums.length;
        while(left<right){
            int mid=(left+right)/2;
            if(nums[mid]<target){
                left=mid+1;
            }else{
                right=mid;
            }
        }
        return left<nums.length&&nums[left]==target?left:-1;
    }
}

2、括号生成

22. 括号生成

java 复制代码
class Solution {
    List<String> res;
    List<String> path;
    int n;
    public List<String> generateParenthesis(int n) {
        res=new ArrayList<>();
        path=new ArrayList<>();
        this.n=n;
        dfs(0,0);
        return res;
    }
    public void dfs(int x,int y){
        if(x>n||y>n) return;
        if(y>x) return;
        if(x==n&&y==n){
            StringBuilder temp=new StringBuilder();
            for(var e:path){
                temp.append(e);
            }
            res.add(temp.toString());
        }
        path.add("(");
        dfs(x+1,y);
        path.removeLast();
        path.add(")");
        dfs(x,y+1);
        path.removeLast();
    }
}

3、路径总和

112. 路径总和

java 复制代码
class Solution {
    boolean res=false;
    public boolean hasPathSum(TreeNode root, int targetSum) {
        if(root==null) return false;
        dfs(root,targetSum,0);
        return res;
    }
    public void dfs(TreeNode root,int targetSum,int sum){
        if(root==null) return;
        sum+=root.val;
        if(root.left==null&&root.right==null&&sum==targetSum){
            res=true;
            return;
        }
        dfs(root.left,targetSum,sum);
        dfs(root.right,targetSum,sum);
    }
}

4、 从中序与后序遍历序列构造二叉树

106. 从中序与后序遍历序列构造二叉树

java 复制代码
class Solution {
    int[] inorder,postorder;
    public TreeNode buildTree(int[] inorder, int[] postorder) {
        this.inorder=inorder;
        this.postorder=postorder;
       
        return dfs(0,inorder.length-1,0,postorder.length-1);
    }
    public TreeNode dfs(int a,int b,int c,int d){
        if(a>b||c>d) return null;
        int target=postorder[d];
        int point=a;
        while(inorder[point]!=target){
            point++;
        }
        TreeNode root=new TreeNode(target);
        root.left=dfs(a,point-1,c,d+point-b-1);
        root.right=dfs(point+1,b,d+point-b,d-1);
        return root;
    }
}

5、最大二叉树

654. 最大二叉树

java 复制代码
class Solution {
    int[] nums;
    public TreeNode constructMaximumBinaryTree(int[] nums) {
        this.nums=nums;
        return dfs(0,nums.length-1);
    }
    public TreeNode dfs(int x,int y){
        if(x>y) return null;
        int max=nums[x];
        int point=x;
        for(int i=x;i<=y;i++){
            if(nums[i]>max){
                max=nums[i];
                point=i;
            }
        }
        TreeNode root=new TreeNode(max);
        root.left=dfs(x,point-1);
        root.right=dfs(point+1,y);
        return root;
    }
}

二、语雀-线上问题排查

1、数据库连接池满排查过程

✅数据库连接池满排查过程

2、数据库CPU被打满排查过程

✅数据库CPU被打满排查过程

3、频繁FullGC问题排查

✅频繁FullGC问题排查

✅频繁FullGC问题排查(2)

三、语雀-操作系统

1、进程,线程和协程的区别

✅进程,线程和协程的区别

2、什么是全双工和半双工

✅什么是全双工和半双工

3、进程间通信方式有哪些?

✅进程间通信方式有哪些?

4、什么是用户态、内核态?如何切换的?

✅什么是用户态、内核态?如何切换的?

5、什么是Load(负载)

✅什么是Load(负载)?

6、什么是CPU利用率?怎么算的?

✅什么是CPU利用率?怎么算的?

1. CPU利用率与负载

7、什么是时间片

✅什么是时间片

8、你掌握哪些Linux常用命令?

✅你掌握哪些Linux常用命令?

我熟悉Linux常用命令,涵盖文件操作(如ls查看目录、cp/mv/rm复制/移动/删除、cat/less查看文件)、系统管理(如ps/top监控进程、chmod/chown修改权限、df/du查看磁盘空间、apt/yum包管理)、网络工具(如ping/curl测试连接、ssh/scp远程操作、netstat查端口)、文本处理(如grep/sed/awk搜索/编辑、vim/nano编辑器)及压缩归档(tar/gzip)等核心功能,能支持日常运维、脚本编写及故障排查,同时会提醒用户谨慎操作高危命令(如rm -rf)。

9、什么是操作系统的多级缓存

✅什么是操作系统的多级缓存

10、什么是MESI缓存一致性协议

✅什么是MESI缓存一致性协议

1. 缓存一致性协议

11、线程的实现方式有哪些?

✅线程的实现方式有哪些?

1. 使用内核线程实现

2. 使用用户线程实现

12、IO多路复用和多线程有什么区别?

✅IO多路复用和多线程有什么区别?

1. IO多路复用

2. 多线程

3. 对比

13、什么是Page Cache,他的读写过程是怎么样的?有什么优缺点?

✅什么是Page Cache,他的读写过程是怎么样的?有什么优缺点?

1. 读过程

2. 写过程

14、什么是 IO 密集,什么是 CPU 密集?

✅什么是 IO 密集,什么是 CPU 密集?

1. IO密集

2. CPU密集

15、什么是"孤儿进程",什么是"僵尸进程"?

✅什么是"孤儿进程",什么是"僵尸进程"?

1. 孤儿进程

2. 僵尸进程

16、软链接和硬链接的区别?

✅软链接和硬链接的区别?

1. inode

2. 软连接

3. 硬链接

4. 区别

17、常见的进程调度算法有哪些?

✅常见的进程调度算法有哪些?

相关推荐
wuk9983 小时前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github
ai小鬼头5 小时前
AIStarter如何助力用户与创作者?Stable Diffusion一键管理教程!
后端·架构·github
天天扭码5 小时前
从图片到语音:我是如何用两大模型API打造沉浸式英语学习工具的
前端·人工智能·github
独立开阀者_FwtCoder7 小时前
【Augment】 Augment技巧之 Rewrite Prompt(重写提示) 有神奇的魔法
前端·javascript·github
极客悟道9 小时前
巧解 Docker 镜像拉取难题:无需梯子和服务器,拉取数量无限制
后端·github
独立开阀者_FwtCoder10 小时前
你用 Cursor 写公司的代码安全吗?
前端·javascript·github
T__TIII12 小时前
Dify 自定义插件
人工智能·github
小皮侠15 小时前
nginx的使用
java·运维·服务器·前端·git·nginx·github
汪汪队睡大觉7516 小时前
OpenAI-Kotlin文档详解
github
蛋黄蛋黄16 小时前
微信表情怎么在自己的项目使用微信表情?-> [开源仓库]wechat-emoji
前端·github