JAVA CORE
JAVA CORE
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Câu hỏi phỏng vấn Java Core phần 5

Freetuts tiếp tục series tìm hiểu những câu hỏi thường gặp khi đi phỏng vấn Java Core ở bài viết này. Nếu đã đọc những bài viết trước chắc các bạn cũng đã hiểu được quy trình của một buổi phỏng vấn sẽ hỏi từ Introduction Java đến những chủ đề lớn của Java như Data Type, OOP, String, Collections... Tương tự thì bài viết này cũng sẽ đưa ra một số câu hỏi kinh điển để các bạn có thể tham khảo.

Trong Java có những quy tắc đặt tên nào cần lưu ý?

Có những quy tắc đặt tên quan trọng trong Java mà các lập trình viên cần phải lưu ý để code dễ đọc, dễ hiểu và dễ bảo trì. Một số quy tắc đặt tên phổ biến trong Java bao gồm:

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
  1. Tên lớp phải được viết hoa chữ cái đầu tiên của mỗi từ và sử dụng kiểu CamelCase, ví dụ: MyClass

  2. Tên phương thức và biến nên được viết bằng chữ cái thường cho chữ cái đầu tiên của từ đầu tiên, sau đó sử dụng kiểu CamelCase, ví dụ: myMethod, myVariable.

  3. Tên hằng số nên được viết bằng chữ in hoa và sử dụng dấu gạch dưới để phân tách các từ, ví dụ: MY_CONSTANT

  4. Tên package nên được viết bằng chữ thường và sử dụng dấu chấm để phân tách các từ, ví dụ: com.example.myproject

  5. Tránh sử dụng tên biến hoặc phương thức quá ngắn hoặc không rõ nghĩa, ví dụ: a, b, c, x, y, z

  6. Tránh sử dụng tên biến hoặc phương thức quá dài hoặc quá phức tạp, ví dụ: ThisIsAVeryLongVariableNameThatIsHardToRead

  7. Tránh sử dụng các từ khóa Java làm tên biến hoặc phương thức, ví dụ: public, class, static, final, private, void, if, while, for

  8. Tránh sử dụng ký tự đặc biệt trong tên biến hoặc phương thức, ví dụ: @, !, $, %, ^, &, *, (, ).

Freetuts khuyên bạn nên tuân thủ các quy tắc đặt tên trong Java, việc đó sẽ giúp code của bạn trở nên dễ đọc, dễ hiểu, dễ làm việc nhóm và dễ debug.

Giải thích cấu trúc và ý nghĩa của hàm main() trong Java?

Hàm main() là một phương thức quan trọng trong Java, nó được sử dụng để bắt đầu chương trình. Đây là cấu trúc cơ bản của hàm main():

public static void main(String[] args) {
    // Nội dung của chương trình
}

Trong đó:

Bài viết này được đăng tại [free tuts .net]

  • public: là access modifier của hàm main() cho phép nó được truy cập từ bên ngoài lớp hiện tại.

  • static: là từ khóa cho phép hàm main() được gọi mà không cần khởi tạo đối tượng của lớp hiện tại.

  • void: là kiểu dữ liệu của giá trị trả về của hàm main(), đây là một hàm không trả về giá trị.

  • main: là tên của hàm, và đây là tên duy nhất được Java sử dụng để bắt đầu chạy chương trình.

  • String[] args: là tham số đầu vào của hàm main(), trong đó tham số này có kiểu dữ liệu là một mảng các chuỗi (String).

Hàm main() được sử dụng để bắt đầu chạy chương trình. Khi chương trình được chạy, hàm main() sẽ được gọi đầu tiên. Tham số đầu vào của hàm main() là một mảng các chuỗi (String), và được sử dụng để truyền tham số cho chương trình từ dòng lệnh khi chạy chương trình.

Tóm lại, hàm main() là một phương thức cần thiết để bắt đầu chạy chương trình trong Java, và nó được sử dụng để đặt nội dung chính của chương trình.

Khái niệm Iterator? Cách sử dụng Iterator trong Java?

