48 días de entrenamiento intensivo de prueba escrita——día29

1. Opción única

1. Una computadora está instalada con un sistema operativo de 64 bits, "64 bits" se refiere a ( )

A La velocidad informática de la CPU, es decir, la CPU puede calcular datos binarios de 64 bits por segundo
B La longitud de palabra de la CPU, es decir, la CPU puede procesar datos binarios de 64 bits a la
vez C La frecuencia de reloj de la CPU
D El modelo de la CPU

Respuesta correcta: B

El sistema operativo de 64 bits se refiere a la longitud de palabra de la CPU, lo que significa que los datos binarios de 64 bits se pueden procesar cada vez y la dirección de memoria es de 64 bits. Por el contrario, un sistema operativo de 32 bits significa que los datos binarios de 32 bits se pueden procesar cada vez y la dirección de memoria es de 32 bits.

 

2. Para la declaración de Linux, la siguiente declaración es correcta ()

A Cuando el acceso a la memoria lineal es ilegal, el subproceso actual ingresará a la función de procesamiento de señal
B Cuando se usa el comando mv para mover el archivo, el tiempo de modificación del archivo cambiará
C ulimit -c establece el tamaño de la pila de llamadas de función
D La función malloc es el programa de aplicación al sistema operativo. Interfaz para solicitar memoria.

Respuesta correcta: A

Opción A:
cuando el acceso a la memoria está fuera de los límites, el subproceso recibirá la señal, luego realizará el procesamiento de la señal y llamará a la función de procesamiento de la señal.

Opción B:
Tres parámetros de tiempo para archivos bajo Linux:
(1) tiempo de modificación (mtime): tiempo de modificación del contenido
El tiempo de modificación aquí se refiere al momento en que el contenido del archivo cambia y se actualiza.
(2) tiempo de cambio (ctime): tiempo de modificación de estado
El tiempo de modificación aquí se refiere al cambio de los atributos o permisos del archivo, y el tiempo de actualización
(3) tiempo de acceso (atime): el último tiempo de acceso El tiempo de acceso
aquí se refiere a el archivo se leyó mientras se actualizaba la hora.

Opción C:
ulimit -c es un comando para cambiar el tamaño del archivo de volcado del núcleo, que también es el archivo de volcado del núcleo

Opción D:
malloc es una función de biblioteca, y la "interfaz para que el sistema operativo solicite memoria" se refiere a una llamada al sistema. La llamada al sistema está encapsulada en la función de biblioteca, y la función de biblioteca y la llamada al sistema son dos conceptos diferentes .

 

3. ¿Cuál de los siguientes comandos puede cambiar la prioridad de un proceso?

A dos veces
B chnice
C agradable
D renice

respuesta correcta :D

A dos veces: no existe tal comando en linux
B chnice: no existe tal comando en linux
C agradable: establezca el valor de humildad (valor de corrección) de la prioridad del proceso en N. Cuando el valor de amabilidad es negativo, significa alto Prioridad, que se puede ejecutar con anticipación y obtener más Más recursos corresponden a baja simpatía; de lo contrario, significa baja prioridad y alta simpatía.
Drenice: el comando renice puede reajustar el nivel de prioridad de ejecución del programa

 

4. Dos programas A y B en un solo sistema de tareas, donde

Programa A: CPU: 10s -> Dispositivo 1: 5s -> CPU: 5s -> Dispositivo 2: 10s -> CPU: 10s Programa B: Dispositivo 1: 10s -> CPU: 10s -> Dispositivo 2: 5s ->
CPU :5s -> Dispositivo 2: 10s;
la secuencia de ejecución es A->B, luego la utilización de la CPU es ()
A 30 %
B 40 %
C 50 %
D 60 %

Respuesta correcta: C

Concepto básico
El sistema de tarea única nos dice que el programa A y el programa B no se pueden ejecutar en paralelo, sino que solo se pueden ejecutar simultáneamente.

Análisis de resolución de problemas
Programa A, el tiempo de CPU es 10+5+10=25 s, el tiempo total de ejecución del programa es 10+5+5+10+10=40 s; Programa B, el tiempo de CPU es 10+5=15 s, el tiempo total de ejecución del
programa tiempo Es 10+10+5+5+10=40 s; el tiempo total de la CPU es 40 s, el tiempo total de los dos procesos es 80 s y la
utilización de la CPU es 40/80 = 0,5

 

5. ¿Cuál de las siguientes situaciones generará una solicitud de interrupción ()

A Durante el proceso de entrada del teclado, cada vez que
se presiona la tecla B El resultado de sumar dos números es cero
C El resultado del cálculo se desborda
D Se ejecuta una instrucción de ensamblaje del sistema

Respuesta correcta: A

La interrupción del programa
significa que en el proceso de ejecución del programa actual de la computadora ocurren algunas situaciones anormales y solicitudes especiales que deben tratarse con urgencia. La CPU finaliza temporalmente el programa actual y vuelve a tratar eventos más urgentes que ocurren aleatoriamente. Volver al programa original para continuar la ejecución.

Opción A: Cuando ingresamos desde el teclado, se necesita interrumpir el proceso para la lectura de E/S, por lo que hará que el programa se interrumpa y cambie a E/S; la típica es la opción scanf B: el resultado de sumar dos números es 0
, lo cual es normal Los resultados que pueden generarse cuando el programa se está ejecutando no harán que el programa deje de ejecutarse
Opción C: el resultado del cálculo se truncará cuando se desborde y no hará que el programa deje de ejecutarse
Opción D: el la finalización de la instrucción de ensamblaje también es una manifestación de la ejecución del programa y no provocará una nueva ejecución en el programa

 

6. ¿Cuál de los siguientes no es un objeto kernel ()

A proceso
B hilo
C mutex
D sección crítica

respuesta correcta :D

Opción A: El proceso es un bloque de control de procesos en el kernel, y la estructura task_struct Opción
B: El subproceso también es un bloque de control de procesos en el kernel
Opción C: El mutex (mutex) también se crea en el kernel para proteger el operación de programas multiproceso Opción D:
Sección crítica se refiere al área de código correspondiente al recurso crítico al que se puede acceder mediante múltiples flujos de ejecución, definidos por el programador.

 

7. En Linux, si el umask del sistema está configurado en 244, cree un nuevo archivo y su permiso es ()

A --wr–r–
B -r-xr–r–
C -r—w–w
D -rx-wx-wx

Respuesta correcta: C

Descripción de la función umask
: especifique la máscara de permiso predeterminada al crear un archivo.
Sintaxis: umask [-S][Máscara de permiso]
Nota complementaria: umask se puede usar para configurar [Máscara de permiso]. [Máscara de autoridad] se compone de números octales 3. Después de restar la autoridad de acceso existente de la máscara de autoridad, se puede generar la autoridad predeterminada al crear un archivo.
Al crear, el archivo tiene como valor predeterminado 666 y el directorio tiene como valor predeterminado 777

Por lo tanto, para el nuevo permiso de archivo 666-244,
el valor correspondiente al permiso rwx en el sistema Linux es 422, por lo que el permiso de archivo es r-- -w- -w-

 

8. El archivo ejecutable generado a partir del código fuente debe pasar por las etapas de precompilación, compilación, ensamblaje, vinculación, etc. Error: el símbolo externo no resuelto BeginScene es un error en la etapa ().

A precompilar
B compilar
C ensamblar
D enlazar
respuesta correcta: D

El símbolo externo no resoluble BeginScene indica que se ha compilado un solo archivo. Al vincular, el símbolo externo no se encontró y no se pudo resolver, por lo que sucedió en la etapa de vinculación.

 

9. ¿En qué etapa falla el programa?

int main(void)
{
    
    
http://www.taobao.com
cout << "welcome to taobao" << endl;
return 0;
}

A Error en la etapa de preprocesamiento
B Error en la etapa de compilación
C Error en la etapa de ensamblaje
D Error en la etapa de enlace
E Error en la etapa de tiempo de ejecución
F El programa se ejecuta normalmente

Respuesta correcta: F

El www.taobao.com después de la doble barra inclinada se considera un comentario, por lo tanto, ¿es legal el http: anterior?
Esta es una sintaxis que casi nunca se usa en C++, la etiqueta.

Una declaración etiquetada es un tipo especial de declaración precedida por un identificador (es decir, etiqueta, http en el código anterior) y dos puntos. Use goto label para saltar a la etiqueta para la ejecución. Por ejemplo, puede escribir goto http en el código, de modo que se ejecute la instrucción cout.

 

10. Hay una variable int a=0, dos hilos realizan la operación +1 al mismo tiempo, y cada hilo suma 100 veces sin bloquear ¿Cuál es el valor final de a ()?

A 200
B <=200
C >=200
D son todas posibles
Respuesta correcta: B

1. Si se ejecutan dos subprocesos simultáneamente, se ejecuta el subproceso A y se ejecuta el subproceso B, entonces el valor final es 200. 2.
Si se ejecutan dos subprocesos en paralelo, puede causar ambigüedad en el resultado del programa, entonces el valor final El el valor resultante puede ser inferior a 200

 
 

2. Programación

1. Encuentre la suma más pequeña que no sea de composición de matrices positivas

Enlace

