Java perguntas da entrevista contou com dois

1, GC é o quê? Por que deveria haver GC?
A: GC é um meio de coleta de lixo, gerenciamento de memória é onde os programadores propensas a problemas, e esquecer ou programa de recuperação de falsa memória vai levar à instabilidade ou até mesmo falhas do sistema, funcionalidade GC fornecido pelo Java pode monitorar automaticamente o objeto excede o alcance de modo a atingir o objectivo de recupera automaticamente a memória, a linguagem Java não fornece uma operação de método de exibição da liberação de memória alocada. programadores Java não precisa se preocupar com o gerenciamento de memória, porque o coletor de lixo será automaticamente gerenciado. Para um pedido de coleta de lixo, chame o seguinte :. System.gc () ou Runtime.getRuntime () gc (), mas pode ser mascarado JVM de lixo reciclagem de exibição chamada.
A coleta de lixo pode efetivamente evitar vazamentos de memória, uso eficiente de memória pode ser usado. coletor de lixo é geralmente como um fio de baixa prioridade separada para executar, memória heap está morto ou não usado por um longo tempo para limpar e recuperar em circunstâncias imprevisíveis, o programador não pode chamar para coletor de lixo em tempo real tudo de um objeto ou objetos para coleta de lixo. Java no início do nascimento, coleta de lixo é um dos maiores destaques de Java, porque a programação do lado do servidor necessários para efetivamente prevenir vazamentos de memória, mas as coisas mudaram, e agora coleta de lixo do Java tornou-se algo a ser criticada. IOS sistema de terminal inteligente móvel tem geralmente se sentir melhor experiência do usuário do que o sistema Android, em que uma razão profunda é que a natureza imprevisível do sistema Android de coleta de lixo.

NOTA: Há muitos, incluindo mecanismo de coleta de lixo: coleta de lixo cópia geracional, marcando coleta de lixo, coleta de lixo incremental e outros meios. Java Standard processar tanto montão pilha lá. Guardar as variáveis ​​locais originais tipo de pilha, pilha contém o objeto a ser criado. plataforma Java para a recuperação de memória heap e reutilização do algoritmo básico é chamado de marca e varredura, mas foi melhorada Java, uma "coleta de lixo de gerações." Esta abordagem vai seguir o ciclo de vida de uma memória objeto heap Java é dividido em diferentes áreas, processo de coleta de lixo, o objeto pode mover-se para uma área diferente:

  • Éden (Éden): Este é o nascimento da primeira área de alvo, e para a maioria dos objetos, este é o seu único existia na área.
  • Survivors Park (sobrevivente): From the Garden of Eden sobreviveu para baixo o objeto será movido aqui.
  • Lifetime Yang Garden (Tenured): Este é o destino dos sobreviventes idade suficiente para objeto. A coleção geração jovem (Minor-GC) teve> processo não vai tocar este lugar. Quando a geração mais jovem pode não objetos a cobrar para o parque curtindo a vida, ele irá acionar uma coleção completa (Major-GC), há também pode envolver a compressão, a fim de liberar espaço suficiente para objetos grandes.

Associado com parâmetros de JVM coleta de lixo:

-Xms / -Xmx - O tamanho máximo do tamanho inicial pilha / pilha
-Xmn - a geração mais jovem tamanho da pilha
XX: -DisableExplicitGC - deixe que System.gc () não tem qualquer efeito
-XX: + PrintGCDetails - GC imprimir detalhes
-XX: + PrintGCDateStamps - GC selo a operação de impressão
-XX: newSize / xx: MaxNewSize - definir novo tamanho de geração / tamanho máximo cenozoic
-XX: NewRatio - rácio geração mais velha pode ser conjunto e a nova geração
-XX: PrintTenuringDistribution - conjunto após cada nova distribuição de saída geração GC na era alvo dos sobreviventes Paraíso
XX: InitialTenuringThreshold / XX: MaxTenuringThreshold: definir o valor inicial do ano velho e o limite máximo
XX: TargetSurvivorRatio: set utilização alvo área sobreviver

2, String s = new String ( "xyz"); criou várias objeto String?
A: Os dois objetos, uma área estática de "xyz", com um novo é criado no objeto na pilha.

3, classe abstrata e diferenças de classe normais:
A: A classe contém métodos abstratos é chamado de uma classe abstrata, mas isso não significa que uma classe abstrata pode ter apenas métodos abstratos e categoria geral, como também pode ter variáveis de membro e comum método membro. Note que existem classes abstratas e classes comuns três diferenças:
1) método abstrato deve ser público ou protegido (porque se é privado, não é herdada por subclasses, subclasses não pode implementar este método), o padrão é público por padrão. .
2) Uma classe abstracta não pode ser usado para criar objectos;
3) Se uma classe herda a partir de uma classe abstracta, as subclasses da classe pai resumo deve implementar. Se a subclasse não percebe o método abstrato classe pai, também deve ser definida como uma subclasse de uma classe abstrata.
Em outros aspectos, a classe abstrata e classe normal e não há diferença

