Tổng-hợp-câu-hỏi-pv-Java

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

1.

Hỏi về dự án củ
2. Kể lại quá trình làm app và tét của bản thân ?
3. Hỏi về mô hình Agile Scrum ? Quy trình làm app hiện tại là gì ?

Java Core

1. Sự khác biệt giữa JDK, JRE và JVM

DK là viết tắt của Java Development Kit – Bộ công cụ phát triển Java. JDK là
một bộ công cụ phát triển phần mềm được dùng để phát triển ứng dụng
trong Java.

JRE là viết tắt của Java Runtime Environment – Môi trường thực thi Java. JRE
bao gồm JVM, thư viện và các thành phần bổ sung để chạy các ứng dụng viết
bằng ngôn ngữ Java.

JVM là viết tắt của Java Virtual Machine – Máy ảo Java. JVM là máy ảo được sử
dụng để chạy các chương trình Java. Cách hoạt động của JVM: Khi chương
trình Java được chạy, trình biên dịch sẽ dịch Java code thành bytecode và sau
đó JVM sẽ thực hiện nhiệm vụ của mình: thông dịch bytecode thành mã máy
cho máy tính thực hiện lệnh.

2. Có bao nhiêu vùng nhớ được cấp phát bởi JVM

Class(Method) Area : Vùng lưu trữ các cấu trúc trên mỗi lớp như nhóm hằng
số thời gian chạy, trường, dữ liệu phương thức và mã cho các phương thức.

Heap: Đây là vùng dữ liệu thời gian chạy trong đó bộ nhớ được phân bổ cho
các đối tượng.

Stack: Java Stack lưu trữ các khung. Nó chứa các biến cục bộ và kết quả
một phần, và đóng một phần trong việc gọi và trả về phương thức. Mỗi
luồng có một ngăn xếp JVM riêng, được tạo cùng lúc với luồng. Một khung
mới được tạo ra mỗi khi một phương thức được gọi. Một khung bị phá hủy
khi việc gọi phương thức của nó hoàn thành.

Thanh ghi bộ đếm chương trình: Thanh ghi PC (bộ đếm chương trình) chứa
địa chỉ của lệnh máy ảo Java hiện đang được thực thi.
Ngăn xếp phương thức gốc: Nó chứa tất cả các phương thức riêng được sử
dụng trong ứng dụng.

3) Constructor là gì ?
Trong Java, constructor là một phương thức đặc biệt, nó được dùng
để khởi tạo và trả về đối tượng của lớp mà nó được định nghĩa.
Constructor sẽ có tên trùng với tên của lớp mà nó được định nghĩa và
chúng không được định nghĩa một kiểu giá trị trả về

4)Phương thức khởi tạo có kế thừa được không


- Không
5) Phương thức khởi tạo có thể khai báo như là hằng số không
- Không
6) Biến static là gì?
Biến static là biến giá trị của nó sẽ được lưu trữ trực tiếp trong bộ nhớ
và không ảnh hưởng bởi scope code và có thể truy cập giá trị của nó
bất cứ lúc nào ở bất kỳ class nào.
7) Lập trình hướng đối tượng là gì?

Lập trình hướng đối tượng (OOP) là một phương pháp lập trình máy tính tổ
chức thiết kế phần mềm xung quanh dữ liệu hoặc đối tượng thao tác, thay vì
chức năng và logic để thao tác chúng.

8) Các tính chất của hướng đối tượng


- Tính đóng gói
- Tính trừu tượng
- Tính kế thừa
- Tính đa hình
9) Tại sao java không phải là lập trình hướng đối tượng 100%
Java không phải là ngôn ngữ hướng đối tượng hoàn toàn vì Java có sử dụng
cả các loại dữ liệu khác như byte, char, float, v.v.
10) Khác biệt giữa equals() và == trong Java

 Equals() là một phương thức so sánh 2 object tuy nhiên chỉ so sánh về mặt
