JavaRush /Blog Java /Random-VI /Nghỉ giải lao #151. Triển khai hàng đợi trong Java. 10 câ...

Nghỉ giải lao #151. Triển khai hàng đợi trong Java. 10 câu hỏi phải có cho bất kỳ cuộc phỏng vấn xin việc nào cho vị trí Nhà phát triển phụ trợ Java

Xuất bản trong nhóm

10 câu hỏi phải có cho bất kỳ cuộc phỏng vấn xin việc nào cho vị trí Nhà phát triển phụ trợ Java

Nguồn: Medium Tác giả bài viết chia sẻ kinh nghiệm cá nhân khi vượt qua một số cuộc phỏng vấn cho vị trí Nhà phát triển phụ trợ Java. Nghỉ giải lao #151.  Triển khai hàng đợi trong Java.  10 câu hỏi bắt buộc phải có khi phỏng vấn vị trí Java Backend Developer - 1Các cuộc phỏng vấn thường khó khăn. Vì vậy, sẽ là một ý tưởng tốt nếu bạn biết rõ các câu hỏi trước khi tham gia cuộc phỏng vấn. Vì tôi đã trải qua một số cuộc phỏng vấn trong vài tháng qua nên giờ đây tôi có thể chia sẻ với bạn một số câu hỏi mà tôi thường gặp nhất. Tôi đã ứng tuyển vào vị trí nhà phát triển Java phụ trợ với 1-3 năm kinh nghiệm.

1. Java và các tính năng của nó

Người phỏng vấn thường sẽ hỏi về phiên bản Java mới nhất mà bạn đang sử dụng và các tính năng của nó. Tôi chủ yếu sử dụng Java 8 và đã được hỏi các câu hỏi về luồng API, biểu thức lambda, giao diện chức năng, v.v. Người phỏng vấn thường hỏi về các tính năng và ứng dụng dựa trên chúng.

2. Hoạt động nội bộ của HashMap

Hầu hết các cuộc phỏng vấn tôi tham dự đều có câu hỏi này. Sau khi giải thích cách hoạt động, một số hỏi về kích thước HashMap mặc định, những người khác hỏi thêm về các bộ sưu tập Java.

3. Lỗi và ngoại lệ

Sự khác biệt giữa Lỗi và Ngoại lệ là một câu hỏi rất phổ biến được hỏi trong các cuộc phỏng vấn. Cũng hỏi những gì được kiểm tra và ngoại lệ không được kiểm tra.

4. Đa luồng

Đa luồng là một khái niệm rất quan trọng trong các cuộc phỏng vấn, các câu hỏi thường được hỏi về các lớp Thread, Runnable, sự khác biệt giữa chúng và trường hợp sử dụng của cả hai. Tôi cũng khuyên bạn nên nghiên cứu khung Executor.

5. Dây và tính bất biến

Hầu hết những người phỏng vấn đều hỏi về tính bất biến trong lớp chuỗi, sau đó đôi khi hỏi về trình tạo chuỗi và bộ đệm chuỗi (nếu bạn nói chúng là các chuỗi thay thế có thể thay đổi). Đôi khi họ hỏi làm thế nào để tạo một lớp bất biến.

6. Thu gom rác

Thu gom rác trong Java là một chủ đề rất quan trọng để chuẩn bị cho các cuộc phỏng vấn. Đôi khi các câu hỏi được đặt ra về vòng đời thu gom rác và các phương pháp thu gom rác khác nhau.

7. Trình so sánh và khả năng so sánh trong Java

Các câu hỏi thường gặp là khi nào nên sử dụng Comparator và Comparable trong Java và sự khác biệt giữa chúng là gì.

8. Các mẫu thiết kế Java

Khi nói đến các mẫu thiết kế Java, các câu hỏi thường bắt đầu bằng các mẫu khác nhau được sử dụng trong dự án hiện tại. Đôi khi các câu hỏi được đặt ra về thời điểm sử dụng từng cái. Cũng được hỏi về việc tạo một lớp bất biến trong Java.

9. Cuối cùng, Cuối cùng và Hoàn thiện

Sự khác biệt giữa các từ khóa cuối cùng, cuối cùng và hoàn thiện là một câu hỏi rất phổ biến được hỏi trong các cuộc phỏng vấn. Là một câu hỏi bổ sung, họ hỏi về các tùy chọn sử dụng từng từ khóa.

10. Tuần tự hóa và giải tuần tự hóa trong Java

Serialization và deserialization là một chủ đề rất quan trọng để chuẩn bị cho các cuộc phỏng vấn. Thường được hỏi về các trường hợp sử dụng, đôi khi được hỏi về chế độ ngủ đông và JPA. Hy vọng rằng, nếu bạn sắp phải đối mặt với một cuộc phỏng vấn cho vị trí Nhà phát triển phía máy chủ Java, việc chuẩn bị các câu hỏi được đề cập ở đây sẽ giúp ích cho bạn.

Triển khai hàng đợi trong Java

Nguồn: Faun.pub Nhờ ấn phẩm này, bạn sẽ học cách triển khai Hàng đợi trong Java. Nghỉ giải lao #151.  Triển khai hàng đợi trong Java.  10 câu hỏi bắt buộc phải có khi phỏng vấn vị trí Java Backend Developer - 2

Hàng đợi là gì?

Hàng đợi là một cấu trúc dữ liệu tuyến tính dưới dạng một chuỗi truy cập vào các phần tử theo nguyên tắc “nhập trước, xuất trước”. Điều này có nghĩa là phần tử được chèn trước sẽ bị xóa trước. Nghĩa là, các phần tử sẽ bị xóa theo thứ tự chúng được chèn vào. Hàng đợi bao gồm hai phần: Front (phía trước, nơi các phần tử được loại bỏ) và Back (phía sau, nơi các phần tử được chèn vào). Các hoạt động hàng đợi chung: Các hoạt động sau đây thường được sử dụng trong hàng đợi:
  • Enqueue - Thêm một phần tử từ cuối hàng đợi.
  • Dequeue - Xóa phần tử khỏi đầu hàng đợi.
  • Front/Peek - trả về giá trị của phần tử ở phía trước hàng đợi mà không loại trừ (xóa) phần tử khỏi hàng đợi.
  • IsEmpty - kiểm tra xem hàng đợi có trống không.
  • IsFull - kiểm tra xem hàng đợi đã đầy chưa.
  • Hiển thị - In tất cả các mục trong hàng đợi.

Triển khai mã:

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

Giải trình:

  • Đầu tiên chúng ta tạo các biến và tham số của chúng. Chúng tôi sử dụng 3 làm số phần tử tối đa có thể được xếp hàng đợi trong mảng. Chúng ta đặt chỉ số ban đầu của mặt trước (Front) và mặt sau (Back) thành -1.

  • Tiếp theo chúng ta sẽ xác định chức năng của isEmptyisFull .

  • Phương thức isEmpty() khá đơn giản, đối với phương thức isFull() số phần tử tối đa được phép trong một mảng của chúng ta là 3, nhưng ba phần tử trong mảng không được biểu thị bằng chỉ mục 3 mà là 2 vì chỉ mục đầu tiên là 0. Vì vậy độ dài tối đa là âm 1 cho chúng ta chỉ số 2, đây là ô thứ ba trong mảng. Khi tất cả các ô được xếp hàng đợi với giá trị lên đến ô thứ ba, mảng đã đầy.

  • enQueue - nếu mảng đầy, chúng ta nhận được thông báo rằng nó đã đầy. Nếu phần Mặt trước và Phần sau là -1 thì phần tử được gán cho ô đầu tiên ở chỉ số 0 - nếu không thì giá trị sẽ được chèn và vị trí phía sau sẽ tăng lên.

  • deQueue - nếu mảng trống, chúng ta nhận được thông báo tương ứng. Nếu phần Front gặp phần Back thì chúng ta reset chỉ số của chúng về -1. Nếu hai điều kiện cuối cùng không được áp dụng thì Front sẽ tăng lên.

  • hiển thị - nếu mảng không trống, chúng tôi lặp lại và in tất cả các phần tử.

  • đỉnh - Điều này chỉ đơn giản là in giá trị của phần tử hàng đầu.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION