Skip to main content

Command Palette

Search for a command to run...

java: Miscellaneous Topics

Published
6 min readView as Markdown

Dưới đây là 20 câu hỏi phỏng vấn Java tập trung vào các chủ đề Miscellaneous Topics bao gồm Types, Keywords, Annotations, Boxing, Unboxing, Package, Strings, và Casting.

Types

  1. Câu hỏi: Sự khác biệt giữa kiểu dữ liệu nguyên thủy (primitive) và đối tượng (object) trong Java là gì?

    • Trả lời: Kiểu dữ liệu nguyên thủy là các kiểu dữ liệu cơ bản được xây dựng sẵn trong Java như int, char, float, boolean. Đối tượng là các thể hiện của lớp và bao gồm các dữ liệu phức tạp như String, ArrayList, và các lớp tự định nghĩa.
  2. Câu hỏi: Hãy liệt kê các kiểu dữ liệu nguyên thủy trong Java và kích thước của chúng.

    • Trả lời:

      • byte: 8-bit

      • short: 16-bit

      • int: 32-bit

      • long: 64-bit

      • float: 32-bit

      • double: 64-bit

      • char: 16-bit

      • boolean: không xác định, thường là 1 bit

Keywords

  1. Câu hỏi: Từ khóa final có những chức năng gì trong Java? Hãy giải thích với ví dụ.

    • Trả lời: Từ khóa final có thể sử dụng với biến, phương thức và lớp.

      • final biến: giá trị không thể thay đổi.

      • final phương thức: không thể override.

      • final lớp: không thể kế thừa.

        final int x = 10; 
        final class MyClass {}
        final void myMethod() {}
  1. Câu hỏi: Từ khóa static có ý nghĩa gì trong Java và khi nào sử dụng nó?

    • Trả lời: Từ khóa static được sử dụng để khai báo các thành phần tĩnh của lớp, bao gồm biến, phương thức và khối lệnh. Các thành phần tĩnh thuộc về lớp chứ không thuộc về các thể hiện của lớp.

        static int count;
        static void myMethod() {}
      

Annotations

  1. Câu hỏi: Annotation là gì và tại sao chúng được sử dụng trong Java?

    • Trả lời: Annotation là một dạng siêu dữ liệu cung cấp thông tin cho trình biên dịch hoặc công cụ thời gian chạy. Chúng được sử dụng để cung cấp thông tin về mã mà không ảnh hưởng trực tiếp đến hành vi của nó.
  2. Câu hỏi: Hãy liệt kê một số annotations mặc định trong Java và ý nghĩa của chúng.

    • Trả lời:

      • @Override: Kiểm tra xem phương thức có override một phương thức trong lớp cha.

      • @Deprecated: Đánh dấu phương thức hoặc lớp là lỗi thời.

      • @SuppressWarnings: Bỏ qua các cảnh báo trong trình biên dịch.

Boxing and Unboxing

  1. Câu hỏi: Boxing và unboxing là gì trong Java? Hãy giải thích với ví dụ.

    • Trả lời: Boxing là quá trình chuyển đổi một kiểu dữ liệu nguyên thủy thành đối tượng tương ứng (int -> Integer). Unboxing là quá trình ngược lại (Integer -> int).

        int a = 5;
        Integer boxed = a; // Boxing
        int unboxed = boxed; // Unboxing
      
  2. Câu hỏi: Tại sao boxing và unboxing có thể gây ra vấn đề hiệu suất trong Java?

    • Trả lời: Boxing và unboxing gây ra việc tạo các đối tượng không cần thiết và có thể làm tăng sử dụng bộ nhớ và thời gian xử lý, ảnh hưởng đến hiệu suất tổng thể của ứng dụng.

Package

  1. Câu hỏi: Package là gì trong Java và tại sao chúng quan trọng?

    • Trả lời: Package là một nhóm các lớp liên quan được tổ chức lại với nhau. Chúng quan trọng vì giúp tổ chức mã, tránh xung đột tên lớp và cung cấp kiểm soát truy cập.
  2. Câu hỏi: Làm thế nào để khai báo một lớp thuộc về một package cụ thể?

    • Trả lời: Bạn khai báo một lớp thuộc về một package cụ thể bằng từ khóa package ở đầu tệp mã nguồn.
    package com.example.myapp;
    public class MyClass {}