Dada una matriz arr llena de números positivos, defina el concepto de la suma más pequeña no constituyente de arr:
1. En todos los subconjuntos no vacíos de arr, la suma de todos los elementos de cada subconjunto producirá muchos valores, y el registro más pequeño es min, y el mayor se registra como max
2. En el intervalo [min, max], si hay algunos números positivos que no se pueden obtener sumando cierto subconjunto de arr, entonces el menor de estos números positivos es el menor
de arr 3. En el intervalo [min, max], si todos los números pueden obtenerse sumando un cierto subconjunto de arr, entonces max+1 es la suma no compuesta más pequeña de arr ;

Ejemplo: arr = {3,2,5} El mínimo de arr es 2 y el máximo es 10. En el intervalo [2,10], 4 es el valor más pequeño que ningún subconjunto puede sumar, por lo que 4 es El suma mínima no compuesta de arr;
arr = {3,2,4} El mínimo de arr es 2 y el máximo es 9. En el intervalo [2,9], 8 es el valor que
no puede sumado por ningún subconjunto El más pequeño, por lo que 8 es la suma más pequeña que no es de composición de arr, arr = {3,1,2} El mínimo de arr es 1 y el máximo es 6. En el intervalo [2,6], cualquier número puede ser un determinado subconjunto se obtiene sumando, por lo que 7 es la suma mínima no compuesta de arr; escriba una función para devolver la suma mínima no compuesta de arr.

respuesta correcta:

class Solution {
    
    
public:
    int getFirstUnFormedNum(vector<int> &arr, int length) {
    
    
        int sum = 0, min = arr[0];
        int i, j;
        for (int i = 0; i < length; i++)
        {
    
    
            sum += arr[i];
            min = arr[i] < min ? arr[i] : min;
        } 
        vector<int> dp(sum + 1, 0);
        for (i = 0; i < length; i++){
    
    //有length个数据--有length个阶段
            //{2, 3, 5}
            //i=0--d[10]=2 d[9]=2 d[8]=2 d[7]=2...d[2]=2
            //i=1--d[10]=5 d[9]=5...d[5]=5 d[4]=3 d[3]=3
            //i=2--d[10]=10 d[9]=8 d[8]=8 d[7]=7 d[6]=5 d[5]=5
            for (j = sum; j >= arr[i]; j--){
    
    
                //逆序判断背包承重中能够放入的数据
                //当数组中只有2的时候,背包承重从2-10都可以放入2的数值
                //当数组中放入2和3的时候,背包承重从5-10可以放入5,3-4放入3,2只能放入2
                //当数组中放入2,3,5时,背包承重10放入10,8-9放入8,7放入7,5-6放入5...
                //dp[j-arr[i]]意思是背包承重为j时,如果已经放置了arr[i]的重量后还能放置的最大重量
                if (dp[j] < dp[j - arr[i]] + arr[i])//对每个承重计算当前最大能放置重量
                    dp[j] = dp[j - arr[i]] + arr[i];//更新背包中能够放入的最大值
                else
                    dp[j] = dp[j];
            }
        }
        // 最后当承重为n时,放入的重量不为n则认为是最大不可求和
        for (i = min; i <= sum; i++)
        {
    
    
            if (i != dp[i])
                return i;
        } 
        return sum + 1;
    }
};

 

2. Hay dinero falso

Enlace

¡Hay monedas falsas! Ahora la carne de cerdo ha subido, pero los salarios de los granjeros no han aumentado ¿Cómo podemos comprar carne de cerdo sin dinero? ¡Nowcoder fue a comprar carne de cerdo, pero el cambio que encontró contenía dinero falso! ! ! Es una pena que Nowcoder lo haya mezclado accidentalmente en una pila de monedas reales. Solo sabe que el peso del dinero falso es más liviano que el del dinero real. Dado un saldo (ambos extremos del saldo pueden contener monedas infinitas), use el tiempo más rápido para descubrir ese desagradable dinero falsificado.

Descripción de entrada:
1≤n≤2^30, ingrese 0 para finalizar el programa.
Descripción de la salida: ¿
Cuántas veces hay que pesar como máximo para encontrar el dinero falso?

Ejemplo 1 :
Entrada
3 1
2
0
Salida 1 3

respuesta correcta:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(){
    
    
    long long n; int cnt;
    while ((scanf("%lld", &n)) != EOF) {
    
    
        if (n == 0)
            break;
        cnt = 0;
        while (n >= 2) {
    
    
            if (n % 3) {
    
    
                //不可以整除则取最差情况:最重的一份是 n/3 + 1个金币
                n = n / 3 + 1;
            }
            else {
    
    
                //可以整除在直接整除,能够获取到最重的一份
                n /= 3;
            } 
            cnt++;
        } 
        printf("%d\n", cnt);
    };
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/Ll_R_lL/article/details/128730504
Recomendado
Clasificación