giá trị của chúng. Trong phép so sánh equals(), nếu đúng sẽ trả về true, sai
sẽ trả về false.
 == là phép so sánh 2 object có đang cùng trỏ vào một ô nhớ hay không.
Trong phép ==, kết quả đúng sẽ trả về true, sai về false.
11) Package trong Java là gì? Liệt kê những ưu điểm của các
package

Package trong Java là một nhóm các lớp (class), giao diện (interface) và các
package con tương tự. Package thường được chia thành 2 loại:

 Package được dựng sẵn


 Package do người dùng định nghĩa

Ưu điểm của các package:

 Tổ chức file (class, interface) theo một hệ thống để dễ dàng phân loại file.
 Phân quyền truy cập giúp xem các class thuộc package nào khi được gọi ở
phần access modifier.
 Dễ dàng chọn lọc khi import. Dùng lệnh import java.sql khi import tất cả
các class. Dùng lệnh import.util.regex khi sử dụng class nằm trong package
regex.

12) Khác biệt giữa bộ nhớ Stack và Heap

Về kích thước vùng nhớ

 Bộ nhớ Stack: có kích thước cố định tùy thuộc vào hệ điều hành
 Bộ nhớ Heap: có kích thước không cố định, có thể tăng giảm tùy thuộc vào
nhu cầu

Về đặc điểm vùng nhớ

 Bộ nhớ Stack: Vùng nhớ được quản lý bằng hệ điều hành, dữ liệu được lưu
sẽ tự động hủy sau khi hàm thực hiện xong nhiệm vụ của mình.
 Bộ nhớ Heap: Vùng nhớ được quản lý bằng lập trình viên và các dữ liệu sẽ
không bị hủy sau khi hàm thực hiện xong và lập trình viên phải tự hủy
vùng nhớ.

Lỗi xảy ra với vùng nhớ

 Bộ nhớ Stack: Có khả năng vượt quá dung lượng lưu trữ vì dung lượng bộ
nhớ Stack chỉ có hạn.
 Bộ nhớ Heap: Cũng có khả năng tràn vùng nhớ nếu bạn liên tục cấp phát
vùng nhớ mà không giải phóng thường xuyên.

13) Phân biệt lỗi RunTime và Compile


Runtime : là lỗi xảy ra trong quá trình chương trình đang chạy và phát sinh lỗi
Compile : là lỗi xảy ra khi biên dịch code

14)Từ khóa super trong hướng đối tượng


Super trong Java là một biến tham chiếu, dùng để tham chiếu đến đối tượng
của lớp cha gần nhất một cách trực tiếp.

15) Mô tả sự khác biệt giữa String, StringBuilder và StringBuffer

 String không thể thay đổi và không thể có class con


 StringBuffer và StringBuilder có thể thay đổi được
 StringBuffer và StringBuilder giống nhau, chỉ có điểm khác biệt khi sử dụng
đa luồng
 Về tốc độ xử lý: StringBuilder là tốt nhất sau đó đến StringBuffer và String.

16) Sự khác biệt giữa từ khóa break và continue

Từ khóa break dùng để thoát ra khỏi vòng lặp ngay lập tức và chuyển sang
câu lệnh tiếp theo, ở ngoài vòng lặp vừa kết thúc.

Từ khóa continue được dùng để chỉ việc vòng lặp kế tiếp sẽ được thực hiện.

17) Có mấy loại access modifier trong hướng đối tượng? Phân biệt
sự khác nhau giữa chúng?

 Public: Có thể truy cập ở bất cứ đâu.


 Private: Chỉ có thể truy cập trong cùng class.
 Default: Có thể truy cập trong cùng class và cùng package.
 Protected: Có thể truy cập trong cùng class, package và ngoài package bởi
lớp con.

18) Tính đa hình là gì ?


