JavaRush /Java Blog /Random-KO /커피 브레이크 #151. Java에서 대기열 구현. Java 백엔드 개발자 직위에 대한 취업 면접에 꼭...

커피 브레이크 #151. Java에서 대기열 구현. Java 백엔드 개발자 직위에 대한 취업 면접에 꼭 필요한 10가지 질문

Random-KO 그룹에 게시되었습니다

Java 백엔드 개발자 직위에 대한 취업 면접에 꼭 필요한 10가지 질문

출처: Medium 이 기사의 저자는 Java 백엔드 개발자 자리에 대한 여러 인터뷰를 통과한 개인적인 경험을 공유합니다. 커피 브레이크 #151.  Java에서 대기열 구현.  Java 백엔드 개발자 직위에 대한 인터뷰에 반드시 필요한 10가지 질문 - 1면접은 어려운 경우가 많습니다. 그러므로 면접에 앞서 질문을 알아보는 것이 좋을 것 같습니다. 지난 몇 달 동안 여러 번의 인터뷰를 거쳐 이제 제가 가장 자주 접했던 질문 중 일부를 여러분과 공유할 수 있게 되었습니다. 저는 1~3년의 경력을 가진 백엔드 Java 개발자 자리에 지원했습니다.

1. 자바와 그 특징

면접관은 일반적으로 귀하가 사용하고 있는 최신 Java 버전과 그 기능에 대해 질문할 것입니다. 저는 주로 Java 8을 사용했고 API 스트림, 람다 표현식, 기능적 인터페이스 등에 대한 질문을 받았습니다. 면접관은 일반적으로 이러한 기능과 이를 기반으로 하는 애플리케이션에 대해 질문했습니다.

2. HashMap의 내부 작업

제가 참석한 대부분의 인터뷰에는 이런 질문이 있었습니다. 작동 방식을 설명한 후 일부는 기본 HashMap 크기에 대해 질문했고 다른 일부는 Java 컬렉션에 대해 더 많은 질문을 했습니다.

3. 오류 및 예외

오류와 예외의 차이점은 인터뷰에서 자주 묻는 질문입니다. 또한 확인된 예외와 확인되지 않은 예외가 무엇인지 물었습니다.

4. 멀티스레딩

멀티스레딩은 인터뷰에서 매우 중요한 개념입니다. 일반적으로 Thread, Runnable 클래스, 이들 간의 차이점 및 둘 다의 사용 사례에 대한 질문을 받습니다. 또한 Executor 프레임워크를 연구하는 것이 좋습니다.

5. 문자열과 불변성

대부분의 면접관은 문자열 클래스의 불변성에 대해 질문한 다음 때때로 문자열 빌더와 문자열 버퍼(변경 가능한 대체 문자열이라고 말한 경우)에 대해 질문했습니다. 때때로 그들은 불변 클래스를 만드는 방법을 물었습니다.

6. 쓰레기 수거

Java의 가비지 수집은 인터뷰 준비에 매우 중요한 주제입니다. 때때로 가비지 수집 수명 주기와 다양한 가비지 수집 방법에 대한 질문이 제기됩니다.

7. Java의 비교기와 비교 가능

자주 묻는 질문은 Java에서 Comparator와 Comparable을 언제 사용해야 하는지와 그 차이점이 무엇인지입니다.

8. 자바 디자인 패턴

Java 디자인 패턴에 관한 질문은 일반적으로 현재 프로젝트에서 사용되는 다양한 패턴으로 시작됩니다. 때때로 각 기능을 언제 사용해야 하는지에 대한 질문이 있습니다. 또한 Java에서 불변 클래스를 생성하는 방법에 대해서도 질문했습니다.

9. 최종, 최종 및 마무리

키워드 final, finally 및 finalize의 차이점은 인터뷰에서 자주 묻는 질문입니다. 추가 질문으로 각 키워드의 사용 옵션에 대해 질문합니다.

10. 자바의 직렬화와 역직렬화

직렬화 및 역직렬화는 인터뷰 준비에 있어 매우 중요한 주제입니다. 일반적으로 사용 사례에 대해 질문하고 때로는 최대 절전 모드 및 JPA에 대해 질문합니다. 곧 Java Server Side Developer 자리에 대한 인터뷰를 앞두고 있다면 여기에 언급된 질문을 준비하는 것이 도움이 되기를 바랍니다.

Java에서 대기열 구현

출처: Faun.pub 이 출판물 덕분에 Java에서 대기열을 구현하는 방법을 배울 수 있습니다. 커피 브레이크 #151.  Java에서 대기열 구현.  Java 백엔드 개발자 직위에 대한 인터뷰에 반드시 필요한 10가지 질문 - 2

대기열이란 무엇입니까?

큐는 "선입선출" 원칙에 따라 요소에 대한 액세스 시퀀스 형태의 선형 데이터 구조입니다. 즉, 먼저 삽입된 요소가 먼저 제거됩니다. 즉, 요소가 삽입된 순서대로 제거됩니다. 큐는 Front(앞, 요소가 제거되는 곳)와 Back(뒤, 요소가 삽입되는 곳)의 두 부분으로 구성됩니다. 공통 대기열 작업: 다음 작업은 대기열에서 일반적으로 사용됩니다.
  • Enqueue - 대기열 끝에서 요소를 추가합니다.
  • Dequeue - 대기열의 헤드에서 요소를 제거합니다.
  • Front/Peek - 대기열에서 요소를 제외(제거)하지 않고 대기열 앞에 있는 요소의 값을 반환합니다.
  • IsEmpty - 대기열이 비어 있는지 확인합니다.
  • IsFull - 대기열이 가득 찼는지 확인합니다.
  • 표시 - 대기열의 모든 항목을 인쇄합니다.

코드 구현:

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

설명:

  • 먼저 변수와 해당 매개변수를 만들었습니다. 배열에 대기할 수 있는 최대 요소 수로 3을 사용합니다. 앞(Front)과 뒤(Back)의 초기 인덱스를 -1로 설정했습니다.

  • 다음으로 isEmptyisFull 의 기능을 정의하겠습니다 .

  • isEmpty() 메소드 는 매우 간단합니다. isFull() 메소드의 경우 배열에 허용되는 최대 요소 수는 3이지만 첫 번째 인덱스가 0이므로 배열의 세 요소는 인덱스 3이 아닌 2로 표시됩니다. 최대 길이가 마이너스 1이면 배열의 세 번째 셀인 인덱스 2가 됩니다. 모든 셀이 세 번째 셀까지의 값으로 대기열에 추가되면 배열이 가득 찼습니다.

  • enQueue - 배열이 꽉 차면 꽉 찼다는 메시지를 받습니다. 앞 부분과 뒷 부분이 -1이면 요소는 인덱스 0의 첫 번째 셀에 할당됩니다. 그렇지 않으면 값이 삽입되고 뒷 위치가 증가됩니다.

  • deQueue - 배열이 비어 있으면 해당 메시지를 받습니다. 앞부분이 뒷부분과 만나면 인덱스를 다시 -1로 재설정합니다. 마지막 두 조건이 적용되지 않으면 Front가 증가합니다.

  • 표시 - 배열이 비어 있지 않으면 모든 요소를 ​​반복하고 인쇄합니다.

  • peak - 단순히 선행 요소의 값을 인쇄합니다.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION