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

1)Em hiểu như thế nào về OOP trong Java?

2)Kể tên các loại Design Pattern em biết?

3)Có ghi đè được hàm Static được không ? vì sao

4)Phân biệt abstract class và interface

– Abstract class và interface đều dùng cho bài toán quản lý đối tượng và thể hiện tính trừu tượng.

  • Abstract: Dùng để quản lý các đối tượng cùng thuộc tính.
  • Interface: Dùng để quản lý các đối tượng không cùng thuộc tính.

– Abstract class: là một class cha cho tất cả các class có cùng bản chất. Bản chất ở đây được hiểu là kiểu, loại, nhiệm vụ của class. Hai class cùng hiện thực một interface có thể hoàn toàn khác nhau về bản chất. Hiểu đơn giản như một thằng con (child class) chỉ có thể là con của một thằng cha, có tính cách giống cha (abstract class) nó.

– Interface: là một chức năng mà bạn có thể thêm và bất kì class nào. Từ chức năng ở đây không đồng nghĩa với phương thức (hoặc hàm). Interface có thể bao gồm nhiều hàm/phương thức và tất cả chúng cùng phục vụ cho một chức năng.

https://viblo.asia/p/so-sanh-interface-va-abstract-trong-lap-trinh-huong-doi-tuong-63vKjpk6l2R

5)Java có hỗ trợ đa kế thừa không? Không

6)Mình khởi tạo 2 constructor (biết đã đã có sẵn 1 constructor ) hỏi có tổng cộng có mấy constructor.

-> Có 2 vì default constructor sẽ mất đi

7)Nêu sự khác nhau giữa Overriding và Overloading.

Nạp chồng – Overloading :
– các phương thức nằm trong cùng 1 lớp , có cùng tên với nhau nhưng có danh sách đối số khác nhau được gọi là các phương thức nạp chồng.
Ghi đè – override :
– là Phương thức đã xuất hiện ở lớp cha và xuất hiện tiếp ở lớp con (nhưng sẽ thêm thuộc tính).
vd : động vật (lớp cha) có phg thức move thì lớp con là lớp chim ghi đè thành move( bay được)

8)Khi nào thì cần xây dựng 1 class làm abstract.

Khi có nhiều lớp có cùng thuộc tính , phương thức à xây dựng 1 lớp cha làm abstract.

9)Khai báo thuộc tính là protected thì có chia sẻ được ở khác gói không?

Có , nếu lớp con khác gói với lớp cha, vẫn dùng protected được.

get/set là 2 loại hành vi có ý nghĩa như thế nào? Tại sao k thể truy cập thẳng đến các thuộc tính của đối tượng mà phải thông qua get/set?

Set : truy cập và gán giá trị thuộc tính đối tượng,

Get: Lấy ra giá trị thuộc tính của đối tượng.

Get/set thể hiện sự bảo vệ  tính toàn vẹn của dữ liệu, nếu không dùng get/set mình sẽ bị đối tượng khác  toàn quyền.

10)1 thuộc tính có thêm static final thì có ý nghĩa gì ?

Ý nghĩa của static là khởi tạo 1 thuộc tính của đối tượng không phụ thuộc vào các thực thể của đối tượng đó.

Ví dụ: Đối tượng ConMeo có 1 thuộc tính static là:

static String TIENG_KEU = “Meo Meo”;

=> thuộc tính TIENG_KEU sẽ là thuộc tính chung cho tất cả các thực thể được khởi tạo từ đối tượng ConMeo như:

ConMeo meoVang;

ConMeo meoDen;

=> meoVang và meoDen đều có chung thuộc tính TIENG_KEU.

– Khi sử dụng thuộc tính static ta chỉ cần gọi như sau: ConMeo.TIENG_KEU

– final là biểu thị thuộc tính là hằng, có nghĩa là giá trị thuộc tính sẽ không thể được gán bằng 1 giá trị khác sau khi khởi tạo

11) Sự khác nhau giữa StringBuider và StringBuffer

Sự khác nhau giữa StringBuffer và StringBuilder trong java được thể hiện trong bảng sau:

No. StringBuffer StringBuilder
1) StringBuffer là đồng bộ (synchronized) tức là luồng an toàn. Điều này có nghĩa là không thể có 2 luồng cùng truy cập phương thức của lớp StringBuffer đồng thời. StringBuilder là không đồng bộ (non-synchronized)tức là luồng không an toàn. Điều này có nghĩa là có 2 luồng cùng truy cập phương thức của lớp StringBuilder đồng thời.
2) StringBuffer không hiệu quả bằng StringBuilder. StringBuilder hiệu quả hơn StringBuffer.

http://viettuts.vn/java-string/stringbuffer-va-stringbuilder-trong-java

12) Tham trị và tham chiếu trong java

https://itphutran.com/phan-biet-tham-chieu-va-tham-tri-trong-java/

https://itphutran.com/phan-biet-tham-chieu-va-tham-tri-trong-java/

12) Sự khác nhau giữa JDK, JRE và JVM

Tìm hiểu JVM

JVM (viết tắt của Java Virtual Machine) là một thiết bị trừu tượng (ảo) có thể giúp máy tính chạy các chương trình Java. Nó cung cấp môi trường runtime mà trong đó Java Bytecode có thể được thực thi.

JVM là có sẵn cho nhiều nền tảng (Windows, Linux…). JVM, JRE và JDK là phụ thuộc nền tảng, bởi vì cấu hình của mỗi OS (hệ điều hành) là khác nhau. Nhưng, Java là độc lập nền tảng.

Các nhiệm vụ chính của JVM

  • Tải code
  • Kiểm tra code
  • Thực thi code
  • Cung cấp môi trường runtime

Cấu trúc của JVM

jvm

Tìm hiểu JRE

JRE

JRE (là viết tắt của Java Runtime Environment) được sử dụng để cung cấp môi trường runtime. Nó là trình triển khai của JVM. JRE bao gồm tập hợp các thư viện và các file khác mà JVM sử dụng tại runtime. Trình triển khai của JVM cũng được công bố bởi các công ty khác ngoài Sun Micro Systems.

Tìm hiểu JDK

JRE

 

JDK (là viết tắt của Java Development Kit) bao gồm JRE và các Development Tool.

 

http://viettuts.vn/interview/list-cau-hoi-phong-van-java-core-4

 

  1. Câu hỏi về code

Không dùng hàm reverse hãy viết hàm đảo ngược chuỗi kí tự, dùng 1 vòng for (VD: trung à gnurt)

Tham khảo

http://www.journaldev.com/java-interview-questions