Bộ câu hỏi phỏng vấn Java phần 3

Sự khác biệt giữa Interface và Abstract class là gì?


Java cung cấp và hỗ trợ việc tạo cả hai Abstract classInterfaces. Cả hai cách triển khai đều chia sẻ một số đặc tính chung, nhưng chúng khác nhau ở các tính năng sau:

  • Tất cả các phương thức trong một interface là hoàn toàn trừu tượng (abstract). Mặt khác, một abstract class có thể chứa cả phương thức trừu tượng và không trừu tượng.
  • Một lớp có thể triển khai một số Interfaces, nhưng chỉ có thể extend một abstract class.
  • Để một lớp có thể triển khai một interface nó phải triển khai tất cả các phương thức đã khai báo của interface đó. Tuy nhiên, một lớp có thể không cần phải triển khai tất cả - các phương thức đã khai báo của một abstract class. Mặc dù vậy, trong trường hợp này, lớp con cũng phải được khai báo là abstract.
  • Các abstract classes có thể triển khai các interfaces mà không cần triển khai các phương thức interface. Theo mặc định, các biến được khai báo trong Java interface là biến cuối - cùng. Một abstract class có thể chứa các biến không phải là biến cuối cùng.
  • Các thành viên của một Java interface theo mặc định là public. Thành viên của một abstract class có thể là private, protected hoặc public.
  • Một interface là hoàn toàn trừu tượng và không thể được khởi tạo. Một abstract class cũng không thể được khởi tạo, nhưng có thể được gọi nếu nó chứa một main method

Tầm quan trọng của khối finally trong xử lý exception là gì?


  • Khối finally sẽ luôn được thực thi, cho dù có thực sự thảy ra một exception hay không. Ngay cả trong trường hợp câu lệnh catch bị thiếu và một exception được thảy ra, khối finally vẫn sẽ được thực thi.
  • Điều cuối cùng cần đề cập là khối finally được sử dụng để giải phóng các tài nguyên như bộ đệm I/O, kết nối cơ sở dữ liệu, v.v.

Các interfaces cơ bản của Java Collections Framework là gì?


Java Collections Framework cung cấp một tập hợp các interfaces và class được thiết kế tốt để hỗ trợ các hoạt động trên một tập hợp các đối tượng. Các interfaces cơ bản nhất nằm trong Java Collections Framework là:

  • Collection, đại diện cho một nhóm các đối tượng được gọi là các phần tử của nó.
  • Set, là một tập hợp không chứa các phần tử trùng lặp.
  • List, là một tập hợp có thứ tự và có thể chứa các phần tử trùng lặp.
  • Map, là một đối tượng ánh xạ các khóa đến các giá trị và không chứa các khóa trùng lặp.

Hàm Overriding và Overloading trong Java là gì?


Phương thức overloading trong Java xảy ra khi hai hoặc nhiều phương thức trong cùng một class có cùng tên, nhưng khác tham số.

class Dog{
   public void bark(){
      System.out.println("woof ");
   }

   //overloading method
   public void bark(int num){
      for(int i=0; i<num; i++)
         System.out.println("woof ");
   }
}

Mặt khác, phương thức overriding được định nghĩa là trường hợp khi một lớp con định nghĩa lại cùng một phương thức với một lớp cha. Các phương thức bị ghi đè phải có cùng tên, danh sách đối số và kiểu trả về. Phương thức overriding có thể không giới hạn quyền truy cập của phương thức mà nó ghi đè.

class Dog{
   public void bark(){
      System.out.println("woof ");
   }
}

class Hound extends Dog{
   public void sniff(){
      System.out.println("sniff ");
   }
   public void bark(){
      System.out.println("bowl");
   }
}

public class OverridingTest{
   public static void main(String [] args){
      Dog dog = new Hound();
      dog.bark();
   }
}

Các JSP actions là gì?