1. Khái niệm: Iterator là một interface trong Java được sử dụng để duyệt các phần tử trong một Collection. Interface này cung cấp các phương thức để truy cập và loại bỏ các phần tử từ một Collection mà không cần biết cấu trúc nội bộ của nó.

2. Các phương thức chính của Iterator bao gồm:

  • boolean hasNext(): kiểm tra xem có phần tử tiếp theo trong Collection hay không.

  • Object next(): trả về phần tử tiếp theo trong Collection.

  • void remove(): loại bỏ phần tử hiện tại từ Collection.

3. Cách sử dụng Iterator trong Java

  • Bước 1: Tạo đối tượng Iterator từ Collection:

Iterator<String> iterator = myCollection.iterator();

Ở đây, “myCollection” là một đối tượng của một lớp Collection bất kì (ArrayList, HashSet, LinkedList,...) và String là kiểu dữ liệu trong Collection.

  • Bước 2: Sử dụng các phương thức của Iterator để duyệt các phần tử trong Collection.

Ví dụ:

while (iterator.hasNext()) {
    String element = iterator.next();
    // Thực hiện các hoạt động trên phần tử

}

Trong đó, hasNext() được sử dụng để kiểm tra xem có phần tử tiếp theo trong Collection hay không, và next() được sử dụng để trả về phần tử tiếp theo trong Collection. Phần tử này có thể được lưu trữ trong một local variable và được sử dụng để thực hiện các hoạt động trên nó.

Nếu muốn loại bỏ một phần tử khỏi Collection, ta có thể sử dụng phương thức remove() của Iterator như sau:

iterator.remove();

Với Iterator, ta có thể duyệt các phần tử của một Collection một cách an toàn và hiệu quả mà không ảnh hưởng đến cấu trúc nội bộ của Collection.

Phân biệt final, finally và finalize trong Java là gì?

1. final: là một keyword trong Java được sử dụng để khai báo một biến, một phương thức hoặc một lớp không thể thay đổi (immutable). Khi một biến, phương thức hoặc lớp được khai báo là final, nó sẽ không thể bị gán giá trị mới hoặc không thể thay đổi cấu trúc.

Ví dụ:

final int MAX_VALUE = 100;
final MyClass obj = new MyClass();

Trong ví dụ này, biến MAX_VALUE và đối tượng obj được khai báo là final, nghĩa là chúng không thể thay đổi giá trị hoặc cấu trúc của chúng.

2. finally: là một khối lệnh trong Java được sử dụng để đặt mã sẽ được thực thi dù có xảy ra ngoại lệ (exception) trong khối try-catch hay không. Khối lệnh finally được đặt sau khối try-catch và luôn được thực thi bất kể có lỗi xảy ra hay không.

Ví dụ:

try {
    // Các lệnh có thể gây ra ngoại lệ
} catch (Exception e) {
    // Xử lý ngoại lệ
} finally {
    // Luôn được thực thi bất kể có ngoại lệ hay không
}

3. finalize: là một phương thức có sẵn trong lớp Object của Java được sử dụng để giải phóng tài nguyên của đối tượng trước khi đối tượng đó bị thu hồi bởi bộ dọn rác (garbage collector). Phương thức finalize được gọi tự động trước khi đối tượng bị thu hồi bởi bộ dọn rác.

Ví dụ:

class MyClass {
    // Code của lớp
    protected void finalize() {
        // Giải phóng tài nguyên trước khi đối tượng bị thu hồi
    }
}

Trên đây là sự khác biệt giữa final, finally finalize trong Java.

Khái niệm khối lệnh Try-catch và những lưu ý khi sử dụng khối lệnh này?

1. Khái niệm: Trong Java, try-catch là một cơ chế xử lý ngoại lệ (exception handling) được sử dụng để xử lý các ngoại lệ phát sinh trong quá trình thực thi chương trình.

Cú pháp của try-catch như sau:

