Với nền kinh tế hiện đại ngày nay, lập trình viên đang là một nghề được nhiều doanh nghiệp săn đón. Bộ câu hỏi phỏng vấn lập trình hướng đối tượng được chia sẻ sau đây sẽ hỗ trợ bạn nắm bắt cơ hội nghề nghiệp. Cùng Got It tìm hiểu nhé.
Mục lục
- 1. Lập trình hướng đối tượng (Object Oriented Programming – OOP) là gì?
- 2. Bộ câu hỏi phỏng vấn lập trình viên hướng đối tượng thường gặp
- 2.1. Những khái niệm về hướng đối tượng bao gồm?
- 2.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?
- 2.3. Những tính năng quan trọng trong Java 8 hiện nay?
- 2.4. Kể 5 nguyên tắc thiết kế cho cách tiếp cận hướng đối tượng từ SOILD?
- 2.5. Theo khái niệm OOP, Decorator design pattern dựa trên cái gì?
- 2.6. Có những loại Access modifier nào và nêu phạm vi sử dụng của chúng?
- 2.7. Chỉ ra sự khác biệt giữa State và Strategy Pattern?
1. Lập trình hướng đối tượng (Object Oriented Programming – OOP) là gì?
OOP là một kỹ thuật lập trình cho phép các lập trình viên tạo ra các đối tượng trong code trừu tượng hóa các đối tượng.
Các nhà tuyển dụng luôn có sự chọn lọc kỹ càng đối với lập trình viên vì với một hệ thống việc lập trình hướng đối tượng là vô cùng cần thiết. Vì vậy, nắm bắt điều các nhà tuyển dụng mong muốn là một điểm cộng và bộ câu hỏi phỏng vấn lập trình hướng đối tượng dưới đây sẽ giúp bạn chuẩn bị tốt hơn.
2. Bộ câu hỏi phỏng vấn lập trình viên hướng đối tượng thường gặp
2.1. Những khái niệm về hướng đối tượng bao gồm?
Đây được xem là một câu hỏi mở đầu thay thế cơ bản cho việc làm quen kiến thức. Khi bạn ứng tuyển vào vị trí lập trình viên thì các câu hỏi về khái niệm đa số sẽ được đề cập tới. Nhà tuyển dụng sẽ thông qua đó để nhận biết bạn có sự am hiểu cơ bản về vị trí ứng tuyển hay không.
Gợi ý: Có thể kể một cách đơn giản, lập trình hướng đối tượng bao gồm: Polymorphism, Abstraction, Inheritance, Aggregation, Encapsulation, Association, Composition.
2.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?
Đây là một câu hỏi khá phổ biến. Nghe chừng đơn giản nhưng làm sao có thể khái quát toàn bộ được nó thì bạn sẽ được đánh giá khá cao đấy.
Gợi ý:
– Đa hình là khả năng định nghĩa phương thức trong giai đoạn runtime. Có hai loại phổ biến dành cho C++ và Java là tính đa hình trong thời gian biên dịch (Overloading) và tính đa hình trong thời gian chạy (Overriding). Bạn có thể nêu một cách đơn giản khái niệm về hai loại phương thức này.
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.
– Có thể ghi đè một phương thức tĩnh và một phương thức riêng tư trên Java hay 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à nó phụ thuộc vào lớp được giải quyết bằng loại biến tham chiếu.
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 bị ghi đè bên trong Subclass. Tuy nhiên có thể ghi đè chúng bên trong inner class vì chúng có thể được truy cập ở đây.
2.3. Những tính năng quan trọng trong Java 8 hiện nay?
Gợi ý:
- Phương thức forEach () trong iterable interface
- Biểu thức Lambda và functional interfaces
- Static và method mặc định trong interfaces
- Java time API
- Stream API cho các hoạt động dữ liệu số lượng lớn trên collection
- Cải tiến Concurrency API, Collection API, Java IO, Core API
Hãy tìm hiểu kỹ những tính năng trên vì có khả năng nhà tuyển dụng sẽ hỏi sâu vào các tính năng.
2.4. Kể 5 nguyên tắc thiết kế cho cách tiếp cận hướng đối tượng từ SOILD?
Gợi ý: Giải thích về SOLID biểu thị gì chính là cách trả lời cho câu hỏi này. 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)
2.5. Theo khái niệm OOP, Decorator design pattern dựa trên cái gì?
Đây vẫn là các câu hỏi về các nền tảng nâng cao nhằm đánh giá, chọn lọc ứng viên khi áp dụng kiến thức vào thực tế.
Gợ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.
2.6. Có những loại Access modifier nào và nêu phạm vi sử dụng của chúng?
Gợi ý:
Public: có thể truy cập ở bất cứ đâu
Protected: có thể truy cập bởi các class trong cùng package hoặc các class con
Default: có thể truy cập bởi các class trong cùng package
Private: có thể truy cập trong cùng class
2.7. Chỉ ra sự khác biệt giữa State và Strategy Pattern?
Gợi ý:
State và Strategy Pattern đều có chung về cấu trúc hoặc sơ đồ lớp. Tuy nhiên mục đích hướng tới là khác nhau.
Strategy Pattern hoạt động trên các tác vụ cụ thể, có sự phụ thuộc và trạng thái trong việc chuyển đổi thuật toán về code là không dễ thay đổi. Hơn nữa là các đối tượng sử dụng các chiến lược khác nhau, từ đó việc so sánh cũng khác nhau và không thay đổi sắp xếp.
Trên đây, là các thông tin cũng như bộ 7 câu hỏi về phỏng vấn lập trình hướng đối tượng điển hình. Hi vọng những chia sẻ này sẽ giúp bạn vượt qua thuận lợi buổi phỏng vấn của các nhà tuyển dụng.