JavaRush /Blog Java /Random-PL /Przerwa kawowa #151. Implementacja kolejki w Javie. 10 py...

Przerwa kawowa #151. Implementacja kolejki w Javie. 10 pytań, które trzeba zadać podczas każdej rozmowy kwalifikacyjnej na stanowisko programisty zaplecza Java

Opublikowano w grupie Random-PL

10 pytań, które trzeba zadać podczas każdej rozmowy kwalifikacyjnej na stanowisko programisty zaplecza Java

Źródło: Medium Autor artykułu dzieli się swoim osobistym doświadczeniem z odbycia kilku rozmów kwalifikacyjnych na stanowisko Java Backend Developer. Przerwa kawowa #151.  Implementacja kolejki w Javie.  10 pytań obowiązkowych podczas każdej rozmowy kwalifikacyjnej na stanowisko Java Backend Developer - 1Rozmowy kwalifikacyjne są często trudne. Dlatego dobrze jest poznać pytania przed przystąpieniem do rozmowy kwalifikacyjnej. Ponieważ w ciągu ostatnich kilku miesięcy uczestniczyłem w wielu rozmowach kwalifikacyjnych, mogę teraz podzielić się z Wami kilkoma pytaniami, z którymi spotykam się najczęściej. Aplikowałem na stanowisko backendowego programisty Java z 1-3 letnim doświadczeniem.

1. Java i jej funkcje

Osoba przeprowadzająca rozmowę zazwyczaj pyta o najnowszą wersję Java, z której korzystasz i jej funkcje. Najczęściej korzystałem z języka Java 8 i zadawano mi pytania dotyczące strumieni API, wyrażeń lambda, interfejsu funkcjonalnego i tak dalej. Osoba przeprowadzająca rozmowę zazwyczaj pytała o te funkcje i oparte na nich aplikacje.

2. Wewnętrzne działanie HashMap

Większość rozmów, w których brałem udział, dotyczyła tego pytania. Po wyjaśnieniu, jak to działa, niektórzy pytali o domyślny rozmiar HashMap, inni pytali więcej o kolekcje Java.

3. Błędy i wyjątki

Bardzo częstym pytaniem zadawanym podczas rozmów kwalifikacyjnych jest różnica między błędem a wyjątkiem. Zapytano także, jakie wyjątki są zaznaczone i niesprawdzone.

4. Wielowątkowość

Wielowątkowość jest bardzo ważną koncepcją podczas rozmów kwalifikacyjnych, zwykle zadawane są pytania dotyczące Thread, klas Runnable, różnic między nimi i przypadków użycia obu. Radzę również przestudiować framework Executor.

5. Struny i niezmienność

Większość ankieterów pytała o niezmienność w klasie string, a czasami pytała o konstruktora ciągów i bufor ciągów (jeśli powiedziałeś, że są to modyfikowalne ciągi alternatywne). Czasami pytali, jak utworzyć niezmienną klasę.

6. Zbiórka śmieci

Wywóz śmieci w Javie to bardzo ważny temat, który warto przygotować do rozmowy kwalifikacyjnej. Czasami zadawane są pytania dotyczące cyklu życia usuwania śmieci i różnych metod zbierania śmieci.

7. Komparator i porównywalny w Javie

Często zadawane pytania dotyczą tego, kiedy używać komparatora i porównywacza w Javie i jaka jest między nimi różnica.

8. Wzorce projektowe w Javie

Jeśli chodzi o wzorce projektowe w Javie, pytania zwykle zaczynają się od różnych wzorców używanych w bieżącym projekcie. Czasami pojawiają się pytania o to, kiedy użyć każdego z nich. Zapytano także o utworzenie niezmiennej klasy w Javie.

9. Finał, koniec i sfinalizowanie

Różnica między słowami kluczowymi final, final i finalize to bardzo częste pytanie zadawane w rozmowach kwalifikacyjnych. Jako dodatkowe pytanie pytają o opcje użycia każdego słowa kluczowego.

10. Serializacja i deserializacja w Javie

Serializacja i deserializacja to bardzo ważny temat, który należy przygotować do rozmów kwalifikacyjnych. Zwykle pytani o przypadki użycia, czasami pytani o hibernację i JPA. Mamy nadzieję, że jeśli wkrótce czeka Cię rozmowa kwalifikacyjna na stanowisko Java Server Side Developer, przygotowanie wymienionych tutaj pytań będzie Ci pomocne.

Implementacja kolejki w Javie

Źródło: Faun.pub Dzięki tej publikacji dowiesz się, jak zaimplementować kolejkę w Javie. Przerwa kawowa #151.  Implementacja kolejki w Javie.  10 pytań obowiązkowych podczas każdej rozmowy kwalifikacyjnej na stanowisko Java Backend Developer - 2

Co to jest kolejka?

Kolejka to liniowa struktura danych w postaci sekwencji dostępu do elementów według zasady „pierwsze weszło, pierwsze wyszło”. Oznacza to, że element wstawiony jako pierwszy zostanie usunięty jako pierwszy. Oznacza to, że elementy są usuwane w kolejności, w jakiej zostały wstawione. Kolejka składa się z dwóch części: Przód (przód, gdzie usuwane są elementy) i Tył (tył, gdzie wstawiane są elementy). Typowe operacje na kolejce: W kolejce często używane są następujące operacje:
  • Enqueue - Dodaje element z końca kolejki.
  • Dequeue – usuwa element z początku kolejki.
  • Front/Peek - zwraca wartość elementu przed kolejką, bez wykluczania (usuwania) elementu z kolejki.
  • IsEmpty - sprawdza, czy kolejka jest pusta.
  • IsFull - sprawdza, czy kolejka jest pełna.
  • Wyświetl — drukuje wszystkie pozycje w kolejce.

Implementacja kodu:

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

Wyjaśnienie:

  • Najpierw stworzyliśmy nasze zmienne i ich parametry. Używamy 3 jako maksymalnej liczby elementów, które można umieścić w kolejce w tablicy. Ustawiamy początkowy indeks przodu (Front) i tyłu (Back) na -1.

  • Następnie zdefiniujemy funkcjonalność isEmpty i isFull .

  • Metoda isEmpty() jest dość prosta, w przypadku metody isFull() maksymalna liczba elementów dozwolonych w tablicy wynosi 3, ale trzy elementy w tablicy nie są oznaczone indeksem 3, ale 2, ponieważ pierwszy indeks wynosi 0. Zatem maksymalna długość wynosi minus 1, co daje nam indeks 2, który jest trzecią komórką w tablicy. Kiedy wszystkie komórki znajdą się w kolejce z wartością aż do trzeciej komórki, tablica jest pełna.

  • enQueue - jeśli tablica jest pełna, otrzymamy komunikat, że jest pełna. Jeśli części Przód i Tył mają wartość -1, wówczas element jest przypisywany do pierwszej komórki o indeksie 0 - w przeciwnym razie wstawiana jest wartość i zwiększana jest pozycja tylna.

  • deQueue - jeśli tablica jest pusta, otrzymamy odpowiedni komunikat. Jeśli część Przednia spotyka się z częścią Tylną, wówczas resetujemy ich indeks z powrotem do -1. Jeśli dwa ostatnie warunki nie mają zastosowania, wówczas Przód jest zwiększany.

  • display - jeśli tablica nie jest pusta, iterujemy i wypisujemy wszystkie elementy.

  • szczyt — po prostu wypisuje wartość elementu wiodącego.

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