try {
    // Các lệnh có thể gây ra ngoại lệ
} catch (ExceptionType1 e1) {
    // Xử lý ngoại lệ thuộc loại ExceptionType1
} catch (ExceptionType2 e2) {
    // Xử lý ngoại lệ thuộc loại ExceptionType2
} finally {
    // Khối lệnh được thực thi sau khi khối try-catch kết thúc
}

Trong đó:

  • Khối try: là nơi chứa các lệnh có thể gây ra ngoại lệ.

  • Khối catch: là nơi xử lý các ngoại lệ được phát sinh trong khối try. Mỗi khối catch xử lý một loại ngoại lệ cụ thể, được xác định bởi kiểu dữ liệu của biến tham số e.

  • Khối finally: là nơi chứa các lệnh sẽ được thực thi bất kể có ngoại lệ xảy ra hay không. Khối này được sử dụng để đặt các lệnh giải phóng tài nguyên như đóng kết nối cơ sở dữ liệu, đóng tệp, ...

2. Các lưu ý về try-catch:

  • Khối catch phải đặt sau khối try và có thể có nhiều khối catch để xử lý các loại ngoại lệ khác nhau.

  • Khối finally là tùy chọn và nó luôn được thực thi bất kể có ngoại lệ xảy ra hay không.

  • Một khối try-catch có thể được lồng vào một khối try-catch khác để xử lý ngoại lệ chi tiết hơn.

  • Trong một khối catch, ta có thể sử dụng các phương thức của lớp Exception để lấy thông tin chi tiết về ngoại lệ, ví dụ như getMessage(), printStackTrace(), ...

Các lợi ích của try-catch là giúp cho chương trình không bị dừng lại khi gặp lỗi và cho phép người lập trình có thể xác định được nguyên nhân của lỗi và xử lý phù hợp.

Những đặc điểm nổi bật của Collection Framework trong Java?

1. Khái niệm: Collection Framework là một tập hợp các lớp và interface trong Java cung cấp các cấu trúc dữ liệu phổ biến và các thuật toán để thao tác với các cấu trúc dữ liệu này. Nó được sử dụng rộng rãi trong lập trình Java để quản lý và xử lý các tập hợp dữ liệu phức tạp.

2. Các đặc điểm nổi bật:

  • Tính đa dạng: Collection Framework cung cấp nhiều cấu trúc dữ liệu khác nhau như List, Set, Map, Queue, ... để phù hợp với các mục đích lập trình khác nhau. Bạn có thể lựa chọn cấu trúc dữ liệu phù hợp để thực hiện các thao tác tìm kiếm, thêm, xoá, sắp xếp, duyệt dữ liệu, ...

  • Hiệu suất: Collection Framework được thiết kế để có hiệu suất tốt. Nó sử dụng các thuật toán tối ưu để thực hiện các thao tác trên dữ liệu.

  • Kiểm tra kiểu dữ liệu tại compile time: Collection Framework được tích hợp vào Java Generics. Do đó, bạn có thể kiểm tra kiểu dữ liệu của các phần tử trong Collection tại thời điểm biên dịch (compile time) thay vì phải đợi đến thời điểm thực thi (runtime).

  • Thao tác đa luồng: Collection Framework cung cấp các phương thức an toàn đối với đa luồng để tránh tình trạng cập nhật dữ liệu đồng thời (concurrency) gây ra lỗi.

  • Tính linh hoạt: Collection Framework cho phép bạn tạo ra các Collection mới từ các Collection khác, hoặc sắp xếp, lọc, tìm kiếm, duyệt dữ liệu trong các Collection.

  • Khả năng mở rộng: Collection Framework là một phần của Java API và được cung cấp sẵn bởi JDK. Điều này có nghĩa là bạn có thể sử dụng nó trực tiếp và mở rộng hoặc kế thừa từ các lớp và giao diện này để tạo ra các cấu trúc dữ liệu mới.

Với các đặc điểm và lợi ích trên, Collection Framework là một công cụ mạnh mẽ giúp cho việc quản lý và xử lý các tập dữ liệu phức tạp trở nên dễ dàng và hiệu quả hơn.