Các đối tượng được thiết kế để chia sẻ các hành vi và chúng có thể có nhiều
dạng. Chương trình sẽ xác định ý nghĩa hoặc cách sử dụng nào là cần thiết
cho mỗi lần thực thi đối tượng đó từ lớp cha, giúp giảm nhu cầu sao chép mã.

Sau đó, một lớp con được tạo ra để mở rộng chức năng của lớp cha. Tính đa
hình cho phép các loại đối tượng khác nhau đi qua cùng một giao diện.

19) Phân biệt sự khác nhau giữa Override và Overload

 Override là ghi đè, các phương thức có cùng tham số đầu vào nhưng
được viết ở các lớp khác nhau (lớp cha, lớp con).
 Overload là nạp chồng, các phương thức khác tham số truyền và
được viết ở cùng một lớp.

20) Sự khác biệt giữa PreparedStatement và Statement và callable


 Statement – Sử dụng để thực hiện các câu truy vấn SQL tĩnh
 PreparedStatement – Sử dụng để thực hiện các câu truy vấn SQL động hoặc có
tham số
 CallableStatement – Sử dụng để thực thi các stored procedures (Hiểu nôm na là
các lệnh định nghĩa sẵn trên database)

21) Lớp trừu tượng có thể khởi tạo được không ?

Không

Lớp final là lớp gì?

Lớp final là lớp mà trong đó các phương thức được tạo ra không thể ghi
đè (override) và lớp final không thể bị kế thừa ( tức là không lớp nào kế
thừa lại lớp đó nữa)

22) Dependence Injection là gì ?

https://itnavi.com.vn/blog/dependency-injection-la-gi
23) Bean là gì ? Nếu các Scope và ý nghĩa scope trong bean

Spring Bean là các object trong Spring Framework, được khởi tạo thông qua Spring
Container. Bất kỳ class Java POJO nào cũng có thể là Spring Bean nếu nó được cấu
hình và khởi tạo thông qua container bằng việc cung cấp các thông tin cấu hình (các
file config .xml, .properties..)
Có 5 scope được định nghĩa cho Spring Bean:

 Singleton: Chỉ duy nhất một thể hiện của bean sẽ được tạo cho mỗi container. Đây
là scope mặc định cho spring bean. Khi sử dụng scope này cần chắc chắn rằng các
bean không có các biến/thuộc tính được share.
 Prototype: Một thể hiện của bean sẽ được tạo cho mỗi lần được yêu cầu(request)
 Request: giống với prototype scope, tuy nhiên nó dùng cho ứng dụng web, một
thể hiện của bean sẽ được tạo cho mỗi HTTP request.
 Session: Mỗi thể hiện của bean sẽ được tạo cho mỗi HTTP Session
 Global-Session: Được sử dụng để tạo global sesion bean cho các ứng dụng
Portlet.

24) Mô tả cách thức hoạt động của JWT

25) @Transaction dùng để làm gì ?


26) Sự khác biệt giữa memcache và redis cached

27) Sự khác nhau giữa where và having trong sql

 Mệnh đề WHERE dùng để kiểm tra các điều kiện cho các thuộc tính của bảng,
trả kết quả đối chiếu với từng dòng.
 Mệnh đề HAVING được dùng để giới hạn nhóm các hàng trả về trong bảng,
trả kết quả đối chiếu cho các nhóm (Sum, Count, Average,…) được tạo bởi
Group by.

28) Sự khác nhau giữa Delete và Truncate trong sql

 Khi chạy lệnh DELETE thì SQL sẽ log lại từng dòng đã xóa
vào transaction log, vì thế nên khi bạn tạo 1 record mới, giá trị
của id sẽ không bắt đầu từ 1 mà sẽ có giá trị n+1 với n là giá trị của
record cuối cùng được tạo.
 Khi chạy lệnh TRUNCATE thì SQL sẽ xóa hết dữ liệu của bảng và