Các JSP actions sử dụng các cấu trúc trong cú pháp XML để kiểm soát hành vi của Servlet engine. Các JSP actions được thực thi khi một trang JSP được request. Chúng có thể được chèn động vào một tệp, sử dụng lại các JavaBeans components, chuyển tiếp người dùng đến một trang khác hoặc tạo HTML cho Java plugin. Một số actions khả dụng được liệt kê bên dưới:

  • jsp:include - bao gồm một tệp, khi trang JSP được request.
  • jsp:useBean - tìm hoặc khởi tạo một JavaBean.
  • jsp:setProperty - thiết lập thuộc tính của một JavaBean.
  • jsp:getProperty - lấy thuộc tính của một JavaBean.
  • jsp:forward - chuyển tiếp người yêu cầu đến một trang mới.
  • jsp:plugin - tạo mã riêng cho trình duyệt.

Các kiểu dữ liệu được hỗ trợ bởi Java là gì? Autoboxing và Unboxing là gì?


8 kiểu dữ liệu primitive được hỗ trợ bởi ngôn ngữ lập trình Java là:

  • byte
  • short
  • int
  • long
  • float
  • double
  • boolean
  • char

Autoboxing là sự chuyển đổi tự động được thực hiện bởi trình biên dịch Java giữa các kiểu primitive và các lớp trình bao bọc đối tượng tương ứng của chúng. Nếu chuyển đổi diễn ra theo hướng khác, thao tác này được gọi là Unboxing.

Mục đích của phương thức Class.forName là gì?


Phương thức này được sử dụng để tải driver dùng để thiết lập một kết nối với cơ sở dữ liệu.

Ví dụ:

Class.forName("Oracle.jdbc.driver.OracleDriver")

Từ khóa "static" có nghĩa là gì? Bạn có thể ghi đè phương thức static trong Java không?


Từ khóa static biểu thị rằng một biến thành viên hoặc một phương thức có thể được truy cập mà không yêu cầu phải khởi tạo lớp mà nó thuộc về.

Người dùng không thể ghi đè các phương thức static trong Java, bởi vì việc ghi đè phương thức dựa trên ràng buộc động trong runtime và các phương thức static được liên kết tĩnh tại thời điểm biên dịch. Một phương thức static không được liên kết với bất kỳ instance nào của một class vì vậy khái niệm này không thể áp dụng được.

Expressions là gì?


Một JSP expression (biểu thức) được sử dụng để chèn giá trị của một scripting language expression, được chuyển đổi thành một chuỗi được máy chủ web trả về cho client.

Expressions được xác định giữa các thẻ <%= và %>.

Sự khác biệt giữa Exception và Error trong java là gì?


  • Một Error "chỉ ra các vấn đề nghiêm trọng mà một ứng dụng hợp lý không nên cố gắng bắt".
  • Một Exception "chỉ ra các điều kiện mà một ứng dụng hợp lý có thể muốn nắm bắt".

Sự khác biệt giữa processes và threads là gì?


Sự khác biệt chính giữa chúng là:

  • một Process là một chương trình đang thực thi một số mã và
  • một Thread là một đường dẫn thực thi độc lập trong process.

Một process có thể có nhiều thread để thực hiện tác vụ độc lập, ví dụ: một thread để đọc dữ liệu từ đĩa, một thread để xử lý dữ liệu đó và một thread khác để gửi dữ liệu đó qua mạng.

Sự khác biệt giữa hai phương thức sendRedirect và forward là gì?


Phương thức sendRedirect tạo ra một request mới, trong khi phương thức forward chỉ chuyển tiếp một request đến một mục tiêu mới.

Các đối tượng phạm vi yêu cầu trước đó không khả dụng sau khi chuyển hướng, vì nó dẫn đến một request mới. Mặt khác, các đối tượng phạm vi yêu cầu trước đó có sẵn sau khi chuyển tiếp.

Về cơ bản, nói chung, phương thức sendRedirect được coi là chậm hơn so với phương thức forward.

Avatar Techmely Team
VIẾT BỞI

Techmely Team