• 笔试强训(三十五)


    一、选择题

    (1)在支持多线程的系统中,进程P创建的若干个线程不能共享的是(D)
    A. 进程P的代码段
    B.进程P中打开的文件
    C.进程P的全局变量
    D.进程P中某线程的栈指针

    栈指针是属于线程私有的

    (2)线程的切换会引起进程的切换(A)
    A.错
    B.对

    一个进程可能包含多个线程,对于同一个进程中的线程间切换,不会引起进程切换,不同进程间中的线程切换会导致进程切换

    (3)把逻辑地址转换为物理地址称之为(B)
    A.地址分配
    B.地址映射
    C.地址保护
    D.地址越界

    地址映射:为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址

    (4)在Unix系统中,处于()状态的进程最容易被执行(C)
    A.辅存睡眠
    B.内存睡眠
    C.内存就绪
    D.辅存就绪

    在这里插入图片描述

    (5)当系统发生抖动时,可以采取的有效措施是(A)

    1. 撤销部分进程
    2. 增加磁盘交换区的容量
    3. 提高用户进程的优先级
      A.仅1
      B.仅2
      C.仅3
      D.仅1 2

    在具有对换功能的操作系统中,通常把外存分为文件区和对换区。前者用于存放文件,后者用于存放从内存中换出的进程
    抖动现象是指刚刚被换出的页很快又要被访问。为此,又要换出其他页,而该页又快被访问,如此频繁的置换页面,以致大部分时间都花在页面置换上
    撤销进程可以减少所要用的页面数,防止抖动
    对换区大小和进程优先级都与抖动无关

    二、编程题

    2.1 年会抽奖

    2.1.1 题目在这里插入图片描述

    2.1.2 题解

    对于这道题,和错排问题类似
    错排问题:用A、B、C……表示写着n位友人名字的信封,a、b、c……表示n份相应的写好的信纸。把错装的总数为记作D(n)。假设把a错装进B里了,包含着这个错误的一切错装法分两类

    • b装入A里,这时每种错装的其余部分都与A、B、a、b无关,应有D(n-2)种错装法。
    • b装入A、B之外的一个信封,这时的装信工作实际是把(除a之外的)n-1份信纸b、c……装入(除B以外的)n-1个信封A、C……,显然这时装错的方法有D(n-1)种。该种情况是b一定不会装入到A中,可以理解成此时b和A是对应的,c、d…和C、D…对应,而错排是指不能将信装入到对应的信封中,该情况属于是一个子问题

    对于a错装共有n-1中可能,因此D(n)=(n-1)*[D(n-1)+D(n-2)]
    特殊情况D(0)=0,D(1)=0;

    思路:对于本题来说,除了要求出错排总数来说,还要求出数值为n时,所有的排列组合情况

    代码:

    import java.util.*;
    public class Main{
      public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        long d[]= new long[21]; //存放错排的种数
        d[0]=0;
        d[1]=0; 
        d[2]=1;
        
        long f[]=new long[21];//存在阶乘
        f[0]=1;
        f[1]=1;
        f[2]=2;
        for(int i=3;i<=20;i++){
          d[i]=(i-1)*(d[i-1]+d[i-2]);
          f[i]=i*f[i-1];
        }
        while(scanner.hasNextInt()){
          int n=scanner.nextInt();
          System.out.printf("%.2f%%\n",100.0*d[n]/f[n]);
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2.2 抄送列表

    2.2.1 题目

    在这里插入图片描述

    2.2.2 题解

    思路解析出第一行输入,将所有名字保存在HashSet中,判断第二行输入的名字是否存在

    代码:

    import java.util.*;
    public class Main{
      public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
    
        while(scanner.hasNextLine()){
           Set<String> set=new HashSet<>();
          String name=scanner.nextLine();
          int i=0;
          int end=0;
          while(i<name.length()){
            if(name.charAt(i)=='\"'){
              end=name.indexOf("\"",i+1);
              set.add(name.substring(i+1,end));//截取的起始位置i+1,因为i位置是"
              i=end+2; //end指向" i需要跳过"和"后面的,
            }else {
              end=name.indexOf(",",i+1);
              if(end==-1){
                //分割最后一个名字的情况
                set.add(name.substring(i,name.length()));
                break;
              }
              set.add(name.substring(i,end));//截取位置是i,因为i位置指向英文字符
              i=end+1;//end指向, i需要跳过,
            }
          }
          name=scanner.nextLine();
          if(set.contains(name)){
             System.out.println("Ignore");
          }else {
            System.out.println("Important!");
          }
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    indexOf方法
    在这里插入图片描述

  • 相关阅读:
    【C++笔记】之基于C++11 condition_variable实现的缓存限制队列
    JS实现图片懒加载
    redisson公平锁与非公平原理
    Linux 搭建NFS
    c语言:于龙加
    Java设计模式 | 简介
    未来五年,千万不要错过这波红利!
    银行数字化转型导师坚鹏:BLM银行数字化转型战略培训圆满结束
    MySQL事务隔离级别
    WebRTC系列-网络传输之7-ICE补充之偏好(preference)与优先级(priority)
  • 原文地址:https://blog.csdn.net/m0_60631323/article/details/127725389