Strings

  1. Câu hỏi: String là immutable trong Java, điều này có nghĩa là gì?

    • Trả lời: String là immutable có nghĩa là sau khi một đối tượng String được tạo ra, giá trị của nó không thể thay đổi. Bất kỳ thao tác nào thay đổi chuỗi đều tạo ra một đối tượng String mới.
  2. Câu hỏi: Sự khác biệt giữa String, StringBuilder, và StringBuffer là gì?

    • Trả lời:

      • String: Immutable.

      • StringBuilder: Mutable và không synchronized.

      • StringBuffer: Mutable và synchronized.

  3. Câu hỏi: Hãy cho ví dụ về việc nối chuỗi sử dụng StringBuilder.

    • Trả lời:
    StringBuilder sb = new StringBuilder();
    sb.append("Hello");
    sb.append(" ");
    sb.append("World");
    String result = sb.toString();

Casting

  1. Câu hỏi: Casting là gì trong Java và khi nào cần sử dụng nó?

    • Trả lời: Casting là quá trình chuyển đổi một đối tượng của một kiểu dữ liệu này thành kiểu dữ liệu khác. Nó cần thiết khi bạn muốn xử lý đối tượng ở một kiểu cụ thể hoặc chuyển đổi giữa các kiểu dữ liệu tương thích.
  2. Câu hỏi: Sự khác biệt giữa casting tường minh (explicit) và ngầm định (implicit) là gì?

    • Trả lời:

      • Casting ngầm định: Trình biên dịch tự động chuyển đổi các kiểu dữ liệu tương thích, không yêu cầu mã tường minh.

      • Casting tường minh: Cần chỉ định tường minh việc chuyển đổi giữa các kiểu dữ liệu không tương thích.

    double d = 10.5;
    int i = (int) d; // Explicit casting
    long l = 100; // Implicit casting

Miscellaneous Topics

  1. Câu hỏi: Annotation @FunctionalInterface là gì và tại sao nó được sử dụng?

    • Trả lời: @FunctionalInterface được sử dụng để đánh dấu một interface có chính xác một phương thức trừu tượng. Nó đảm bảo rằng interface được thiết kế để sử dụng với biểu thức lambda và phương thức tham chiếu.
  2. Câu hỏi: Từ khóa assert có chức năng gì trong Java?

    • Trả lời: Từ khóa assert được sử dụng để kiểm tra các điều kiện và đánh giá tính đúng đắn của chương trình tại runtime. Nó giúp phát hiện lỗi logic trong mã nguồn.
    assert x > 0 : "x must be positive";
  1. Câu hỏi: Từ khóa transient có vai trò gì trong Serialization?

    • Trả lời: Từ khóa transient được sử dụng để đánh dấu các trường không nên được serializable. Các trường này sẽ không được ghi vào luồng byte trong quá trình Serialization.
  2. Câu hỏi: Từ khóa strictfp có vai trò gì trong Java?

    • Trả lời: Từ khóa strictfp được sử dụng để đảm bảo rằng các phép tính dấu phẩy động tuân theo các quy tắc tính toán chính xác của IEEE 754, đảm bảo tính nhất quán của các phép tính dấu phẩy động trên các nền tảng khác nhau.
  3. Câu hỏi: Sự khác biệt giữa ==equals() khi so sánh các đối tượng là gì?

    • Trả lời:

      • == kiểm tra xem hai tham chiếu có trỏ đến cùng một đối tượng hay không.

      • equals() kiểm tra xem nội dung của hai đối tượng có bằng nhau hay không.

Những câu hỏi này sẽ giúp đánh giá kiến thức của ứng viên về các chủ đề khác nhau trong Java, bao gồm types, keywords, annotations, boxing/unboxing, packages, strings, và casting.

More from this blog

hoangkim

366 posts