10 preguntas complicadas de la entrevista de Java, vea cuántas puede responder correctamente?

Anoche vi algunas preguntas de entrevista compartidas por extranjeros, lo cual fue bastante interesante. Echemos un vistazo a los problemas en dos entregas ¿Qué tipo de problemas son difíciles para los extranjeros? Si es usted, ¿puede obtener todas las respuestas correctas?

Si está interesado en el texto original, también puede verlo a través de este enlace: https://levelup.gitconnected.com/tricky-java-interview-questions-cfc546fd03ab

P1: ¿Cuál es el resultado del siguiente código Java?

public class Test {
  
  public static void main(String[] args) {
    method(null);
  }

  public static void method(Object o) {
    System.out.println("Object method");
  }
  
  public static void method(String s) {
    System.out.println("String method");
  }
}

Respuesta :

Se imprimirá el "método de cadena". En primer lugar, null no es un objeto en Java. En Java, podemos asignar null a cualquier tipo de referencia. Y una cadena en Java es un objeto de la clase Java.lang.String. Aquí, el compilador de Java elegirá el tipo de parámetro más específico para llamar al método sobrecargado. El tipo String es más específico que Object, por lo method(String s)que se llaman a los métodos.

P2: ¿Cuál es el resultado del siguiente código Java?

public class Test{
  public static void main(String[] args){
    Integer num1 = 100;
    Integer num2 = 100;
    if(num1 == num2){
      System.out.println("num1 == num2");
    }
    else{
      System.out.println("num1 != num2");
    }
  }
}

Respuesta :

Imprimirá "num1 == num2". Siempre que utilice "==" para comparar dos referencias de objetos diferentes, el valor siempre será "falso". Pero aquí, debido a la caché de Integer, num1 y num2 se recubren automáticamente. Por tanto, num1 == num2 devuelve "verdadero". Al mismo tiempo, el almacenamiento en caché de enteros solo se producirá para valores entre -128 y 127.

P3: ¿Cómo evita la recolección de basura que las aplicaciones Java se queden sin memoria?

Respuesta :

El recolector de basura de Java no puede evitar que las aplicaciones Java se queden sin memoria. Simplemente borra la memoria no utilizada cuando el objeto está fuera de alcance y ya no es necesario. Por lo tanto, no se garantiza que las aplicaciones Java se queden sin memoria.

P4: ¿Java "pasa por referencia" o "pasa por valor"?

Respuesta :

Java siempre es "pasar por valor". Sin embargo, cuando pasamos el valor de un objeto, le pasamos una referencia porque la variable almacena la referencia del objeto, no el objeto en sí. Pero esto no es "pasar por referencia", lo que puede confundir a los principiantes.

P5: ¿Cuántos objetos String son creados por el siguiente código?

public class Test{
  public static void main(String[] args){
    String s = new String("Hello World");
  }
}

Respuesta :

Creó 2 objetos String. Uno en la memoria del montón y otro en el grupo de constantes de cadena en el área de métodos.

P6: ¿Cuál es el resultado del siguiente código?

public class Test{
  public static void main(String[] arr){
    System.out.println(0.1*3 == 0.3);
    System.out.println(0.1*2 == 0.2);
  }
}

Respuesta :

La primera oración imprime como resultado falso y la segunda oración imprime como verdadero. Debido al error de redondeo de los números de coma flotante, solo las potencias de 2 pueden representarse con precisión mediante notación binaria simple. Los números que no corresponden a la potencia de 2 deben redondearse para ajustarse a un número limitado de bits, por lo que 0,1 * 3 no es igual a 0,3.

P7: ¿Es posible reescribir o sobrecargar métodos estáticos en Java?

Respuesta :

Es posible sobrecargar los métodos Java estáticos, pero es imposible anularlos. Puede escribir otro método estático con el mismo nombre en la subclase, pero no anulará el método de superclase. Se llama método de ocultación en Java.

P8: ¿Cuál es la forma más confiable de probar si dos valores dobles son iguales?

Respuesta :

Double.compare(d1, d2) == 0

P9: Si un bloque try o catch ejecuta una declaración de retorno, ¿se ejecutará el bloque finalmente?

Respuesta :

Ejecutará. La única forma de evitar la ejecución del bloque finalmente es usar System.exit().

P10: ¿Cuál es el resultado del siguiente código?

public class Test{ 
  public static void main(String[] args){ 
   System.out.println("main method");
  } 
  public static void main(String args){ 
   System.out.println("Overloaded main method");
  } 
}

Respuesta :

Imprimirá "método principal". No habrá errores ni excepciones, porque el método principal puede estar sobrecargado en Java. Debe llamarse desde dentro del método principal para que se ejecute como otros métodos.

Bien, después de compartir las 10 preguntas, ¿cuántas respuestas obtuviste bien?

Negocio de subasta de proxy de marca de Shanghai de desarrollo propio de DD, haga clic directamente

Recomendado en el pasado

Varios medicamentos de arrepentimiento después de que Git envíe el código

¿Por qué la mayoría de los contenedores de IOC usan ApplicationContext en lugar de BeanFactory?

JIRA, Confluence y otros productos dejarán de vender versiones localizadas en febrero del próximo año, lo que afectará a casi el 90% de los clientes en China.

Use Intellij IDEA para crear archivos temporales, del tipo que Git no puede rastrear

El primer productor nacional de ransomware Bitcoin fue arrestado, pero el proceso fue un poco divertido ...

TIOBE anunció la lista de noviembre: ¡Python es imparable, superando a Java!

Escanea y sigueme

Estudien juntos, progresen juntos

Donación de libros todas las semanas, beneficios continuos

Contenido en profundidad

Recomendar unirse

Supongo que te gusta

Origin blog.csdn.net/j3T9Z7H/article/details/109684871
Recomendado
Clasificación