Tôi hiểu được rằng bạn có thể cảm thấy bực bội hay thậm chí là nản lòng khi phải chờ đợi cuộc phỏng vấn xin việc đó. Bạn bắt đầu đếm từng ngày rồi từng giờ và từng phút cho đến khi bạn ngồi trước mặt nhà tuyển dụng để thảo luận về tương lai của bạn trong công ty. Sự lo lắng sẽ là điều hiển nhiên và bạn có thể sẽ gặp phải tình huống khó khăn mà không biết phải xử lý và trả lời thế nào. Để tránh được điều này và để có được cuộc phỏng vấn thành công, bạn nên có sự chuẩn bị sẵn sàng. Với hướng dẫn về các câu hỏi phỏng vấn Java này sẽ giúp bạn giải quyết được những điều đó.
Tôi đã phân chia thành một vài nhóm để dễ học và dễ nhớ hơn. Những câu hỏi phỏng vấn Java này (hoặc đúng hơn là câu trả lời) sẽ giúp bạn bắt đầu cuộc phỏng vấn và tìm được công việc như một chuyên viên lập trình Java ngay lập tức!
Mục lục
- 1. Hiểu Java cơ bản
- 1.1. Câu hỏi 1: Java là gì?
- 1.2. Câu hỏi 2: Java có phải hoàn toàn hướng đối tượng không?
- 1.3. Câu hỏi 3: Liệt kê một vài tính năng nổi bật của Java.
- 1.4. Câu hỏi 4: Điểm đặc biệt của Java 8 là gì?
- 1.5. Câu hỏi 5: ‘access specifiers’ trong Java là những gì?
- 1.6. Câu hỏi 6: ‘constructor’ là gì?
- 1.7. Câu hỏi 7: ‘object’ là gì?
- 1.8. Câu hỏi 8: Sự khác biệt giữa ‘equals()’ và ‘==’?
- 1.9. Câu hỏi 9: Các tham chiếu đối tượng có thể có trong Java là gì?
- 1.10. Câu hỏi 10: Sự khác nhau giữa JDK, JVM, và JRE?
- 1.11. Câu hỏi 11: ‘Garbage Collection’ được sử dụng trong Java để làm gì?
- 1.12. Câu hỏi 12: Cách để phân biệt lớp trừu tượng với giao diện?
- 1.13. Câu hỏi 13: Sự khác nhau giữa path và classpath variables?
- 1.14. Câu hỏi 14: ‘Synchronization’ là gì trong Java?
- 1.15. Câu hỏi 15: Cách để đạt được sự an toàn của luồng trong Java?
- 2. Các câu hỏi phỏng vấn Java nâng cao
- 2.1. Câu hỏi 1: Sự khác biệt giữa ‘method overloading’ và ‘method overriding’?
- 2.2. Câu hỏi 2: Đầu ra của chương trình Java này là gì?
- 2.3. Câu hỏi 3: Có thể thực hiện một chương trình mà không dùng phương thức ‘’main ()’’ hay không?
- 2.4. Câu hỏi 4: ‘runtime polymorphism’ là gì?
- 2.5. Câu hỏi 5: ‘Inheritance’ là gì?
- 2.6. Câu hỏi 6: Kể tên superclass cho tất cả các lớp khác trong Java.
- 2.7. Câu hỏi 7: ‘super’ trong Java nghĩa là gì?
- 2.8. Câu hỏi 8: Đầu ra của chương trình Java này là gì?
- 2.9. Câu hỏi 9: ‘association’ trong Java là gì?
- 2.10. Câu hỏi 10: ‘object cloning’ là gì?
- 3. Bí kíp cho cuộc phỏng vấn
- 4. Kết luận
Hiểu Java cơ bản
Chúng ta sẽ bàn về các câu hỏi phỏng vấn Java 8 và tôi sẽ cung cấp câu trả lời cho các chuyên viên phát triển phần mềm có kinh nghiệm. Mặc dù vậy, chúng ta hãy cùng bắt đầu từ những điều cơ bản trước. Cho nên việc học Java cơ bản là cần thiết để bắt đầu cho cuộc phỏng vấn với vị trí bạn mong muốn.
Ưu đãi mới nhất đang hoạt động ngay bây giờ:
EXCLUSIVE 25% OFF
On DataCamp Subscriptions
Follow the Datacamp promo code link & get an exclusive 25% OFF Datacamp subscriptions. Act now while the offer is still available!
Câu hỏi 1: Java là gì?
Đây có vẻ như là một câu hỏi khá đơn giản mà nhà tuyển dụng sẽ mong đợi một câu trả lời rõ ràng và thẳng thắn.
Java là một ngôn ngữ lập trình hướng đối tượng có tính bảo mật cao. Nó được tạo ra và phát triển năm 1991 bởi James Gosling. Java được thiết kế để thể hiện slogan của ‘’WORA’’ - ‘’Một lần viết, chạy bất cứ nơi nào’’. Java được biết đến với tính linh hoạt và chạy với hiệu suất cao.
Câu hỏi 2: Java có phải hoàn toàn hướng đối tượng không?
Đây là một trong những câu hỏi phỏng vấn Java, và câu trả lời là nó không hướng đối tượng hoàn toàn. Java sử dụng một số loại dữ liệu (char, byte, float) không phải là đối tượng.
Câu hỏi 3: Liệt kê một vài tính năng nổi bật của Java.
Tính năng quan trọng nhất đối với các lập trình viên và nhà phát triển phần mềm mới bắt đầu sự đơn giản. Sau khi đã định nghĩa được Java là gì thì đây được coi là ngôn ngữ lập trình khá dễ học khi so sánh với các ngôn ngữ lập trình khác.
Java cũng được coi là rất an toàn nhờ có trình thông dịch JVM - trình thông dịch này được cài đặt cùng với chính Java và liên tục cung cấp cho máy tính của bạn các bản cập nhật bảo mật mới nhất từ internet.
Ngoài ra, Java hoàn toàn di động. Nhờ nguyên tắc ‘’WORA’’ để lập trình Java, nên nó có thẻ được trung chuyển và áp dụng cho bất kỳ máy nào bạn thích - nó hoàn toàn linh hoạt và đa chức năng.
Câu hỏi 4: Điểm đặc biệt của Java 8 là gì?
Trong các câu hỏi phỏng vấn Java, nhiều khả năng bạn sẽ nhận được các câu hỏi kiểu so sánh. Bản cập nhật cho ngôn ngữ lập trình Java là một trong những điểm đáng chú ý hơn cả giúp bạn biết những tính năng mới nào xuất hiện từ nó.
Java 8 giới thiệu phần hỗ trợ ngôn ngữ cho String, cung cấp API Ngày / Giờ được cải tiến và tiếp tục phát triển JVM - hệ thống chịu trách nhiệm cho nhiều thứ Java, bao gồm cả bảo mật. Nhìn chung, Java 8 làm cho ngôn ngữ lập trình dễ tiếp cận hơn và phù hợp hơn với các ngôn ngữ lập trình hiện đại.
Đây có lẽ sẽ là một trong những câu hỏi phỏng vấn Java 8 chính mà bạn sẽ nhận được. Chỉ cần lưu ý rằng Java 8 là một cải tiến lớn cả về hiệu năng và bảo mật.
Câu hỏi 5: ‘access specifiers’ trong Java là những gì?
Tổng cộng có bốn access specifiers (xác định phạm vi truy cập) có thể được coi là một trong các câu hỏi phỏng vấn Java, đó là: public (công khai), private (riêng tư), protected (bảo vệ) và default (mặc định).
Public specifier cho phép truy cập vào bất kỳ lớp nào hoặc thông qua bất kỳ phương thức nào (thông qua tên của chúng). Ngược lại, private specifier chỉ cho phép truy cập trong chính lớp mà chúng chỉ định. Protected cho phép truy cập bằng cách nào đó tương quan với lớp - hoặc từ trong lớp, hoặc từ một lớp con hoặc đơn giản là từ cùng một gói. Cuối cùng, default biểu thị phạm vi tiêu chuẩn (mặc định) và chỉ cho phép truy cập từ cùng một gói.
Câu hỏi 6: ‘constructor’ là gì?
Constructor là một phần của mã khởi tạo một đối tượng cụ thể. Java có hai loại constructor - kiểu mặc định và kiểu tham số.
Câu hỏi 7: ‘object’ là gì?
Đây là thuật ngữ phổ biến khi đề cập trong các câu hỏi phỏng vấn Java. Một object (đối tượng) trong Java có trạng thái và hành vi. Định nghĩa phổ biến và dễ hiểu nhất của một đối tượng là sự thể hiện của một lớp.
Câu hỏi 8: Sự khác biệt giữa ‘equals()’ và ‘==’?
public class Equaltest {
public static void main(String[] args) {
String str1= new String(“HELLO”);
String str2= new String(“HELLO”);
if(Str1 == str2)
{
System.out.println("String 1 == String 2 is true");
}
else
{
System.out.println("String 1 == String 2 is false");
String Str3 = Str2;
if( Str2 == Str3)
{
System.out.println("String 2 == String 3 is true");
}
else
{
System.out.println("String 2 == String 3 is false");
}
if(Str1.equals(str2))
{
System.out.println("String 1 equals string 2 is true");
}
else
{
System.out.prinltn("String 1 equals string 2 is false");
}
}}
Câu hỏi 9: Các tham chiếu đối tượng có thể có trong Java là gì?
Trong số tất cả các câu hỏi phỏng vấn Java, câu hỏi này cũng khá dễ hiểu. Tất cả các tham chiếu đối tượng đều không có giá trị (null).
Câu hỏi 10: Sự khác nhau giữa JDK, JVM, và JRE?
JDK là một bộ công cụ phát triển Java (Java Development Kit). Nó là công cụ chính trong Java được sử dụng để biên dịch các chương trình của ngôn ngữ này. Trong gói, nó chứa tất cả các công cụ cần thiết để sử dụng.
Như đã đề cập trước đó - JVM là viết tắt của Java Virtual Machine (Máy ảo Java). Nó là một cỗ máy tạo ra môi trường trong đó Java bytecode có thể hoạt động chính xác.
JRE là Java Runtime Environment (môi trường thực thi Java). Đây là loại môi trường mà JVM cung cấp - nó cho phép Java bytecode chạy và hoạt động đúng.
Câu hỏi 11: ‘Garbage Collection’ được sử dụng trong Java để làm gì?
Đối với câu hỏi phỏng vấn Java này, bạn cần hiểu mục đích của tính năng này là xác định và loại bỏ các đối tượng không còn cần thiết cho ứng dụng để tạo điều kiện cho các tài nguyên được thu hồi và tái sử dụng.
Câu hỏi 12: Cách để phân biệt lớp trừu tượng với giao diện?
- Các lớp trừu tượng có thể có các phương thức triển khai trong khi các giao diện thì không thể.
- Một lớp chỉ có thể mở rộng một lớp trừu tượng nhưng nó có thể được thực hiện trên nhiều giao diện.
- Bạn có thể chạy một lớp trừu tượng nếu nó có phương thức chính () nhưng không có giao diện.
Câu hỏi 13: Sự khác nhau giữa path và classpath variables?
Đường dẫn (path) là một biến môi trường được HĐH sử dụng để định vị các tệp thực thi. Vì lý do này, chúng ta cần thêm vị trí thư mục vào biến đường dẫn (path variable) khi Java được cài đặt hoặc để làm cho HĐH tìm thấy bất kỳ thực thi nào.
Classpath dành riêng cho việc lập trình Java và được thực thi sử dụng để định vị các tệp lớp. Bạn có thể cung cấp một vị trí đường dẫn trong khi chạy ứng dụng Java và nó có thể là một thư mục, tệp ZIP hoặc tệp JAR.
Câu hỏi 14: ‘Synchronization’ là gì trong Java?
Đây là một thuật ngữ khác sẽ có thể có trong các câu hỏi phỏng vấn Java. Nó là một tham chiếu đa luồng. Một khối mã được đồng bộ hóa có thể được thực thi chỉ bởi một luồng tại một thời điểm. Synchronization là một quá trình giữ cho tất cả các luồng đồng thời được thực thi trong đồng bộ hóa. Quá trình đồng bộ hóa cho phép tránh các lỗi nhất quán bộ nhớ gây ra do chế độ xem không nhất quán của bộ nhớ dùng chung. Khi một phương thức được khai báo là đồng bộ hóa, luồng sẽ giữ màn hình cho đối tượng phương thức đó. Nếu một luồng khác đang thực thi phương thức được đồng bộ hóa thì luồng đó sẽ bị chặn cho đến khi luồng kia giải phóng màn hình.
Câu hỏi 15: Cách để đạt được sự an toàn của luồng trong Java?
Bạn có thể đạt được nó bằng cách:
- Đồng bộ hóa
- Các lớp đồng thời nguyên tử
- Triển khai giao diện khóa đồng thời
- Sử dụng một từ khóa dễ biến mất
- Sử dụng các lớp bất biến
- Các lớp an toàn luồng
Các câu hỏi phỏng vấn Java nâng cao
Câu hỏi 1: Sự khác biệt giữa ‘method overloading’ và ‘method overriding’?
Một trong những câu hỏi phỏng vấn Java nâng cao đầu tiên có thể là câu hỏi này. Trong trường hợp ‘’method overloading’’ (phương thức nạp chồng), các phương thức trong cùng một lớp chia sẻ cùng một tên nhưng các tham số khác nhau. Điều này liên quan đến các phần mở rộng của hành vi phương thức hơn. Ngược lại, ”method overriding”(phương thức ghi đè) lớp con có các phương thức cùng tên và tham số. Mục đích ở đây là để thay đổi hành vi của phương thức hiện có.
Đây là ví dụ phương thức nạp chồng:
class Adder {
Static int add(int x, int y)
{
return x+y;
}
Static double add( double x, double y)
{
return x+y;
}
public static void main(String args[])
{
System.out.println(Adder.add(33,33));
System.out.println(Adder.add(16.4,16.8));
}}
Và đây là phương pháp ghi đè:
class Dog {
void run(){
System.out.println(“dog is sleeping”);
}
Class Doberman extends Dog{
void run()
{
System.out.prinltn(“doberman is sleeping at night”);
}
public static void main( String args[])
{
Dog b=new Doberman();
b.run();
}
}
Câu hỏi 2: Đầu ra của chương trình Java này là gì?
public class Test
{
Test(int x, int y)
{
System.out.println("x = "+x+" y = "+y);
}
Test(int x, float y)
{
System.out.println("x = "+x+" y = "+y);
}
public static void main (String args[])
{
byte x = 30;
byte y = 65;
Test test = new Test(x,y);
}
}
Câu trả lời chính xác là:
a = 30 b = 65
Câu hỏi 3: Có thể thực hiện một chương trình mà không dùng phương thức ‘’main ()’’ hay không?
Với câu hỏi phỏng vấn Java này, câu trả lời là có. Một trong những cách phổ biến nhất để thực hiện một chương trình như vậy là sử dụng một khối tĩnh static block.
Câu hỏi 4: ‘runtime polymorphism’ là gì?
“Runtime polymorphism’’ là một quá trình trong đó một lệnh gọi cụ thể được đưa ra cho một phương thức bị ghi đè sẽ được giải quyết trong thời gian chạy thay vì thời gian biên dịch. Dưới đây là một ví dụ:
class Tree {
void run()
{
System.out.println(“tree is standing”);
}
}
class Willow extends Tree {
void run()
{
System.out.prinltn(“willow is standing on a hill”);
}
public static void main(String args[])
{
Tree b= new Willow(); //upcasting
b.run();
}
}
Câu hỏi 5: ‘Inheritance’ là gì?
Trong lập trình Java, tính kế thừa (inheritance) được hiểu là khi một đối tượng có được các thuộc tính và tham số của một đối tượng khác (thuộc một lớp khác). Phương thức ghi đè được thảo luận ở trên sử dụng điều này - ý tưởng chính của kế thừa là bạn có thể xây dựng các lớp mới trên các lớp đã tồn tại. Có năm loại kế thừa khác nhau, nhưng Java chỉ hỗ trợ bốn loại (tính đa kế thừa không được hỗ trợ). Tại sao đa kế thừa lại không được hỗ trợ? Một lý do cụ thể được đưa ra là để đơn giản hóa chương trình. Đây là một lưu ý quan trọng mà bạn cần phải nhớ trong các câu hỏi phỏng vấn Java.
Câu hỏi 6: Kể tên superclass cho tất cả các lớp khác trong Java.
Đây là một trong những câu hỏi dễ và cốt lõi về Java. Superclass trong Java là lớp đối tượng (object class).
Câu hỏi 7: ‘super’ trong Java nghĩa là gì?
‘’Super’’ trong Java được sử dụng như một tham chiếu để chỉ đến một đối tượng trỏ đến một đối tượng của lớp mẹ liền kề. Lệnh cũng có thể được sử dụng để gọi một phương thức và hàm tạo của lớp mẹ liền kề.
Câu hỏi 8: Đầu ra của chương trình Java này là gì?
class Animal
{
public Animal()
{
System.out.println("Animal class constructor called");
}
}
public class Zebra extends Animal
{
public Zebra()
{
System.out.println("Zebra class constructor called");
}
public static void main (String args[])
{
Zebra e = new Zebra();
}
}
Câu trả lời:
Animal class constructor called
Zebra class constructor called
Đây là những câu hỏi phỏng vấn Java rất phổ biến. Bạn luôn phải chú ý đến các biến – chúng sẽ giúp bạn có câu trả lời cuối cùng.
Câu hỏi 9: ‘association’ trong Java là gì?
Đây là một trong những câu hỏi phỏng vấn Java được hỏi khá nhiều, thoạt đầu có vẻ không giống một câu hỏi ‘’nâng cao’’. Tuy nhiên, những thứ như aggregation (tập hợp) và composition (thành phần) lại bắt nguồn từ association (sự liên kết), vì vậy việc hiểu thuật ngữ này là khá quan trọng.
Association là khi tất cả các đối tượng có vòng đời và không có chủ sở hữu cụ thể tồn tại. Nó có thể khác nhau giữa ‘’one” và ‘’many”.
- Dễ sử dụng
- Cung cấp nội dung chất lượng
- Minh bạch giá cả
- Chứng chỉ miễn phí sau hoàn thành
- Tập trung vào các kỹ năng khoa học dữ liệu
- Thời gian học tập linh hoạt
- Thiết kế đơn giản (không có thông tin không cần thiết)
- Khóa học chất lượng cao (ngay cả khóa miễn phí)
- Đa dạng tính năng
- Chương trình nanodegree
- Phù hợp với doanh nghiệp
- Chứng chỉ hoàn thành trả phí
- Được tạo dựng tốt trong ngành
- Đa dạng các tính năng để lựa chọn
- Các khóa học trình độ đại học
- Các khóa học trình độ đại học
- Phù hợp với doanh nghiệp
- Trả phí cho chứng chỉ hoàn thành
Câu hỏi 10: ‘object cloning’ là gì?
Trong lập trình Java, lệnh ‘’object cloning’’ (nhân bản đối tượng) được sử dụng để tạo một bản sao giống hệt của đối tượng. Điều này được thực hiện bằng cách sử dụng phương thức clone () từ lớp Object class.
Bí kíp cho cuộc phỏng vấn
Để có một cuộc phỏng vấn diễn ra tốt đẹp, bạn cần phải đảm bảo về sức khỏe một cách tốt nhất bằng cách ngủ ngon và ăn sáng trước buổi phỏng vấn. Chắc chắn là bạn không nên thức dậy lúc 3 giờ sáng để xem lại các câu hỏi phỏng vấn Java cơ bản khi mà cuộc phỏng vấn diễn ra vào lúc 8 giờ sáng ngày hôm sau. Bên cạnh đó, bạn không cần phải quá căng thẳng - cố gắng không nghĩ về cuộc phỏng vấn ít nhất 24 giờ cho đến khi kết thúc - chỉ sửa lại các ghi chú của bạn trên đường đến cuộc phỏng vấn.
Nên thoải mái khi bạn phỏng vấn vì nhà tuyển dụng có thể nhìn ra sự lo lắng của bạn. Họ có thể nghĩ rằng bạn đang lo lắng vì phải che giấu điều gì đó - có lẽ là thiếu kỹ năng?
Bạn có biết?
Bạn đã bao giờ băn khoăn nền tảng học online nào tốt nhất cho sự nghiệp của bạn chưa?
Kết luận
Với nhu cầu lập trình viên ngày càng tăng, nhiều công ty và nhà tuyển dụng cá nhân đang tìm kiếm các chuyên gia có kinh nghiệm trong lĩnh vực mã hóa máy tính. Vì Java là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới (nhờ tính linh hoạt, bảo mật và đơn giản của nó), nhiều lập trình viên chọn học Java cơ bản. Trong hướng dẫn này, tôi đã chỉ ra một số câu hỏi và câu trả lời phỏng vấn Java cốt lõi. Có rất nhiều câu hỏi phỏng vấn Java mà bạn có thể gặp phải trong quá trình phỏng vấn xin việc, nhưng ít nhất nếu học Java cơ bản từ trước bạn sẽ biết con đường đi sẽ như thế nào. Đừng quên tham gia các khóa học Bitdegree và trang hướng dẫn của BitDegree để khám phá thêm về khoa học máy tính.