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

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

Câu 4: Regular Expressions là gì? Pattern và Matcher ?
 
Regular Expression hay còn gọi là biểu thức chính quy dùng để chỉ cách thức chúng ta nhận biết, kiểm tra một chuỗi (biểu thức) có đúng như định dạng chúng ta mong muốn hay không.



Trong java hiện nay có 2 lớp là Pattern và Matcher (java.util.regex) giúp ta xử lý các vấn đến liên quan đến regular expression.
+ Pattern là lớp dùng để biên dịch biểu thức, kết quả biên dịch để tạo ra đối tượng thuộc lớp  Matcher để kiểm tra chuổi ký tự có đúng biểu thức đó
+ Matcher là lớp được tạo ra từ Pattern và dùng để thực hiện những việc như match, tìm kiếm.

Câu 5: Có bao nhiu loại exception. Exception kế thừa từ đối tượng nào? 
Có 3 loại : Checked, Unchecked, Error. Lớp Throwable là lớp cha của tất cả các ngoại lệ và lỗi trong ngôn ngữ Java 
Có hai loại ngoại lệ chính trong ngôn ngữ lập trình Java: 

Ngoại lệ có kiểm soát (Checked Exception): java.lang.Exception 
Ngoại lệ có kiểm soát được tạo ra trong các tình huống thực hiện bình thường của một chương trình. Một số ví dụ về ngoại lệ có kiểm soát là – yêu cầu một tập tin không có, người dùng nhập liệu sai, và mạng hỏng. Những ngoại lệ này được xử lý để tránh các lỗi biên dịch. Nếu một ngoại lệ xảy ra trong quá trình thực hiện phương thức, phương thức có thể điều quản ngoại lệ hoặc chuyển ngoại lệ cho phương thức đang gọi để chỉ rõ vấn đề xảy ra. Phương thức đang gọi lại có thể điều quản ngoại lệ hoặc chuyển cho phương thức đang gọi nó. Quá trình này có thể tiếp tục đến khi ngoại lệ đạt đến đỉnh của luồng (thread) và luồng bị kết thúc thực hiện. Kỹ thuật này gọi là Call-stack. Ưu điểm chính của kỹ thuật là nhà phát triển có thể đặt các đoạn mã xử lý lỗi ở bất cứ vị trí nào họ muốn. 

Ngoại lệ không kiểm soát (Unchecked Exception): java.lang .RuntimeException 
Ngoại lệ không kiểm soát được tạo ra trong các tình huống được xem là không thể phục hồi đối với chương trình. Ví dụ thông thường về các tình huống là hành động truy nhập một phần tử nằm ngoài mảng. Một ứng dụng không được yêu cầu kiểm soát các loại ngoại lệ kiểu này. Ngoại lệ thực thi (runtime exception) cũng là ví dụ của ngoại lệ không kiểm soát. Thường thì chúng phát sinh do các lỗi logic (logical bugs). Ngoại lệ không kiểm soát phát sinh do các vấn đề môi trường hoặc các lỗi không thể được phục hồi và được gọi là Error (lỗi). Sử dụng hết bộ nhớ được cấp phát của chương trình là ví dụ về lỗi (error). Khi bạn gọi một phương thức mà phương thức đó quăng ra ngoại lệ thuộc loại Checked Exception thì bạn phải xử lý lỗi bằng cách sử dụng try{…}catch{} hoặc quăng ra ngoài phương thức chứa đoạn mã(throws Exception). Ngược lại nếu đó là Unchecked Exception (tương tự các ngôn ngữ khác như C#, PHP, JavaScript…), thì bạn có thể không cần phải xử lý lỗi này mà chương trình vẫn được dịch tốt (tất nhiên lỗi sẽ xảy ra lúc chạy nếu có).
 Xét về mặt phân cấp thừa kế thì Unchecked Exception được dẫn suất từ RuntimeException 

Câu 6: Throw và throws

Throw: "quăng ra", có thể "quăng " ở bất kỳ dòng nào trong phương thức.
Throws: "Ném đi", chỉ có phương thức mới sử dụng throws, ném đi cho thằng khác xử lý
void test(String txt) throws NumberFormatException, Exception{
Integer.parseInt(txt);//NumberFormatException quăng ra ở đây nếu txt không phải là số
}
phương thức nào gọi phương thức test() phải try catch xử lý cả 2 NumberFormatException, Exception vì phương thức test() throws đi

No comments:

Post a Comment