JavaRush /Blogue Java /Random-PT /Pausa para café #151. Implementação de uma fila em Java. ...

Pausa para café #151. Implementação de uma fila em Java. 10 perguntas obrigatórias para qualquer entrevista de emprego para um cargo de desenvolvedor de back-end Java

Publicado no grupo Random-PT

10 perguntas obrigatórias para qualquer entrevista de emprego para um cargo de desenvolvedor de back-end Java

Fonte: Medium O autor do artigo compartilha sua experiência pessoal ao passar em diversas entrevistas para o cargo de Java Backend Developer. Pausa para café #151.  Implementação de uma fila em Java.  10 perguntas obrigatórias para qualquer entrevista para um cargo de desenvolvedor Java Backend - 1As entrevistas costumam ser difíceis. Portanto, seria uma boa ideia conhecer as perguntas antes de fazer a entrevista. Como passei por diversas entrevistas nos últimos meses, agora posso compartilhar com vocês algumas das perguntas que encontrei com mais frequência. Candidatei-me a uma posição como desenvolvedor Java backend com 1 a 3 anos de experiência.

1. Java e seus recursos

O entrevistador geralmente perguntará sobre a versão mais recente do Java que você está usando e seus recursos. Eu usei principalmente o Java 8 e recebi perguntas sobre fluxos de API, expressões lambda, interface funcional e assim por diante. O entrevistador normalmente pergunta sobre esses recursos e aplicativos baseados neles.

2. Funcionamento interno do HashMap

A maioria das entrevistas que participei tinha essa pergunta. Depois de explicar como funciona, alguns perguntaram sobre o tamanho padrão do HashMap, outros perguntaram mais sobre coleções Java.

3. Erros e exceções

A diferença entre Erro e Exceção é uma pergunta muito comum feita em entrevistas. Também perguntou o que são exceções verificadas e não verificadas.

4. Multithreading

Multithreading é um conceito muito importante para entrevistas, geralmente são feitas perguntas sobre Thread, classes Runnable, diferenças entre elas e casos de uso de ambas. Aconselho também que você estude o framework Executor.

5. Strings e imutabilidade

A maioria dos entrevistadores perguntou sobre a imutabilidade na classe de string e, às vezes, perguntou sobre o construtor de string e o buffer de string (se você dissesse que eram strings alternativas mutáveis). Às vezes eles perguntavam como criar uma classe imutável.

6. Coleta de lixo

A coleta de lixo em Java é um tópico muito importante para se preparar para entrevistas. Às vezes, são feitas perguntas sobre o ciclo de vida da coleta de lixo e os diferentes métodos de coleta de lixo.

7. Comparador e Comparável em Java

As perguntas mais comuns são quando usar Comparator e Comparable em Java e qual é a diferença entre eles.

8. Padrões de Design Java

Quando se trata de padrões de design Java, as questões geralmente começam com os diferentes padrões usados ​​no projeto atual. Às vezes, são feitas perguntas sobre quando usar cada um deles. Também questionado sobre a criação de uma classe imutável em Java.

9. Final, Finalmente e Finalizar

A diferença entre as palavras-chave final, finalmente e finalizar é uma pergunta muito comum feita em entrevistas. Como pergunta adicional, eles perguntam sobre as opções de uso de cada palavra-chave.

10. Serialização e desserialização em Java

Serialização e desserialização são tópicos muito importantes para se preparar para entrevistas. Geralmente questionado sobre casos de uso, às vezes sobre hibernação e JPA. Esperançosamente, se você estiver enfrentando uma entrevista para um cargo de desenvolvedor Java Server Side em breve, preparar as perguntas mencionadas aqui irá ajudá-lo.

Implementando uma fila em Java

Fonte: Faun.pub Graças a esta publicação, você aprenderá como implementar uma Queue em Java. Pausa para café #151.  Implementação de uma fila em Java.  10 perguntas obrigatórias para qualquer entrevista para um cargo de desenvolvedor Java Backend - 2

O que é uma fila?

Uma Fila é uma estrutura de dados linear na forma de uma sequência de acesso aos elementos de acordo com o princípio “primeiro a entrar, primeiro a sair”. Isso significa que o elemento inserido primeiro será removido primeiro. Ou seja, os elementos são removidos na ordem em que foram inseridos. A fila consiste em duas partes: Front (frente, onde os elementos são removidos) e Back (atrás, onde os elementos são inseridos). Operações de fila comuns: as seguintes operações são comumente usadas em uma fila:
  • Enfileirar - Adiciona um elemento do final da fila.
  • Dequeue - Remove um elemento do início da fila.
  • Front/Peek - retorna o valor do elemento na frente da fila, sem excluir (retirar) o elemento da fila.
  • IsEmpty – verifica se a fila está vazia.
  • IsFull – verifica se a fila está cheia.
  • Display - Imprime todos os itens da fila.

Implementação de código:

public class Example {
public static void main(String[] args) {
    Queue myQueue = new Queue();
    myQueue.enQueue(3);
    myQueue.enQueue(2);
    myQueue.enQueue(1);
    myQueue.display();
    myQueue.deQueue();
    myQueue.peak();
}
}
class Queue {
  int queueLength = 3;
  int items[] = new int[queueLength];
  int front = -1;
  int back = -1;
  boolean isFull(){
      if(back == queueLength - 1){
          return true;
      } else {
          return false;
      }
  }
  boolean isEmpty(){
      if(front == -1 && back == -1){
          return true;
      } else {
          return false;
      }
  }
   void enQueue(int itemValue) {
      if(isFull()){
          System.out.println("Queue is full");
      } else if(front == -1 && back == -1){
          front = back = 0;
          items[back] = itemValue;
      } else{
          back++;
          items[back] = itemValue;
      }
  }
   void deQueue(){
      if(isEmpty()){
          System.out.println("Queue is empty. Nothing to dequeue");
      } else if (front == back){
          front = back = -1;
      } else {
          front++;
      }
  }
  void display(){
      int i;
      if(isEmpty()){
          System.out.println("Queue is empty");
      } else {
          for(i = front; i <= back; i++){
              System.out.println(items[i]);
          }
      }
  }
  void peak(){
      System.out.println("Front value is: " + items[front]);
  }
}

Explicação:

  • Primeiro criamos nossas variáveis ​​e seus parâmetros. Usamos 3 como o número máximo de elementos que podem ser enfileirados no array. Definimos o índice inicial da frente (Front) e de trás (Back) como -1.

  • A seguir definiremos a funcionalidade de isEmpty e isFull .

  • O método isEmpty() é bastante simples, para o método isFull() nosso número máximo de elementos permitidos em um array é 3, mas três elementos no array não são denotados pelo índice 3, mas por 2, já que o primeiro índice é 0. Então o comprimento máximo é menos 1 nos dá o índice 2, que é a terceira célula da matriz. Quando todas as células estão enfileiradas com um valor até a terceira célula, a matriz está cheia.

  • enQueue - se o array estiver cheio, receberemos uma mensagem informando que está cheio. Se as partes Front e Back forem -1, então o elemento será atribuído à primeira célula no índice 0 - caso contrário, o valor será inserido e a posição posterior será incrementada.

  • deQueue - se o array estiver vazio, recebemos a mensagem correspondente. Se a parte frontal encontrar a parte traseira, redefiniremos seu índice para -1. Se as duas últimas condições não se aplicarem, então a Frente será aumentada.

  • display - se o array não estiver vazio, iteramos e imprimimos todos os elementos.

  • peak - Isso simplesmente imprime o valor do elemento inicial.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION