Khái niệm Hướng đối tượng (OOP) và các tính chất của hướng đối tượng trong Java là một phần khó nắm rõ nhất.
Để hiểu được rõ và trả lời được các câu hỏi lập trình hướng đối tượng trong Java yêu cầu các lập trình viên phải hiểu rõ lý thuyết cùng với có kinh nghiệm xây dựng các chương trình hướng đối tượng một cách thuần thục.
Về cơ bản, trong một ngôn ngữ hướng đối tượng như Java, tất cả đều là đối tượng.
Chính vì thế, để ứng tuyển vị trí Lập trình viên Java, Lập trình viên Java Web hay là bất kỳ vị trí nào có sử dụng ngôn ngữ Java là ngôn ngữ chính, chắc chắn bạn sẽ phải trả lời:
-
Các câu hỏi phỏng vấn về Lập trình Java hướng đối tượng
TOP 8 Câu hỏi Phỏng vấn Lập trình Java hướng đối tượng
Nếu bạn đang chuẩn bị cho một cuộc phỏng vấn Java. trong năm 2020?
Thì,
Hãy kiểm tra lại 8 câu hỏi phỏng vấn Lập trình Java hướng đối tượng phổ biến nhất năm 2019 bên dưới đây:
Mình chia chia chúng làm 2 phần như sau:
-
Câu hỏi Lập trình Java hướng đối tượng (Cơ bản)
-
Câu hỏi Lập trình Java hướng đối tượng (Nâng cao)
1. Câu hỏi Phỏng vấn Lập trình Java hướng đối tượng Cơ bản
Chúng ta sẽ bắt đầu luôn phần câu hỏi OOP cơ bản:
Câu 1: Các khái niệm Hướng đối tượng bao gồm?
Các Khái niệm trong Lập trình Hướng đối tượng (OOP)
Trả lời:
Dưới đây là các khái niệm hướng đối tượng trong Java:
-
Polymorphism
-
Abstraction
-
Inheritance
-
Aggregation
-
Encapsulation
-
Association
-
Composition
> Tìm hiểu kỹ hơn về các Khái niệm Hướng đối tượng trong Java.
Câu 2: Đa hình là gì? Chúng ta có thể ghi đè một phương thức tĩnh (static method) và một phương thức riêng tư (private method) trong java không?
Trả lời:
Đây là Câu hỏi phỏng vấn Java OOP phổ biến nhất được hỏi trong một cuộc phỏng vấn.
Khả năng định nghĩa phương thức trong giai đoạn run-time của nó được gọi là Đa hình.
Trong hầu hết các ngôn ngữ lập trình hướng đối tượng như C ++ và Java, có hai loại đa hình:
-
Tính đa hình trong thời gian biên dịch (overloading)
-
Tính đa hình trong thời gian chạy (overriding).
Overloading: Khả năng của một phương thức có cùng tên phương thức nhưng các số hoặc kiểu tham số khác nhau được gọi là nạp chồng phương thức.
Overriding: Một lớp con kế thừa trực tiếp từ lớp cha có thể ghi đè phương thức (cùng tên, cùng danh sách đối số, cùng kiểu trả về) để phù hợp với mục đích của nó. Khi bạn ghi đè các phương thức, phương thức thích hợp được JVM xác định để gọi vào thời gian runtime chương trình của nó và không phải gọi lúc biên dịch.
Tóm lại, Overloading và Overriding là biểu hiện của tính đa hình trong hướng đối tượng.
? Còn về việc có chúng ta có thể ghi đè một phương thức tĩnh (static method) trong java không?
Câu trả lời là: Không
Không thể ghi đè một phương thức static trong Java vì phương thức static không bị ràng buộc bởi đối tượng.
Mặt khác, các phương thức static phụ thuộc vào lớp và được giải quyết tại thời điểm biên dịch bằng cách sử dụng loại biến tham chiếu.
Khai báo cùng một phương thức bên trong một lớp con sẽ dẫn đến việc ẩn phương thức.
? Có thể ghi đè một phương thức riêng tư (private method) trong Java không?
Câu trả lời là: Không
Không thể ghi đè một phương thức private trong java.
Vì phương thức private có thể truy cập và hiển thị bên trong lớp mà chúng được khai báo, chúng không thể bị ghi đè bên trong subclass (lớp con kế thừa từ lớp cha).
Tuy nhiên, chúng có thể được ghi đè bên trong inner class (class được khai báo bên trong class) vì chúng có thể được truy cập ở đây.
Câu 3: Hãy liệt kê một vài tính năng quan trọng trong Java 8?
Trả lời:
Một số tính năng quan trọng được giới thiệu trong Java 8 là:
-
Phương thức
forEach()
trong iterable interface
-
Biểu thức
Lambda
và functional interfaces
-
Static và method mặc định trong interfaces
-
Stream API cho các hoạt động dữ liệu số lượng lớn trên collection
Để tiếp tục, nhà tuyển đụng có thể sẽ hỏi sâu thêm về một trong các ý bạn vừa nêu. Vì thế hãy tìm hiểu kỹ thêm một chút nhé.
Câu 4: Sự khác biệt giữa State và Strategy Pattern? Vấn đề nào được giải quyết bằng Strategy Pattern?
Trả lời:
State Pattern và Strategy Pattern có chung cấu trúc hoặc sơ đồ lớp, tuy nhiên, ý định của chúng là hoàn toàn khác nhau.
Các State Pattern hoạt động trên các tác vụ cụ thể phụ thuộc vào các trạng thái trong khi Strategy hoạt động trên việc chuyển đổi thuật toán mà không thay đổi code.
Ví dụ: Một phương thức, collection.sort() sắp xếp danh sách đối tượng.
Vì tất cả các đối tượng sử dụng một chiến lược so sánh khác nhau, nên việc so sánh giữa các đối tượng khác nhau có thể được thực hiện mà không cần thay đổi phương thức sắp xếp.
Đây là 4 câu hỏi cơ bản về phần Java OOP thường được hỏi nhất trong các cuộc phỏng vấn.
2. Câu hỏi Phỏng vấn Lập trình Java hướng đối tượng Nâng cao
Câu 5: 5 Nguyên tắc thiết kế cho cách tiếp cận hướng đối tượng từ SOLID là gì?
5 Nguyên tắc thiết kế SOLID trong Lập trình
Trả lời:
Cuốn sách Clean Code được viết bởi Uncle Bob, mỗi ký tự trong từ SOLID là chữ cái đầu của các nguyên tắc thiết kế:
-
S - Single Responsibility Principle (Nguyên tắc trách nhiệm duy nhất)
-
O - Open closed design principle (Thiết kế Đóng, Mở)
-
L - Liskov substitution principle (Nguyên tắc thay thế Liskov)
-
I - Interface segregation principle (Nguyên tắc chia nhỏ interface)
-
D - Dependency inversion principle (Nguyên tắc đảo ngược phụ thuộc)
> Đọc thêm: Ví dụ về SOLID
Câu 6: Theo Khái niệm OOP, Decorator design pattern dựa trên cái gì?
Trả lời:
Decorator tận dụng tính chất Composition của OOP để cung cấp các tính năng mới mà không cần sửa đổi class gốc.
Các thành phần được liên kết với Decorator.
Câu 7: Sự khác nhau giữa Association, Dependency, Composition, and Aggregation trong OOP?
Trả lời:
Trong trường hợp Association, một lớp có một biến thành viên hoặc thuộc tính của loại lớp khác nhưng trong trường hợp Dependency, một phương thức có liên quan đến một đối số của loại lớp hoặc trong biến cục bộ của các loại lớp khác.
Association là hình thức liên kết lỏng lẻo trong đó đối tượng liên quan tồn tại riêng lẻ trong khi, trong trường hợp Composition, đối tượng không thể tồn tại riêng lẻ.
Aggregation cũng giống như Association, nhưng khác là Aggregation có mối quan hệ sở hữu ( ownership ) giữa các instance.
Câu 8: ThreadLocal là gì? Chúng ta thích khối synchronized block hay synchronized method?
Trả lời:
Tất cả các luồng của một đối tượng chia sẻ các biến, vì vậy biến không phải luồng an toàn.
Lời kết
Đây là 8 Câu hỏi và Câu trả lời phỏng vấn Java Hướng đối tượng thường gặp nhất để bạn có thể tự tin vượt qua phần này.
Dĩ nhiên còn rất nhiều câu hỏi nhà tuyển dụng có thể hỏi. Vì thế, không chỉ cần nắm được kiến thức trong 8 câu trả lời này mà còn cần phải thật vững về Java OOP.
Bởi Java OOP là nền tảng để bạn phát triển sau này, hiểu rõ và biết vận dụng linh hoạt giúp bạn không ngại khi mở rộng lĩnh vực sang Java Web, Java ứng dụng hoặc Android...
> Tham gia ngay Khóa học Java Full stack tại NIIT - ICT Hà Nội để nắm chắc các kiến thức cần thiết nhất cho vị trí lập trình viên Java.
---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0383.180086
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
#niit #icthanoi #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp