15 preguntas básicas de la entrevista de programación Java-nodo de motivación

En el entorno actual de Internet, la demanda de programadores e ingenieros está aumentando y, en consecuencia, también aumenta el número de personas que desean invertir en la industria de la ingeniería. Por lo tanto, muchas grandes empresas están aumentando gradualmente sus requisitos de entrevistas para puestos de ingeniero. entrevista, el entrevistador se enfoca en si el conocimiento básico es sólido. Las preguntas básicas de la entrevista de programación Java son la tarea que debe hacerse antes de la entrevista. Las 15 preguntas básicas de la entrevista de programación Java se compilan a continuación. Amigos que desean participar en la entrevista Java puede aprender lo siguiente.

image.png

1. ¿Dónde está la seguridad del nivel de lenguaje java?

Respuesta: Java eliminó los punteros poderosos pero peligrosos y los reemplazó con referencias. Debido a que el puntero se puede mover, el puntero puede apuntar a un área de memoria, independientemente de si el área está disponible. Esto es peligroso, porque la dirección de memoria puede almacenar datos importantes o estar ocupada por otros programas, y usar punteros También es fácil para que la matriz cruce el límite.

Mecanismo de recolección de basura: el programador no necesita controlar directamente la recolección de memoria, y el recolector de basura recolecta automáticamente la memoria que ya no se usa en segundo plano. Evite que el programa se olvide de reciclar a tiempo, provocando pérdidas de memoria. Evite la recuperación de errores del programa de la memoria de la biblioteca de clases principal del programa, lo que provoca bloqueos del sistema.

Mecanismo de manejo de excepciones: el mecanismo de excepción de Java se basa principalmente en cinco palabras clave: intentar, atrapar, finalmente, lanzar y arrojar.

Conversión de tipo forzada: solo cuando se cumplen las reglas de conversión forzada, la conversión forzada puede realizarse correctamente.

2. ¿Cuál es la relación entre JDK, JRE y JVM?

Respuesta: jdk es un kit de desarrollo que se utiliza al desarrollar programas JAVA, y también hay un entorno operativo JRE dentro de JRE. JRE es el entorno operativo necesario para la ejecución de programas Java, es decir, si solo ejecuta programas Java en lugar de desarrollar, puede ejecutar programas Java existentes simplemente instalando JRE. Tanto JDk como JRE contienen la máquina virtual Java JVM, y la máquina virtual Java contiene el intérprete y el cargador de clases de muchos programas de aplicación, etc.

3. ¿Cuáles son las similitudes y diferencias entre las sentencias if multi-branch y las sentencias switch multi-branch?

Respuesta: Lo mismo: todas son declaraciones de rama, y ​​juzgan y se ocupan de más de un caso.

Diferencia: el cambio es más adecuado para situaciones de ramas múltiples, es decir, hay muchas situaciones que necesitan ser juzgadas y procesadas. El tipo de condición de sentencia es única y solo hay una entrada. Después de que se ejecuta la rama (si hay sin ruptura), se ejecuta sin juicio; Y if-elseif-else multi-branch es principalmente adecuado para estructuras de rama con menos ramas, el tipo de juicio no es único, siempre que se ejecute una rama, la siguiente rama no ser ejecutado. El cambio es un juicio de igual valor (como> = <= no está permitido), y si es de igual valor e intervalo, se puede utilizar en un amplio rango.

4. La diferencia y la conexión entre & y &&

Respuesta: La conexión entre & y &&: Ambos & y && se pueden usar como operadores lógicos AND, pero depende de las condiciones específicas cuando se usan. Operando 1 y operando 2, operando 1 y operando 2, expresión 1 y expresión 2, expresión 1 y expresión 2.

Caso 1: Cuando el operando anterior es una variable booleana, tanto & como && pueden usarse como operadores lógicos AND.

Caso 2: Cuando el resultado de la expresión anterior es una variable booleana, tanto & como && pueden usarse como operadores lógicos AND.

Representa lógico y (y). Cuando el resultado de la expresión u operando en ambos lados del operador es verdadero, el resultado de toda la operación es verdadero. De lo contrario, siempre que uno de ellos sea falso, el resultado es falso.

La diferencia entre & y && (puntos diferentes): El operador lógico & se llama operador lógico AND, el operador lógico && se llama operador AND de cortocircuito, y también se puede llamar operador AND lógico. En cualquier caso, los operandos o expresiones a ambos lados de & participarán en el cálculo. Para &&: cuando el operando a la izquierda de && es falso o el resultado de la expresión de la izquierda es falso, el operando o expresión a la derecha de && no participará en el cálculo y el resultado final será falso.

