Preguntas de la entrevista de Complete Works of Java (4)
Baiyu es jaja
31. String s = new String ("xyz"); ¿Cuántos objetos de cadena se han creado?
Respuesta: Dos objetos, uno es "xyz" en el área estática y el otro es un objeto creado en el montón con nuevo.
32. ¿Puede extenderse la interfaz? ¿Pueden las clases abstractas implementar interfaces? ¿Pueden las clases abstractas heredar clases concretas?
Respuesta: Las interfaces pueden heredar interfaces y admitir herencia múltiple. Las clases abstractas pueden implementar interfaces y las clases abstractas pueden heredar clases concretas o clases abstractas.
33. ¿Puede un archivo fuente ".java" contener varias clases (no clases internas)? Cuales son las restricciones?
Respuesta: Sí, pero puede haber como máximo una clase pública en un archivo fuente y el nombre del archivo debe ser exactamente el mismo que el nombre de la clase pública.
34. ¿Puede Anonymous Inner Class heredar otras clases? ¿Se puede implementar la interfaz?
Respuesta: Puede heredar otras clases o implementar otras interfaces. Este método se usa comúnmente en la programación de Swing y el desarrollo de Android para implementar el monitoreo de eventos y las devoluciones de llamada.
35. ¿Puede una clase interna referirse a los miembros de su clase contenedora (clase externa)? ¿Existe alguna restricción?
Respuesta: Un objeto de clase interna puede acceder a los miembros del objeto de clase externa que lo creó, incluidos los miembros privados.
36. ¿Cuáles son los usos de la palabra clave final en Java?
Respuesta: (1) Clase modificada: indica que la clase no se puede heredar; (2) Método modificado: indica que el método no se puede reescribir; (3) Variable modificada: indica que la variable solo se puede asignar una vez y el valor no se puede modificar (constante).
37. Señale los resultados del siguiente programa.
class A { static {
System.out.print("1");
}
public A() {
System.out.print("2");
}
}
class B extends A{
static {
System.out.print("a");
}
public B() {
System.out.print("b");
}
}
public class Hello {
public static void main(String[] args) {
A ab = new B();
ab = new B();
}
}
Respuesta: Resultado de la implementación: 1a2b2b. Al crear un objeto, la secuencia de llamada del constructor es: primero inicializar los miembros estáticos, luego llamar al constructor de la clase padre, luego inicializar los miembros no estáticos y finalmente llamar al propio constructor.
Sugerencia: si no puede dar la respuesta correcta a esta pregunta, significa que el mecanismo de carga de clases de Java de la pregunta 21 no se ha entendido completamente, así que apúrate y mira de nuevo.
38. Conversión entre tipos de datos:
-¿Cómo convertir una cadena a un tipo de datos básico?
-¿Cómo convertir tipos de datos básicos en cadenas?
responder:
- Llame al método parseXXX (String) o valueOf (String) en la clase de empaquetado correspondiente al tipo de datos básico para devolver el tipo básico correspondiente;
- Un método es conectar (+) el tipo de datos básico con una cadena vacía ("") para obtener la cadena correspondiente; el otro método es llamar al método valueOf () en la clase String para devolver la cadena correspondiente
39. ¿Cómo revertir y reemplazar cuerdas?
Respuesta: Hay muchos métodos, puede escribir su propia implementación o usar los métodos en String o StringBuffer / StringBuilder. Una pregunta de entrevista muy común es utilizar la recursividad para lograr la inversión de cadenas. El código es el siguiente:
public static String reverse(String originStr) {
if(originStr == null || originStr.length() <= 1)
return originStr;
return reverse(originStr.substring(1)) + originStr.charAt(0);
}
40. ¿Cómo convertir una cadena codificada GB2312 a una cadena codificada ISO-8859-1?
Respuesta: El código es el siguiente:
String s1 = "Hola";
String s2 = new String (s1.getBytes ("GB2312"), "ISO-8859-1");