preguntas de la entrevista de Java contó con dos

1, GC es el ¿Qué? ¿Por qué no debería ser GC?
A: GC es un medio de recogida de basura, manejo de memoria es donde los programadores propensas a los problemas, y olvidar o programa de recuperación de falsa memoria conducir a la inestabilidad del sistema o incluso se bloquea, la funcionalidad proporcionada por GC Java puede controlar automáticamente el objeto excede el alcance con el fin de lograr el propósito de recupera automáticamente la memoria, el lenguaje Java no proporciona una operación de método de visualización de la liberación de memoria asignada. Los programadores de Java no tienen que preocuparse por la gestión de memoria, ya que el recolector de basura de forma automática será administrado. Para una solicitud de recogida de basura, invoque el siguiente :. System.gc () o Runtime.getRuntime () gc (), pero puede ser enmascarado JVM reciclaje de basura pantalla de llamada.
La recolección de basura puede prevenir con eficacia las pérdidas de memoria, el uso eficiente de la memoria se puede utilizar. recolector de basura es por lo general como un hilo de baja prioridad independiente para la instalación, la pila de memoria está muerto o no se utiliza durante mucho tiempo para limpiar y recuperar en circunstancias imprevisibles, el programador no puede llamar para recolector de basura en tiempo real la totalidad de un objeto u objetos para la recolección de basura. Java en el nacimiento prematuro, la recolección de basura es uno de los principales aspectos más destacados de Java, ya que la programación del lado del servidor necesario para efectivamente prevenir pérdidas de memoria, pero las cosas han cambiado, y ahora la recogida de basura de Java se ha convertido en algo que debe ser criticado. sistema móvil de terminal inteligente IOS general ha sentirse mejor experiencia de usuario que el sistema Android, en el que una razón profunda es que la naturaleza imprevisible del sistema Android de recolección de basura.

NOTA: Hay muchos, incluido el mecanismo de recolección de basura: la recolección de basura copia generacional, marcando la recolección de basura, la recolección de basura y otros medios. Java estándar procesar tanto el montón pila allí. Guardar las variables locales de tipo original de pila, pila contiene el objeto que se creará. plataforma Java para la recuperación de la memoria de pila y la reutilización del algoritmo básico se llama marca y barrido, pero ha sido mejorada Java, un "recolección de basura generacional." Este enfoque seguirá el ciclo de vida de un objeto de memoria de almacenamiento dinámico Java se divide en diferentes áreas, el proceso de recolección de basura, el objeto podría moverse a un área diferente:

  • Eden (Eden): Este es el nacimiento de la primera zona de destino, y para la mayoría de los objetos, esta es su única existían en la zona.
  • Los sobrevivientes Park (Survivor): Desde el Jardín del Edén sobrevivió hasta el objeto se trasladó aquí.
  • Curso de la vida de Yang Jardín (Titular): Este es el destino de la edad suficiente para sobrevivir objeto. La colección de la generación de jóvenes (Menor-GC) tenían> proceso no va a tocar este lugar. Cuando la generación joven no puede cobrar objetos en el parque disfrutando de la vida, se disparará una colección completa (Mayor-GC), también puede implicar la compresión, con el fin de liberar suficiente espacio para objetos grandes.

Asociadas a los parámetros de JVM de recolección de basura:

-Xms / -Xmx - Tamaño máximo del tamaño inicial del almacenamiento dinámico / montón
-Xmn - la generación joven tamaño de la pila
-XX: -DisableExplicitGC - dejar que System.gc () no tiene ningún efecto
-XX: + PrintGCDetails GC - guardar detalles
-XX: + PrintGCDateStamps - GC sello operación de impresión
-XX: NewSize / XX: MaxNewSize - conjunto nuevo tamaño de generación / tamaño máximo CENOZOICO
-XX: NewRatio - relación de generación de más edad se puede ajustar y la nueva generación
-XX: PrintTenuringDistribution - conjunto después de cada distribución de salida GC generación nueva en la edad objetivo de los supervivientes paraíso
-XX: InitialTenuringThreshold / -XX: MaxTenuringThreshold: establecer el valor inicial del año viejo y el máximo umbral
-XX: TargetSurvivorRatio: conjunto utilización objetivo área de sobrevivir