En resumen, si el primer operando de la operación lógica AND es falso o el resultado de la primera expresión es falso, si se opera el segundo operando o expresión no tiene efecto sobre el resultado final, debe ser falso.

5. ¿Reglas básicas de conversión de tipos de datos?

Respuesta: La conversión de tipo básico se divide en conversión automática y conversión forzada.

Reglas de conversión automática: los tipos de datos con poca capacidad se pueden convertir automáticamente en tipos de datos con gran capacidad, o

Para decir que la conversión automática de bajo nivel a alto nivel. La capacidad aquí no se refiere al número de bytes, sino al rango de expresión de tipo.

Reglas de conversión forzada: de alto nivel a bajo nivel requiere conversión forzada. Cómo convertir: (1) La conversión en el lado derecho del operador de asignación "=" se convierte automáticamente al tipo de datos de nivel más alto en la expresión antes de realizar operaciones. (2) La conversión en ambos lados del operador de asignación "=", si el nivel izquierdo> el nivel derecho, se convertirá automáticamente; si el nivel izquierdo == el nivel derecho, no se requiere conversión; si el nivel izquierdo <el nivel correcto, se requiere una conversión forzada. (3) Las constantes enteras se pueden asignar directamente a variables de tipo como byte, short, char, etc., sin necesidad de conversión de tipo forzada, siempre que no exceda el alcance de la expresión, de lo contrario se debe realizar una conversión forzada.

6. ¿Cuáles son las similitudes y diferencias entre las declaraciones if multi-branch y las declaraciones switch multi-branch?

Respuesta: Lo mismo: todas son declaraciones de rama, y ​​juzgan y se ocupan de más de un caso.

Diferencia: el cambio es más adecuado para situaciones de ramas múltiples, es decir, hay muchas situaciones que necesitan ser juzgadas y procesadas. El tipo de condición de sentencia es única y solo hay una entrada. Después de que se ejecuta la rama (si hay sin ruptura), se ejecuta sin juicio; Y if-elseif-else multi-branch es principalmente adecuado para estructuras de rama con menos ramas, el tipo de juicio no es único, siempre que se ejecute una rama, la siguiente rama no ser ejecutado. El cambio es un juicio de igual valor (como> = <= no está permitido), y si es de igual valor e intervalo, se puede utilizar en un amplio rango.

7. ¿Cuál es la diferencia entre los bucles while y do-while?

Respuesta: while se juzga primero y luego se ejecuta, la primera vez se juzga falsa, el cuerpo del ciclo no se ejecuta a la vez; do while se ejecuta primero y luego se juzga, al menos una vez; si se juzga que el ciclo while es cierto por primera vez, no hay diferencia.

image.png

8. ¿El papel de romper y continuar?

Respuesta: romper: finaliza el bucle actual y sale del cuerpo del bucle actual. Break también puede salir de la declaración de cambio.

continue: Las siguientes sentencias en el cuerpo del bucle no se ejecutan, pero el bucle no ha terminado, continúe juzgando la condición del bucle (for bucle también i ++). continuar solo termina el bucle.

9. ¿Cuáles son las características del arreglo?

Respuesta: La matriz es (ordenada) (colección) de (datos del mismo tipo);

La matriz abrirá un espacio continuo en la memoria, cada espacio es equivalente a una variable antes, llamada el elemento de la matriz;

Cada elemento de la matriz tiene un valor predeterminado double 0.0 boolean false int 0;

Los elementos de la matriz están ordenados, no por orden de tamaño, sino por orden de índice;

Los tipos de datos básicos y los tipos de datos de referencia se pueden almacenar en una matriz, pero para una matriz, el tipo de la matriz es fijo y solo puede ser uno;

length: La longitud de la matriz. La longitud de la matriz es fija. Una vez definida, no se puede cambiar (expansión de la matriz).

10. Si un número es exactamente igual a la suma de sus factores, este número se llama "número final", por ejemplo, 6 = 1 + 2 + 3. Programa para encontrar todos los números entre 0-1000

Respuesta: clase pública WanShu {

private static boolean isWanShu(int shu){

    int sum = 0;

    for (int i = 1; i < shu; i++) {

        if(shu%i==0){

            sum+= i;

        }

    }

    if(sum==shu){

        return true;

    }else{          

        return false;

    }   

}

public static void main(String[] args) {

    for (int i = 1; i < 1000; i++) {

        if(isWanShu(i)){

            System.out.println(i);

        };

    }

}

}

