Os problemas de multithreading e simultaneidade são uma parte essencial de qualquer entrevista de Java. Se você deseja obter uma posição de informações de front-end em qualquer banco de investimento em ações, prepare muitas perguntas sobre o multithreading. Multithreading e concorrência são um tópico muito popular no banco de investimento, especialmente relacionado ao desenvolvimento de transações eletrônicas. Eles farão entre os entrevistadores muitas perguntas confusas de threading java. O entrevistador só quer ter certeza de que o entrevistador possui conhecimento suficiente sobre o threading e a simultaneidade Java, porque muitos dos candidatos são apenas superficiais. Os sistemas de negociação eletrônica de alta capacidade e baixa latência para transações diretas orientadas para o mercado são inerentemente simultâneas. A seguir, são apresentadas as perguntas de threading java que gosto de fazer em diferentes momentos e lugares. Não forneci uma resposta, mas vou lhe dar pistas sempre que possível, e às vezes essas pistas são suficientes para responder a perguntas. Agora, há mais e mais problemas referindo -se a pacotes simultâneos Java5 sobre ferramentas simultâneas e coleções simultâneas. Threadlocal, fila de bloqueio, contagem de semáforos e simultaneses são mais populares entre essas perguntas.
15 perguntas e respostas da entrevista com vários threads java
1) Agora existem três threads T1, T2 e T3.
Essa pergunta do tópico geralmente é feita durante a fase de entrevista da primeira rodada ou telefone, com o objetivo de verificar se você está familiarizado com o método "ingressar". Esse problema com várias threading é relativamente simples e pode ser implementado usando o método de junção.
2) Quais são as vantagens da interface de bloqueio sobre o bloco sincronizado em Java? Você precisa implementar um cache eficiente que permita que vários usuários leiam, mas apenas um usuário escreva para manter sua integridade.
A maior vantagem das interfaces de bloqueio na programação multithread e simultânea é que elas fornecem bloqueios para leitura e gravação separadamente, o que pode satisfazer você para escrever estruturas de dados de alto desempenho, como simultaneamente e bloqueio condicional. As perguntas da entrevista do Java Thread são cada vez mais feitas com base nas respostas do entrevistador. Eu recomendo a leitura de bloqueios cuidadosamente antes de ir a uma entrevista com vários threads, porque atualmente é usada para criar o espaço de conexão do cliente e transação do sistema de transações eletrônicas.
3) Quais são as diferenças entre os métodos de espera e sono em Java?
Java Thread entrevista perguntas que geralmente são feitas durante entrevistas por telefone. A maior diferença é que a espera libera a fechadura enquanto espera, enquanto o sono continua segurando a fechadura. A espera é geralmente usada para interações entre thread e o sono geralmente é usado para interromper a execução.
4) Use Java para implementar filas de bloqueio.
Esta é uma questão de entrevista com vários threads, relativamente difícil, que pode atingir muitos objetivos. Primeiro, pode detectar se o candidato pode realmente escrever programas em threads java; Se ele usar os métodos Wait () e Notify () para implementar filas de bloqueio, você poderá solicitar que ele o escreva novamente com as últimas classes simultâneas no Java 5.
5) Use Java para escrever código para resolver o problema do consumidor do produtor.
É muito semelhante à pergunta acima, mas essa pergunta é mais clássica. Como resolver o problema do consumidor do produtor em Java? Às vezes eles até perguntam como realizar o problema dos filósofos comendo.
6) Como você resolverá o problema de programar um programa que causará impasse em Java?
Esta é a minha pergunta favorita da entrevista em threads java, porque, embora os problemas de impasse sejam muito comuns ao escrever programas simultâneos com vários threads, muitos candidatos não podem escrever código livre de impasse (nenhum código de impasse?) E lutam. Basta dizer a eles que você tem N Recursos e N Threads e precisa de todos os recursos para concluir uma operação. Por simplicidade, n pode ser substituído por 2, quanto maiores os dados tornarão o problema mais complicado. Obtenha mais informações sobre impasse, evitando impasses em Java.
7) O que é operação atômica e o que é operação atômica em Java?
Pergunta muito simples do tópico Java, a próxima pergunta é que você precisa sincronizar uma operação atômica.
8) Qual é o papel principal do volátil em Java? Como usá -lo? Como é diferente do método sincronizado em Java?
Desde que os modelos de memória Java 5 e Java mudaram, os problemas de encadeamento com base na palavra -chave volátil se tornaram cada vez mais populares. Você deve estar pronto para responder sobre como as variáveis voláteis garantem a visibilidade em um ambiente simultâneo.
9) O que são condições de competição? Como você descobre e resolve a competição?
Esta é uma pergunta que aparece no estágio avançado de entrevistas com vários threads. A maioria dos entrevistadores perguntará sobre as condições da competição que você encontrou recentemente e como resolveu. Há momentos em que eles escrevem código simples e permitem detectar as condições de corrida para o código. Você pode se referir ao meu artigo anterior sobre as condições de corrida Java. Na minha opinião, essa é uma das melhores perguntas da entrevista em threads em Java, que pode detectar com precisão a experiência dos candidatos na solução de condições de corrida ou em escrever um código livre de corrida de dados ou qualquer outra condição de corrida. O melhor livro sobre isso é "Práticas de simultaneidade em Java".
10) Como você usará o despejo de threads? Como você analisará o despejo de threads?
No UNIX, você pode usar o Kill -3 e, em seguida, o Thread Dump imprimirá o log. Pergunta de entrevista de tópicos muito simples e profissional, mas será complicado se ele perguntar como analisá -la.
11) Por que executamos o método run () quando chamamos o método start () e por que não podemos chamar diretamente o método run ()?
Esta é outra pergunta de entrevista multithread muito clássica de Java. Esta também é minha confusão quando comecei a escrever programas de threading. Agora, essa pergunta geralmente é feita durante a entrevista por telefone ou a primeira rodada da entrevista java e média de Java. A resposta a esta pergunta deve ser assim: quando você ligar para o método START (), criará um novo thread e executará o código no método run (). Mas se você chamar o método run () diretamente, ele não criará um novo thread ou executará o código que chama o thread. Leia o artigo "A diferença entre o método Start e Run" que escrevi antes para obter mais informações.
12) Como você acorda um tópico de bloqueio em java?
Esta é uma pergunta complicada sobre rosquear e bloquear, e tem muitas soluções. Se o thread encontrar bloqueio de IO, não acho que exista uma maneira de abortar o thread. Se o thread bloquear os métodos de chamada Wait (), Sleep () ou junção (), você poderá interromper o thread e acordá -lo jogando uma interruptedException. O "Como lidar com os métodos de bloqueio em Java" que escrevi antes tem muitas informações sobre como lidar com o bloqueio de threads.
13) Qual é a diferença entre Cyclibarriar e Countdownlatch em Java?
Esse problema de rosqueamento é usado principalmente para detectar se você está familiarizado com os pacotes simultâneos no JDK5. A diferença entre esses dois é que o CyclicBarrier pode reutilizar a barreira que foi aprovada, enquanto o CountdownLatch não pode ser reutilizado.
14) O que é um objeto imutável e como isso ajuda a escrever aplicativos simultâneos?
Outra pergunta clássica da entrevista para multi-thread não está diretamente relacionada a threads, mas ajuda muito indiretamente. Esta pergunta da entrevista em Java pode se tornar muito complicada se ele pedir que você escreva um objeto imutável ou pergunta por que a string é imutável.
15) Quais são os problemas comuns que você encontra em um ambiente multithread? Como você resolveu isso?
Geralmente encontrado em programas multithread e simultâneos são interface de memória, condições de corrida, impasse, fechaduras e fome. O problema não tem fim e, se você errar, será difícil descobrir e depurar. Isso é principalmente baseado em entrevistas, e não em perguntas práticas de Threading Java.
Várias outras perguntas adicionadas:
1) Qual é a diferença entre o fio verde e o fio local em Java?
2) a diferença entre threads e processos?
3) O que é a troca de contexto no multithreading?
4) A diferença entre o impasse e a trava ao vivo, a diferença entre impasse e fome?
5) Qual é o algoritmo de agendamento de threads usado em Java?
6) O que é agendamento de threads em Java?
7) Como você lida com exceções desagradáveis no tópico?
8) O que é um grupo de threads e por que não é recomendado em Java?
9) Por que é melhor usar a estrutura do executor do que criar e gerenciar threads com aplicativos?
10) Qual é a diferença entre executor e executores em Java?
11) Como descobrir qual encadeamento usa o tempo mais longo da CPU no Windows e no Linux?
O acima é todo o conteúdo deste artigo.