2, nuevo String String s = ( "XYZ"); creado varias objeto de cadena?
A: Los dos objetos, una zona estática de "xyz", por uno nuevo se crea en el objeto en el montón.

3, clase abstracta y las diferencias de clase normales:
A: La clase contiene métodos abstractos se llama una clase abstracta, pero eso no significa que una clase abstracta sólo puede tener métodos abstractos y categoría general, ya que también puede tener variables miembro y comunes método miembro. Tenga en cuenta que hay clases abstractas y las clases ordinarias tres diferencias:
1) método abstracto debe ser públicas o protegidos (porque si es privada, no es heredado por las subclases, las subclases no pueden poner en práctica este método), el valor predeterminado es pública por defecto. .
2) Una clase abstracta no puede ser utilizado para crear objetos;
3) si una clase hereda de una clase abstracta, las subclases de la clase padre abstracta debe implementar. Si la subclase no se da cuenta el método de la clase padre abstracta, sino que también debe ser definida como una subclase de una clase abstracta.
En otros aspectos, la clase abstracta y la clase normal y no hay diferencia

4, la interfaz es heredable (se extiende) la interfaz? Ya sea clase abstracta puede aplicar (implementos) interfaces? clase abstracta es heredable clase específica (clase concreta)?
Respuesta: La interfaz puede ser heredada interfaces y admite la herencia múltiple. Una clase abstracta puede aplicar (los implementos) las interfaces, clases heredan la clase abstracta puede heredar en particular clase abstracta.

5, un ".java" clase si el archivo de origen puede contener múltiples (no una clase interna)? ¿Cuáles son los límites?
R: Sí, pero un archivo de origen sólo puede tener una clase pública (public class) y el nombre del archivo y el nombre de la clase debe ser plenamente compatible con la clase pública.

6, Anónimo clase interna (clases internas anónimas) puede heredar de otras clases? ¿Puedo implementar una interfaz?
R: Usted puede heredar de otras clases o implementar otras interfaces, que se utilizan comúnmente en esta programación oscilación camino y el desarrollo de Android para implementar los detectores de eventos y devoluciones de llamada.

7, clase interna puede referirse a sus miembros que contienen de clase (fuera de la clase) hacer? ¿Hay alguna restricción?
A: Un objeto de la clase interna puede tener acceso a los miembros fundadores de su objeto clase externa, incluyendo miembros privados.

8, palabra clave final de Java en lo uso?
representación de la clase no se puede heredar, (2) métodos de modificación:: A: (1) las clases de modificadores de la representación El método no puede ser reescrita; (3) la modificación de variables: las variables sólo pueden representar una asignación no se puede modificar después de la (constante).

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();
    }

}

A: resultado de la ejecución: 1a2b2b. Cuando se crea un constructor de objetos está llamando secuencia: miembro estático de inicialización, y luego llamar al constructor de la clase padre, miembro entonces initialize no estático, y finalmente llama a sí mismo constructor.

Consejo: Si no se puede dar la respuesta correcta a esta pregunta, lo que indica que la pregunta 21 de Java mecanismo de carga de clases no se entiende todavía completamente antes, y rápidamente mirar y ver.

9, la conversión entre tipos de datos: cómo convertir un tipo de datos primitivo de cadena? Cómo convertir tipos de datos básicos de las cadenas?
A: el método de llamada parseXXX (String) correspondientes a los tipos de datos básicos de los envases o valueOf (String) para devolver el tipo de base correspondiente, un método en el que los tipos de datos básicos y la cadena vacía ( "") conectado a (+), es decir se obtiene su cadena de caracteres correspondiente, otro método es llamar a la cadena de clase de método valueOf () Devuelve una cadena correspondiente