11. La salida del siguiente programa es (A)

static boolean foo (char c) {

    System.out.print(c);

    return true;

}

public static void main (String [] args) {

    int i = 0;

    for (foo('A'); foo('B') && (i < 2); foo('C')) {

        i++;

        foo('D');

    }

}

A. ABDCBDCB B. ABDCDBCB C. ABDBCDCB D. ABDBCDCB

Análisis: Primero, debe comenzar con ABDC, excluir C y D, y luego ejecutar foo ('B') && (i <2). El resultado es B, y el resultado es A. Orden de ejecución - foo ('A') - foo ('B') && true - foo ('D') - foo ('C') - foo ('B') && true - foo ('D ') - foo (' C ') - foo (' B ') && false-end

12. Cuando n = 5, el valor de retorno de la siguiente función es: (A)

int foo (int n)

{

    if(n<2)return n;

    return foo(n-1)+foo(n-2);

}

A.5 B.7 C.8 D.1

Análisis: Resultado = foo (4) + foo (3)

foo (4) = foo (3) + foo (2)

foo (3) = foo (2) + foo (1)

foo (2) = foo (1) + foo (0)

foo (1) = 1

foo (0) = 0

Entonces foo (2) = 1, foo (3) = 2, foo (4) = 3

13. Escriba el código para la ordenación por inserción

Respuesta: paquete com.bjsxt;

clase pública TestInsertSort {

clasificación vacía estática pública (int arr []) {

int i, j;

para (i = 1; i <longitud de arr.; i ++) {

int temp = arr [i];

para (j = i; j> 0 && temp <arr [j - 1]; j–) {

arr [j] = arr [j - 1];

}

arr [j] = temp;

}

}

}

14. ¿Cuál es la diferencia entre finalizar, finalmente y finalizar?

Respuesta: Modificador final (palabra clave) Si una clase se declara como final, significa que ya no puede derivar nuevas subclases y no se puede heredar como una clase principal, por ejemplo: clase String, clase Math, etc. Declarar variables o métodos como finales asegura que no se cambiarán durante el uso. La variable declarada como final debe recibir un valor inicial en el momento de la declaración, solo se puede leer en referencias futuras y no se puede modificar. El método declarado como final también solo se puede usar, no se puede anular, pero se puede sobrecargar. Utilizando objetos modificados finales, la dirección de referencia del objeto no se puede cambiar, pero el valor del objeto se puede cambiar.

Finalmente, se proporciona un bloque finalmente durante el manejo de excepciones para realizar cualquier operación de limpieza. Si hay finalmente, la sentencia finalmente se ejecutará independientemente de si se produce una excepción. En circunstancias normales, todas las operaciones relacionadas, como cerrar la conexión física (flujo de E / S, conexión de base de datos, conexión de socket) se colocan en este bloque de código.

Finaliza el nombre del método. La tecnología Java permite el uso del método finalize () para realizar el trabajo de limpieza necesario antes de que el recolector de basura borre el objeto de la memoria. El método finalize () se llama antes de que el recolector de basura elimine el objeto. Está definido en la clase Object, por lo que todas las clases lo heredan. Las subclases anulan el método finalize () para organizar los recursos del sistema o realizar otras tareas de limpieza. En circunstancias normales, la JVM llama a este método y los programadores no deberían llamarlo.

15. ¿Cuál es la diferencia entre constantes de caracteres y constantes de cadena?

Respuesta: Formalmente: una constante de carácter es un carácter rodeado por comillas simples; una constante de cadena es un número de caracteres rodeados por comillas dobles. Significado: una constante de carácter es equivalente a un valor entero (valor ASCII), que puede participar en operaciones de expresión; una constante de cadena de caracteres representa un valor de dirección (la cadena se almacena en la ubicación de la memoria). Tamaño de memoria ocupada: las constantes de caracteres solo ocupan un byte; las constantes de cadena ocupan varios bytes (al menos una marca de final de carácter).

Las anteriores son las preguntas básicas de la entrevista de programación java compiladas para mis amigos hoy. Ciertamente, no se puede decir que estas 15 preguntas tengan el conocimiento más completo de programación java, pero definitivamente son el contenido de los exámenes básicos comunes, y habrá muchos de ellos en la entrevista de Java Por lo tanto, espero que todos puedan aprender el contenido anterior con cuidado y luego aprender más conocimientos de Java a través del tutorial básico de Java a tiempo.

Supongo que te gusta

Origin blog.csdn.net/weixin_49543720/article/details/110441494
Recomendado
Clasificación