Câu hỏi tuyển dụng Java Core (Phần 1)

Câu hỏi tuyển dụng Java Core (Phần 1)
Câu 1: Các đặc điểm của java?

Thông dịch:
Java là một ngôn ngữ lập trình vừa biên dịch vừa thông dịch. Chương trình nguồn viết bằng ngôn ngữ lập trình Java có đuôi *.java đầu tiên được biên dịch thành tập tin có đuôi *.class và sau

đó sẽ được trình thông dịch thông dịch thành mã máy

Độc lập nền:
Một chương trình viết bằng ngôn ngữ Java có thể chạy trên nhiều máy tính có hệ điều hành khác nhau (Windows, Unix, Linux, …) với điều kiện ở đó có cài đặt máy ảo java (Java Virtual Machine).


Hướng đối tượng:
Hướng đối tượng trong Java tương tự như C++ nhưng Java là một ngôn ngữ lập trình hướng đối tượng hoàn toàn. Tất cả mọi thứ đề cập đến trong Java đều liên quan đến các đối tượng được định nghĩa trước, thậm chí hàm chính của một chương trình viết bằng Java (đó là hàm main) cũng phải đặt bên trong một lớp. Hướng đối tượng trong Java không có tính đa kế thừa (multi inheritance) như trong C++ mà thay vào đó Java đưa ra khái niệm interface để hỗ trợ tính đa kế thừa.


Đa nhiệm - đa luồng (MultiTasking - Multithreading):
Java hỗ trợ lập trình đa nhiệm, đa luồng cho phép nhiều tiến trình, tiểu trình có thể chạy song song cùng một thời điểm và tương tác với nhau
 


Khả chuyển (portable):
Chương trình ứng dụng viết bằng ngôn ngữ Java chỉ cần chạy được trên máy ảo Java là có thể chạy được trên bất kỳ máy tính, hệ điều hành nào có máy ảo Java. “Viết một lần, chạy mọi nơi” (Write Once, Run Anywhere).
 


Câu 2: Các loại biến có thể có của class?

          Biến local: Biến sẽ được khai báo và khởi tạo bên trong hàm. Bị hủy khi hàm kết thúc
          Instance biến:  biến bên trong class nhưng ngoài phương thức. Biến dduoc khởi tạo khi  class được load
Class biến:  khai báo bên trong class, bên ngoài phương thức với keyword static

Câu 3: Phân biệt string với stringbuffer/stringbuilder

Khác biệt đáng kể nhất giữa String và StringBuffer\StringBuilder trong Java đó là đối tượng String là không thể thay đổi (immutable – không thể thay đổi giá trị) trong khi đó các đối tượng StringBuffer\StringBuilder lại có thể thay đổi (mutable – có thể thay đổi giá trị).

Việc thay đổi giá trị của đối tượng String được thực hiện bằng cách tạo một đối tượng mới có giá trị mà bạn muốn đổi sang.Vì thế,  việc thay đổi giá trị đối với một đối tượng String sẽ dẫn đến phát sinh hàng loạt các đối tượng String mới trong bộ nhớ, càng tạo ra nhiều đối tượng tạm thì bộ thu dọn rác (Garbage Collection) càng phải làm việc nhiều hơn để xây dựng lại bộ nhớ

StringBuilder và StringBuffer về cơ bản là giống nhau, chúng đều có các phương thức giống nhau để làm việc với chuỗi. Sự khác biệt giữa StringBuilder và StringBuffer nằm ở chổ:
+ StringBuffer : thuộc loại synchronized do đó các phương thức của nó đều là “thread safe” (thích hợp với xử lý đa luồng – multi thread)
+ StringBuilder thì ngược lại, không synchronized.
 Với đặc tính “thread safe”, các phương thức của StringBuffer sẽ chạy chậm hơn so với StringBuilder 

5 comments:

  1. + StringBuilder: thuộc loại synchronized do đó các phương thức của nó đều là “thread safe” (thích hợp với xử lý đa luồng – multi thread)

    Bạn chỉnh câu trên thành StringBuffer nhé.

    ReplyDelete
    Replies
    1. Builder la phien ban ra sau va khong synchrolized
      Buffer synchrolized va thread safe nhe

      Delete
  2. In object-oriented programming, computer programs are designed by making them out of objects that interact with one another
    http://en.wikipedia.org/wiki/Object-oriented_programming

    ReplyDelete
  3. Việt nam : Đối tượng : người, vật, hiện tượng mà con người tác động tới (trong suy nghĩ, hành động)
    English : a thing that you can see or touch but that is not usually a living animal, plant, or person:

    Object (computer science) : In computer science, an object is a location in memory having a value and possibly referenced by an identifier. An object can be a variable, a data structure, or a function. In the class-based object-oriented programming paradigm, "object" refers to a particular instance of a class where the object can be a combination of variables, functions, and data structures. In relational database management, an object can be a table or column, or an association between data and a database entity (such as relating a person's age to a specific person).

    ReplyDelete