10, y la forma de revertir la cadena de reemplazo?
R: Muchos métodos pueden escribir sus propias implementaciones también pueden utilizar los métodos de la cadena o StringBuffer / StringBuilder en. Hay un plano común se logra preguntas de marcha atrás cadena recursiva, el código de la siguiente manera:

    public static String reverse(String originStr) {
        if(originStr == null || originStr.length() <= 1) 
            return originStr;
        return reverse(originStr.substring(1)) + originStr.charAt(0);
    }

11, la forma de GB2312 codificado cadena en la norma ISO-8859-1 cadena codificada?
A: El código es como sigue:

String s1 = "你好";
String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1");

12, la fecha y la hora:
cómo obtener la fecha, horas, minutos, segundos?
Cómo obtener el número de milisegundos desde 0:00:00 a 1 de enero de 1970 hasta la actualidad?
¿Cómo obtener el último día de un mes?
Cómo dar formato a la fecha?

A: Pregunta 1: Crear ejemplo java.util.Calendar, llama a su método get () que pasa a diferentes parámetros para obtener el valor de los parámetros corresponde. 8 puede usarse en Java java.time.LocalDateTimel para obtener el código que se muestra a continuación.

public class DateTimeTest {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        System.out.println(cal.get(Calendar.YEAR));
        System.out.println(cal.get(Calendar.MONTH));    // 0 - 11
        System.out.println(cal.get(Calendar.DATE));
        System.out.println(cal.get(Calendar.HOUR_OF_DAY));
        System.out.println(cal.get(Calendar.MINUTE));
        System.out.println(cal.get(Calendar.SECOND));

        // Java 8
        LocalDateTime dt = LocalDateTime.now();
        System.out.println(dt.getYear());
        System.out.println(dt.getMonthValue());     // 1 - 12
        System.out.println(dt.getDayOfMonth());
        System.out.println(dt.getHour());
        System.out.println(dt.getMinute());
        System.out.println(dt.getSecond());
    }
}

Pregunta 2: Los siguientes métodos pueden obtener el número de milisegundos.

Calendar.getInstance().getTimeInMillis();
System.currentTimeMillis();
Clock.systemDefaultZone().millis(); // Java 8

Problema 3: El código tal como se muestra a continuación.

Calendar time = Calendar.getInstance();
time.getActualMaximum(Calendar.DAY_OF_MONTH);

Pregunta 4: subclase (por ejemplo, la clase SimpleDateFormat) Método de formato de uso java.text.DataFormat (Fecha) en la fecha puede ser formateado. Java 8 se puede utilizar para dar formato al código de fecha y hora java.time.format.DateTimeFormatter se muestra a continuación.

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;

class DateFormatTest {

    public static void main(String[] args) {
        SimpleDateFormat oldFormatter = new SimpleDateFormat("yyyy/MM/dd");
        Date date1 = new Date();
        System.out.println(oldFormatter.format(date1));

        // Java 8
        DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
        LocalDate date2 = LocalDate.now();
        System.out.println(date2.format(newFormatter));
    }
}

Complementario: Fecha de Java y la API en tiempo siempre ha sido algo que debe ser criticado, con el fin de resolver este problema, Java 8 introduce nueva fecha y la API de tiempo, incluyendo LocalDate, LocalTime, LocalDateTime, Reloj, Instant otras categorías, estas clases el diseño utiliza el mismo modo, por lo que es un diseño de rosca de fallos.

13, imprimir la hora actual de ayer.

import java.util.Calendar;

class YesterdayCurrent {
    public static void main(String[] args){
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, -1);
        System.out.println(cal.getTime());
    }
}

En Java 8, el siguiente código se puede utilizar para conseguir la misma funcionalidad.

import java.time.LocalDateTime;

class YesterdayCurrent {

    public static void main(String[] args) {
        LocalDateTime today = LocalDateTime.now();
        LocalDateTime yesterday = today.minusDays(1);

        System.out.println(yesterday);
    }
}
Publicados 444 artículos originales · elogios ganado 15 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/zt2650693774/article/details/105004812
Recomendado
Clasificación