KINH NGHIỆM 20 câu hỏi phỏng vấn Java dành cho Junior developer

Thuong Trinh

New Member
7/7/22
4
1
1
Ho Chi Minh
Xin chào các bạn, trong bài viết này mình sẽ chia sẻ một số câu hỏi dành cho lập trình đang muốn tìm việc về Java jobs mà mình đã góp nhặt từ các buổi phỏng vấn. Có thể sẽ có những câu bạn gặp qua rồi, cũng có những câu lạ và khó. Cùng mình xem và thảo luận nhé.

1- Làm thế nào Java độc lập nền tảng?
Gợi ý: Bytecode và Máy ảo Java (Java Virtual Machine)

Ngôn ngữ lập trình Java cung cấp tính năng độc lập nền tảng, có nghĩa là chương trình Java có thể chạy trên bất kỳ nền tảng hay hệ điều hành nào. Để trả lời câu hỏi này bạn nên nắm kiến thức như class files, bytecode và Java virtual machine vì cùng với nhau chúng sẽ tạo ra tính độc lập nền tảng cho Java.

Khi compile một Java program nó sẽ tạo .class file là tập hợp của byte code, những byte code này không theo giống mã máy (machine instruction), thay vào đó là dưới dạng mà java virtual machine có thể hiểu được. Vì từng program đều chạt trên Java virtual machine nên cùng byte code có thể chạy trên bất kỳ nền tảng nào. JVM (Java virtual machine) convert byte code thành machine level instructions tùy vào platform bạn sử dụng, chia thành 2 version: JDK và JRE cho windows và Linux.

2- ClassLoader trong Java là gì?
Gợi ý: một phần của JVM mà tải bytecode cho class. Bạn có thể viết cho riêng mình.

3- Viết một chương trình Java để kiểm tra tính chẵn lẻ của một số bất kỳ
4- Sự khác nhau giữa ArrayList và HashSet trong Java?
5- Double checked locking trong Singleton là gì?
6- Tạo thread-safe Singleton trong Java như thế nào?
7- Khi nào thì dùng biến volatile trong Java?
8- Khi nào thì dùng biến transient trong Java?
9- Sự khác nhau giữa biến volatile và biến transient là gì?
10- Phân biệt serializable và Externalizable trong Java
11- Có thể ghi đè (overide) private method trong Java không?
12- Khác nhau giữa Hashtable và HashMap trong Java là gì?
13- Khác nhau giữa List và Set trong Java là gì?
14- Điểm khác biệt giữa ArrayList và Vector trong Java
15- Khác nhau giữa Hashtable và ConcurrentHashMap trong Java là gì

Đừng quên, tạo cv online cho lập trình viên thật chỉnh chu để có những ấn tượng tốt nhất với nhà tuyển dụng nhé. Giờ thì lấy tinh thần, thật tự tin và chiến thôi
 
  • Like
Reactions: Joe

Joe

Thành viên VIP
21/1/13
3,065
1,342
113
Good to see someone who contributes somethings to this forum. All that what you wrote is fine and very helpful. However IT developing work is not THE WORK OF A SPECIFIC OOPL (Object Oriented Programming Language), BUT A WORK OF UNDERSTANDING COMPUTER SCIENCE (CS) IN GENERAL. Java or C# or C++ or even the ancient COBOL is just a problem-solving tool. If one does not understand the matter that he/she works with then the working tool is useless -even he/she masters the tool exceptionally. Let me give you an example that I've found this posting Xuất kiểu kí tự trong Java on a Vietnamese forum. The man asked:
Anh/Chị cho em hỏi là tại dòng: System.out.println((char)(c + 1)); --> Mình ép (c+1) về kiểu kí tự là do: c là kiểu kí tự, còn 1 là kiểu số nguyên. Mà do kiểu số nguyên lớn hơn kiểu kí tự nên: : Kiểu kí tự + Kiểu số nguyên = Kiểu số nguyên. Nên mình phải ép về kiểu kí tự để xuất ra được dạng kí tự đúng vậy không ạ?
Java:
import java.util.Scanner;

public class Input {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char c = sc.next().charAt(0);
        System.out.println((char)(c + 1));
    }
}
It's obvious that this boy learns JAVA without having the fundamental Computer Science knowledge. EITHER the college or university where he studies is bad OR he just learns an OOPL to become an IT man. If he does have the basic CS knowledge he would know that CS does not distinguish a bit from a byte, nor from a char(acter), nor from an int(eger). All that is the convention set by human -hence Computer Science.

CS bases on binary system (or digital) which has only two states ON or OFF. An ON or an OFF is called a bit. To represent the human written symbols (or letters/characters) we need more than one bit. For the English language it's enough to have 8 bits to represent all the symbols. But some Asian languages have more written symbols than just 256 symbols and that requires more bits than merely 8 bits. All advanced OOPLs use 16 bits to represent a character. Unused parts are set to state 0 (zero or off).

But computer still works with bits and knows only ONE arithmetic operation (addition) and some logical operations (AND, OR, NOT, XOR, SHIFT, etc.). Other arith. operations (sub, mul, div, mod, log, etc.) are derived from Addition in conjunction with the logical operation NOT (called the complement), SHIFT. So, an addition of


  • bytes
  • chars
will be done as if they were two integers. For example: 'A' +1 = 66 or Hex. 42. It's exactly the hex. number that represents the letter B. To convert the number 66 (or x42) to the symbol of the letter B a Character table is required. The mapping principle is simple: key to the symbol is the number itself. The key of letter A is x41, B is x42, etc. The mapping technique is called "Casting". Just like molten metal which can be cast to any predefined form.
Java:
System.out.println((char)('A' + 1)); // will produce the letter 'B' using the mapping cast (char)
System.out.println(('A' + 1)); // will produce the number 66 because there is NO hint to the mapping
In short: the knowledge of using different JAVA objects (e.g. arraylist, hashmap, singleton, etc.) without having the fundamental CS knowledge is like a dull robot that can perform a work very fast and very precise, but it does not know exactly why it has to do that.
 
Sửa lần cuối:
  • Like
Reactions: SITUVN