Khái niệm ENUM và những lưu ý khi sử dụng ENUM?

1. Khái niệm: ENUM (từ viết tắt của enumeration) là một kiểu dữ liệu trong Java được sử dụng để định nghĩa một tập hợp các hằng số (constants) có giá trị cố định. Mỗi hằng số trong ENUM được gọi là một phần tử (element) và được đặt tên riêng biệt.

Để định nghĩa một ENUM, bạn có thể sử dụng từ khóa enum như sau:

enum Days {
  MONDAY,
  TUESDAY,
  WEDNESDAY,
  THURSDAY,
  FRIDAY,
  SATURDAY,
  SUNDAY
}

Trong đoạn code trên, ta đã định nghĩa một ENUM có tên là "Days" với các phần tử là các ngày trong tuần.

2. Các đặc điểm của ENUM trong Java:

  • Giá trị của các phần tử trong ENUM là cố định và không thể thay đổi.
  • Mỗi phần tử trong ENUM có thể được xem như một đối tượng (object) của kiểu ENUM đó.
  • ENUM có thể chứa các thuộc tính (properties) và các phương thức (methods) giống như một lớp (class).

Bạn có thể sử dụng ENUM trong các cấu trúc điều khiển (control structures) như switch-case hoặc if-else để kiểm tra giá trị của các phần tử.

Ví dụ về sử dụng ENUM trong Java:

public class Example {
  enum Days {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
  }

  public static void main(String[] args) {
    Days day = Days.MONDAY;
    switch (day) {
      case MONDAY:
        System.out.println("Today is Monday");
        break;

      case TUESDAY:
        System.out.println("Today is Tuesday");
        break;

      // ...

      default:
        System.out.println("Invalid day");
        break;
    }
  }
}

Trong ví dụ trên, ta đã định nghĩa một ENUM "Days" và sử dụng nó trong một switch-case để kiểm tra giá trị của biến "day".

3. Lưu ý:

  • ENUM trong Java là một kiểu dữ liệu, vì vậy bạn có thể sử dụng nó như một tham số hoặc giá trị trả về trong phương thức, hay sử dụng nó để khai báo các biến.
  • Mỗi phần tử trong ENUM được coi là một đối tượng, vì vậy bạn có thể gọi các phương thức của phần tử đó hoặc gán phần tử cho một biến đối tượng.
  • Khi so sánh giá trị của các phần tử ENUM, bạn nên sử dụng toán tử "==" thay vì phương thức equals() vì các phần tử ENUM được xem như là các đối tượng và toán tử "==" so sánh tham chiếu của chúng.
  • ENUM trong Java không thể được kế thừa, vì vậy bạn không thể tạo một ENUM mới bằng cách kế thừa một ENUM hiện có.
  • ENUM trong Java có thể có các phương thức và thuộc tính như một lớp, cho phép bạn thực hiện các thao tác trên các phần tử của ENUM.

Tổng Kết

Bài viết này bao gồm những câu hỏi về kiến thức cơ bản trong lập trình Java Core, những câu hỏi trên chủ yếu mang tính tham khảo và cung cấp một lượng kiến thức căng bản của Java một cách tốt nhất cho các lập trình viên trước những buổi phỏng vấn. Freetuts chúc các bạn có buổi phỏng vấn thành công.

Cùng chuyên mục:

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Cách sử dụng Spring  Scheduled trong Spring Boot

Cách sử dụng Spring Scheduled trong Spring Boot

Cách dùng Groovy trong Spring Boot Java

Cách dùng Groovy trong Spring Boot Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo ứng dụng Chat với Spring Boot và Websocket

Tạo ứng dụng Chat với Spring Boot và Websocket

Sử dụng JUnit để tạo unit test trong Spring Boot

Sử dụng JUnit để tạo unit test trong Spring Boot

Cách triển khai Spring Boot trên Tomcat Server

Cách triển khai Spring Boot trên Tomcat Server

Cách test RESTful API trong Spring Boot

Cách test RESTful API trong Spring Boot

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Top