4, a interface é hereditária (estende-se) na interface? Se classe abstrata pode implementar (implementos) interfaces? Abstract classe é classe específica hereditária (classe concreta)?
Resposta: A interface pode ser herdada interfaces e suporta herança múltipla. Uma classe abstrata pode implementar (os implementos) interfaces, classes herdam a classe abstrata pode herdar determinada classe abstrata.

5, um ".java" classe se o arquivo de origem pode conter múltiplas (não uma classe interna)? Quais são os limites?
A: Sim, mas um arquivo de origem só pode ter uma classe pública (public class) e o nome do arquivo eo nome da classe deve ser totalmente consistente com a classe pública.

6, classe interna anônima (classes internas anônimas) pode herdar outras classes? Posso implementar uma interface?
A: Você pode herdar de outras classes ou implementar outras interfaces, comumente usados desta forma programação Swing e o desenvolvimento do Android para implementar ouvintes de eventos e callbacks.

7, classe interna pode referir-se aos seus membros contendo classe (fora da classe) fazer? Existe alguma restrição?
A: Um objeto classe interna pode acessar os membros fundadores de seu objeto classe externa, incluindo membros privados.

8, palavra-chave final do Java no que uso?
representação da classe não pode ser herdada; (2) métodos de modificação:: A: (1) as classes modificadores Método representação não podem ser reescritos; (3) modificação de variáveis: variáveis só podem representar uma atribuição não podem ser modificados após a (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 da Execução: 1a2b2b. Quando você cria um construtor do objeto está chamando seqüência: membro estático inicializar e, em seguida, chamar o construtor da classe pai, membro do então initialize não-estático, e, finalmente, chamar-se construtor.

Dica: Se você não pode dar a resposta correta a esta pergunta, o que indica que a questão 21 Java mecanismo de carregamento de classe ainda não está totalmente compreendido antes, e rapidamente olhar e ver.

9, a conversão entre tipos de dados: como converter um tipo de dados primitivo corda? Como converter tipos de dados básicos de cordas?
A: O método chamando parseXXX (String) correspondentes aos tipos de embalagem ou valueOf (corda) para retornar o tipo de base correspondente de dados básicos, um método em que os tipos de dados de base e a cadeia de vazio ( "") ligado a (+), ou seja a sua sequência de caracteres correspondente é obtido, outro método é a chamar a sequência classe método valueOf () retorna uma cadeia correspondente

10, e como reverter a seqüência de substituição?
A: Muitos métodos podem escrever suas próprias implementações também pode usar métodos da string ou StringBuffer / StringBuilder em. Há um plano comum é alcançado perguntas revertendo seqüência recursiva, código da seguinte forma:

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

11, como GB2312 codificado string em ISO-8859-1 string codificada?
A: O código é como se segue:

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

12, a data ea hora:
como obter a data, horas, minutos, segundos?
Como obter o número de milissegundos de pelo 00:00:00 janeiro em 1, 1970, para o presente?
Como obter o último dia de um mês?
Como formatar data?

A: Pergunta 1: Criar instância java.util.Calendar, chama seu método get () passando parâmetros diferentes para obter o valor dos corresponde parâmetros. 8 pode ser usado em Java java.time.LocalDateTimel para obter o código mostrado abaixo.

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

Pergunta 2: Os seguintes métodos podem obter o número de milissegundos.

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

Problema 3: O código como mostrado abaixo.

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

Pergunta 4: subclasse (por exemplo classe SimpleDateFormat) no método formato utilização java.text.DataFormat (Data) pode ser data formatada. Java 8 pode ser usado para formatar o código de data e hora java.time.format.DateTimeFormatter mostrado abaixo.

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

Suplementar: Data de Java e tempo API sempre foi algo a ser criticado, a fim de resolver este problema, Java 8 introduz nova data e hora API, incluindo LocalDate, LocalTime, LocalDateTime, Relógio, instantâneas outras categorias, estas classes o projeto usa o mesmo modo, por isso é design thread-safe.

13, imprima a hora ontem.

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

Em Java 8, o seguinte código pode ser utilizado para atingir a mesma funcionalidade.

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);
    }
}
Publicado 444 artigos originais · ganhou elogios 15 · vê 10000 +

Acho que você gosta

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