TOP 8 Câu hỏi Phỏng vấn Lập trình Java hướng đối tượng

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

TOP 8 Câu hỏi Phỏng vấn Lập trình Java hướng đối tượng người tiêu dù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:

  1. Câu hỏi Lập trình Java hướng đối tượng người dùng ( Cơ bản )
  2. Câu hỏi Lập trình Java hướng đối tượng người dù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ẽ mở màn 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)

Các Khái niệm trong Lập trình Hướng đối tượng người tiêu dùng ( OOP )

 Trả lời :

Dưới đây là những khái niệm hướng đối tượng người dùng trong Java :

  1. Polymorphism
  2. Abstraction
  3. Inheritance
  4. Aggregation
  5. Encapsulation
  6. Association
  7. Composition

Khái niệm Hướng đối tượng> Tìm hiểu kỹ hơn về cáctrong 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 hạn biên dịch ( overloading )
  • Tính đa hình trong thời hạn 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ó tất cả chúng ta hoàn toàn có thể ghi đè một phương pháp 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 pháp riêng tư ( private method ) trong Java không ?

Câu vấn đáp 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
  • Java time API
  • Stream API cho những hoạt động giải trí tài liệu số lượng lớn trên collection
  • Cải tiến Concurrency API
  • Cải tiến Collection API
  • Cải tiến Java IO
  • Cải tiến Core API

Để 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 PatternStrategy 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

5 Nguyên tắc phong cách 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à vần âm đầu của những nguyên tắc phong cách thiết kế :

  • S – Single Responsibility Principle ( Nguyên tắc nghĩa vụ và 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 sửa chữa 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 nhờ vào )

Ví dụ về SOLID> Đọc thêm :

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.

Associationlà hình thức link lỏng lẻo trong đó đối tượng người dùng tương quan sống sót riêng không liên quan gì đến nhau trong khi, trong trường hợpComposition, đối tượng người dùng không hề sống sót riêng không liên quan gì đến nhau .

Aggregation cũng giống như Association, nhưng khác là Aggregation có mối quan hệ chiếm hữu ( ownership ) giữa những 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ả những luồng của một đối tượng người tiêu dùng san sẻ những biến, thế cho nên biến không phải luồng bảo đảm an toàn .

Lời kết

Đây là 8 Câu hỏiCâ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.

  • TOP 10 câu hỏi phỏng vấn PHP Hướng đối tượngCó thể bạn muốn xem :

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…

Khóa học Java Full stack> Tham gia ngaytại NIIT - ICT TP.HN để nắm chắc những kiến thức và kỹ năng thiết yếu 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 trong thực tiễn + Tuyển dụng ngay !

Đc : Tầng 3, 25T2, N05, Nguyễn Thị Thập, CG cầu giấy, TP.HN

SĐT : 02435574074 – 0383.180086

E-Mail : [email protected]

Website : https://final-blade.com

Fanpage: https://facebook.com/NIIT.ICT/

# niit # icthanoi # niithanoi # niiticthanoi # hoclaptrinh # khoahoclaptrinh # hoclaptrinhjava # hoclaptrinhphp