JavaRush /Java Blog /Random-IT /Pausa caffè #151. Implementazione di una coda in Java. 10...

Pausa caffè #151. Implementazione di una coda in Java. 10 domande indispensabili per qualsiasi colloquio di lavoro per una posizione di sviluppatore backend Java

Pubblicato nel gruppo Random-IT

10 domande indispensabili per qualsiasi colloquio di lavoro per una posizione di sviluppatore backend Java

Fonte: Medium L'autore dell'articolo condivide la sua esperienza personale nel superare diversi colloqui per la posizione di sviluppatore backend Java. Pausa caffè #151.  Implementazione di una coda in Java.  10 domande indispensabili per qualsiasi colloquio per una posizione di sviluppatore backend Java - 1Le interviste sono spesso difficili. Pertanto, sarebbe una buona idea conoscere le domande prima di sostenere il colloquio. Dato che ho sostenuto una serie di interviste negli ultimi due mesi, ora posso condividere con voi alcune delle domande che ho incontrato più spesso. Ho fatto domanda per una posizione come sviluppatore Java backend con 1-3 anni di esperienza.

1. Java e le sue caratteristiche

L'intervistatore di solito ti chiederà informazioni sull'ultima versione di Java che stai utilizzando e sulle sue funzionalità. Ho utilizzato principalmente Java 8 e mi sono state poste domande su flussi API, espressioni lambda, interfaccia funzionale e così via. L'intervistatore in genere chiedeva informazioni su queste funzionalità e applicazioni basate su di esse.

2. Funzionamento interno di HashMap

La maggior parte delle interviste a cui ho partecipato contenevano questa domanda. Dopo aver spiegato come funziona, alcuni hanno chiesto informazioni sulla dimensione predefinita di HashMap, altri hanno chiesto di più sulle raccolte Java.

3. Errori ed eccezioni

La differenza tra errore ed eccezione è una domanda molto comune posta nelle interviste. È stato inoltre chiesto quali siano le eccezioni verificate e non verificate.

4. Multithreading

Il multithreading è un concetto molto importante per le interviste, di solito vengono poste domande su Thread, classi eseguibili, differenze tra loro e casi d'uso di entrambi. Ti consiglio anche di studiare il framework Executor.

5. Stringhe e immutabilità

La maggior parte degli intervistatori ha chiesto informazioni sull'immutabilità nella classe string, e poi a volte ha chiesto informazioni sul generatore di stringhe e sul buffer di stringhe (se hai detto che erano stringhe alternative mutabili). A volte chiedevano come creare una classe immutabile.

6. Raccolta dei rifiuti

La raccolta dei rifiuti in Java è un argomento molto importante per prepararsi alle interviste. A volte vengono poste domande sul ciclo di vita della raccolta dei rifiuti e sui diversi metodi di raccolta dei rifiuti.

7. Comparatore e comparabile in Java

Le domande più frequenti riguardano quando utilizzare Comparator e Comparable in Java e qual è la differenza tra loro.

8. Modelli di progettazione Java

Quando si tratta di modelli di progettazione Java, le domande solitamente iniziano con i diversi modelli utilizzati nel progetto corrente. A volte vengono poste domande su quando utilizzare ciascuno di essi. Ho anche chiesto informazioni sulla creazione di una classe immutabile in Java.

9. Finale, Infine e Finalizza

La differenza tra le parole chiave final, final e finalize è una domanda molto comune posta nelle interviste. Come domanda aggiuntiva, chiedono informazioni sulle opzioni per l'utilizzo di ciascuna parola chiave.

10. Serializzazione e deserializzazione in Java

La serializzazione e la deserializzazione sono un argomento molto importante per prepararsi alle interviste. Solitamente vengono chieste informazioni sui casi d'uso, a volte domande sull'ibernazione e JPA. Si spera che, se presto dovrai affrontare un colloquio per una posizione di sviluppatore lato server Java, preparare le domande menzionate qui ti aiuterà.

Implementazione di una coda in Java

Fonte: Faun.pub Grazie a questa pubblicazione imparerai come implementare una coda in Java. Pausa caffè #151.  Implementazione di una coda in Java.  10 domande indispensabili per qualsiasi colloquio per una posizione di sviluppatore backend Java - 2

Cos'è una coda?

Una coda è una struttura di dati lineare sotto forma di una sequenza di accesso agli elementi secondo il principio “first in, first out”. Ciò significa che l'elemento inserito per primo verrà rimosso per primo. Cioè, gli elementi vengono rimossi nell'ordine in cui sono stati inseriti. La coda è composta da due parti: Front (anteriore, dove vengono rimossi gli elementi) e Back (posteriore, dove vengono inseriti gli elementi). Operazioni comuni sulla coda: le seguenti operazioni vengono comunemente utilizzate in una coda:
  • Accodamento : aggiunge un elemento dalla fine della coda.
  • Dequeue : rimuove un elemento dall'inizio della coda.
  • Front/Peek - restituisce il valore dell'elemento davanti alla coda, senza escludere (rimuovere) l'elemento dalla coda.
  • IsEmpty : controlla se la coda è vuota.
  • IsFull : controlla se la coda è piena.
  • Display : stampa tutti gli elementi nella coda.

Implementazione del codice:

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

Spiegazione:

  • Per prima cosa abbiamo creato le nostre variabili e i loro parametri. Usiamo 3 come numero massimo di elementi che possono essere accodati nell'array. Impostiamo l'indice iniziale del fronte (Front) e del retro (Back) a -1.

  • Successivamente definiremo la funzionalità di isEmpty e isFull .

  • Il metodo isEmpty() è abbastanza semplice, per il metodo isFull() il numero massimo di elementi consentiti in un array è 3, ma tre elementi nell'array non sono indicati dall'indice 3 ma da 2 poiché il primo indice è 0. Quindi la lunghezza massima è meno 1 e ci dà l'indice 2, che è la terza cella dell'array. Quando tutte le celle sono in coda con un valore fino alla terza cella, l'array è pieno.

  • enQueue : se l'array è pieno, riceviamo un messaggio che lo informa. Se le parti Fronte e Retro sono -1, l'elemento viene assegnato alla prima cella con indice 0, altrimenti il ​​valore viene inserito e la posizione posteriore viene incrementata.

  • deQueue : se l'array è vuoto, riceviamo il messaggio corrispondente. Se la parte anteriore incontra la parte posteriore, reimpostiamo il loro indice su -1. Se le ultime due condizioni non si applicano, il Fronte viene incrementato.

  • display - se l'array non è vuoto, iteriamo e stampiamo tutti gli elementi.

  • peak - Stampa semplicemente il valore dell'elemento principale.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION