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

Ngày đăng: 29/08/2019   -    Cập nhật: 14/04/2021
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
 

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 (Cơ bản)
  2. 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)

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:


  1. Polymorphism
  2. Abstraction
  3. Inheritance
  4. Aggregation
  5. Encapsulation
  6. Association
  7. 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
  • 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
  • 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 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ỏ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.




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

Bình luận Facebook
Khóa học liên quan đến bài viết

Khóa học PHP Full stack [2023] cho người mới bắt đầu

96 giờ
Khóa học Lập trình PHP Full stack, phiên bản cập nhật lần thứ 8. Dạy Lập trình PHP bài bản từ Front end đến Back end + Laravel. Hướng dẫn làm 2 Dự Án Web lớn

KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG

50 giờ
Khóa học giúp học viên sử dụng thành thạo ngôn ngữ Lập trình Python (3x). Hiểu và phát triển được Ứng dụng Web với Django Framework. Học thực hành với Giảng viên cao cấp.

Lập trình PHP với Laravel Framework

42 giờ
Khóa học Lập trình PHP với Laravel Framework được NIIT - ICT HÀ NỘI xây dựng nhằm hoàn thiện kỹ năng lập trình web các các bạn đã biết Lập trình Web PHP thuần.

Khóa học Java Full stack (IJFD)

104 giờ
Học lập trình Java Fullstack với khóa học được xây dựng theo lộ trình bài bản, từ JAVA CƠ BẢN đến JAVA WEB và nâng cao về JAVA FRAMEWORK như: Spring Boot, Hibernate
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!