reset transaction log, vì thế khi tạo 1 record mới, giá trị cua id sẽ
bắt đầu từ 1, đây cũng chính là khác biệt lớn nhất
của DELETE và TRUNCATE.

 TRUNCATE không thể chạy được khi bảng bạn định xóa
có foreign_key (nếu bảng đó có foreign_key trỏ đến chính nó thì
bạn có thể xóa bình thường)
 Dữ liệu bị xóa bởi DELETE có thể restored được còn TRUNCATE thì
không.
 Tùy vào từng trường hợp thì bạn sẽ
dùng DELETE hoặc TRUNCATE, TRUNCATE sẽ luôn nhanh hơn vì nó tiêu
tốn ít bộ nhớ hơn, các bạn có thể cân nhắc điều này khi cần xóa 1
bảng lớn vs nhiều record.

29) View trong SQL là gì ?

View là các câu truy vấn SELECT được lưu lại như là một table và sau đó ta có thể truy vấn
dữ liệu từ view như thực hiện với table.

30) Trigger trong SQL dùng để làm gì ?

- Trigger là tự động thực thi các câu lệnh SQL hoặc Function/Procedure
sau hoặc trước các câu lệnh INSERT, UPDATE, DELETE.

- Thường dùng vào các chức năng lưu lại các sự thay đổi của dữ liệu.

- Trigger tự động thực thi sau các câu lệnh tương tác bảng nên sẽ tăng
thêm thời gian thực thi.

31) Nếu các loại trigger trong sql ?

 Trigger dữ liệu ngôn ngữ thao tác (Trigger DML) kích hoạt khi xảy ra
sự kiện INSERT , UPDATE và DELETE dữ liệu xảy ra trên bảng.
 Trigger dữ liệu ngôn ngữ định nghĩa (Trigger DDL) kích hoạt khi xảy
ra các câu lệnh CREATE , ALTER và DROP .
 Trigger đăng nhập (Trigger Logon) kích hoạt khi xảy ra các sự
kiện LOGON .
32) Làm cách nào để Join bảng trong sql ?

33) Sự khác nhau giữa class và abtract class

34) super trong hướng đối tượng có ý nghĩa gì

Từ khóa super trong java là một biến tham chiếu được sử dụng để tham
chiếu trực tiếp đến đối tượng của lớp cha gần nhất.

Bất cứ khi nào bạn tạo ra instance(thể hiển) của lớp con, một instance của lớp
cha được tạo ra ngầm định, nghĩa là được tham chiếu bởi biến super.

35) Trong tính kế thừa class cháu kế thừa các thuộc tính của class
tổ tiên hay không

Được

36) @Autowire trong spring boot dùng để làm gì ?

để tự động tiêm phụ thuộc vào các bean khác. Nó cho phép Spring
giải quyết và inject các collaborating beans vào bean của chúng ta

37) Sự khác biệt giữa mảng và Collection

38) Sự khác biệt giữa excute, excuteQuery và excuteUpdate

 Execute (làm việc đa năng): phương thức này sử dụng khi ta không rõ
kiểu của statement.
 ExecuteQuery (chỉ lấy hàng trong kho): sử dụng chủ yếu cho các câu query
select.
 ExecuteUpdate (chỉ thêm hàng, hủy hàng, cập nhật hàng): phương thức này sử
dụng cho các câu insert, update, delete, chỉ trả về giá trị row count hoặc
0 cho các câu SQL không trả về kết quả gì.
39) Như thế nào gọi là microservice

- Microservices là các module trong hệ thống được chia thành nhiều services nhỏ.
Mỗi service sẽ thực hiện các chức năng chuyên biệt, như quản lý đơn hàng hoặc
quản lý khách hàng, … và được đặt tại một server riêng, cho phép nâng cấp chỉnh
sửa một cách độc lập. Các server này có thể giao tiếp thông qua các phương thức
như gRPC, Rest API, lambda và không bị ảnh hưởng bởi nhau.

40) Sự khác nhau giữa memcache và Redis cache

You might also like