Logo

101 câu hỏi phỏng vấn OOP thường gặp và gợi ý trả lời thuyết phục, đúng chuyên môn

Lượt xem: 1436
Ngày đăng: 17/03/2024

Tổng hợp những câu hỏi phỏng vấn lập trình hướng đối tượng (OOP) thường gặp, phổ biến ✓ Câu hỏi phỏng vấn OPP cơ bản, OOP PHP, OOP Java... ✓ Bộ câu hỏi phỏng vấn OPP có hướng dẫn trả lời chi tiết giúp ứng viên tự tin thuyết phục nhà tuyển dụng

Câu hỏi phỏng vấn OOP - VIecLamVui

➽➽➽ Có thể bạn quan tâm: 1001 câu hỏi phỏng vấn thường gặp và cách trả lời hay nhất thuyết phục nhà tuyển dụng

Câu hỏi phỏng vấn lập trình hướng đối tượng OOP cơ bản

Tổng hợp các câu hỏi phỏng vấn OOP cơ bản thường gặp có gợi ý trả lời.

Câu hỏi phỏng vấn lập trình hướng đối tượng - ViecLamVui

OOPS là gì?

OOPS (Object Oriented Programming System) được viết tắt là Hệ thống lập trình hướng đối tượng, trong đó các chương trình được coi như một tập hợp các đối tượng. Mỗi đối tượng không là gì ngoài một thể hiện của một lớp.

Các khái niệm cơ bản về OOPS?

Những khái niệm cơ bản về OOPS là:

  • Trừu tượng (Abstraction)
  • Bao đóng (Encapsulation)
  • Thừa kế (Inheritance)
  • Đa hình (Polymorphism)

Lớp và đối tượng là gì?

  • Lớp: là khuôn mẫu mô tả những đặc tính, hành vi chung của một nhóm các đối tượng.
  • Đối tượng: là một thể hiện cụ thể của lớp. Đối tượng có những đặc tính và hành vi cụ thể.

Đa hình là gì?

Trong ngôn ngữ OOP, đa hình là một khái niệm cơ bản. Nó cho thấy các lớp khác nhau có thể chia sẻ một giao diện như thế nào. Tất cả các lớp này đều có khả năng triển khai giao diện duy nhất.

Trừu tượng là gì?

Tính trừu tượng là một tính năng hữu ích của OOP và nó chỉ hiển thị các chi tiết cần thiết cho client của một đối tượng. Có nghĩa là, nó chỉ hiển thị các chi tiết cần thiết cho một đối tượng, không phải các hàm tạo bên trong, của một đối tượng. Ví dụ: Khi bạn muốn bật TV, bạn không cần biết mạch bên trong / cơ chế cần thiết để bật TV. Bất cứ điều gì được yêu cầu để bật TV sẽ được hiển thị bằng cách sử dụng một lớp trừu tượng.

Kế thừa là gì?

Kế thừa là một khái niệm trong đó một lớp chia sẻ cấu trúc và hành vi được định nghĩa trong lớp khác. Nếu Kế thừa áp dụng cho một lớp được gọi là Kế thừa đơn và nếu nó phụ thuộc vào nhiều lớp, thì nó được gọi là Kế thừa đa.

Constructor để làm gì? Constructor mặc định là gì?

  • Constructor: được dùng để khởi tạo đối tượng.
  • Constructor mặc định: là constructor không có tham số và nó dùng để khởi tạo các giá trị mặc định cho đối tượng.

Sự khác biệt giữa cấu trúc và lớp là gì?

Kiểu truy cập mặc định của một struct (cấu trúc) là public, nhưng kiểu truy cập class (lớp) là private.

Một struct được sử dụng để nhóm dữ liệu, trong khi một class có thể được sử dụng để nhóm dữ liệu và phương thức.

Struct được sử dụng riêng cho dữ liệu và nó không yêu cầu xác thực nghiêm ngặt, nhưng các class được sử dụng để đóng gói và thừa kế dữ liệu vốn có, yêu cầu xác thực nghiêm ngặt.

Lớp cơ sở, lớp con và lớp cha là gì?

  • Lớp cơ sở: là lớp tổng quát nhất, và nó được cho là một lớp gốc.
  • Lớp con: là lớp kế thừa từ một hoặc nhiều lớp cơ sở.
  • Lớp cha: là lớp cha mà từ đó lớp khác kế thừa.

Lớp trừu tượng là gì? Có thể tạo bao nhiêu thể hiện cho một lớp trừu tượng?

Một lớp trừu tượng là một lớp không thể được khởi tạo. Không thể tạo một đối tượng với một lớp trừu tượng, nhưng nó có thể được kế thừa. Một lớp trừu tượng chỉ có thể chứa một phương thức trừu tượng. 

Các thể hiện sẽ không được tạo cho một lớp trừu tượng. Nói cách khác, bạn không thể tạo một thể hiện của Lớp trừu tượng.

Hạn chế của OOP là gì?

Sau đây là một số hạn chế của OOPs:

  • Kích thước lớn hơn so với các ứng dụng khác.
  • Nó yêu cầu một số làm quen với.
  • Một số loại vấn đề không xảy ra.
  • Nó tốn nhiều công sức để tạo ra so với các ứng dụng khác, nó hoạt động chậm hơn.

Theo khái niệm OOP, Decorator design pattern dựa trên cái gì?

Đây là một câu hỏi đòi hỏi ứng viên phải biết áp dụng kiến thức vào thực tế. Qua câu hỏi này, nhà tuyển dụng có thể đánh giá và chọn lọc ứng viên dễ dàng hơn. Sau đây là gợi ý 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ác từ chỉ định quyền truy cập là gì?

Các từ chỉ định quyền truy cập xác định phạm vi của phương thức hoặc các biến có thể được truy cập từ các đối tượng hoặc lớp khác nhau. Có năm loại chỉ định quyền truy cập như sau:

  • Private: Riêng tư
  • Protected: Được bảo vệ
  • Public: Công khai
  • Friend: Bạn
  • Protected Friend: Bạn được bảo vệ

Có các kiểu hàm tạo khác nhau nào?

Có ba loại hàm tạo:

  • Hàm tạo mặc định: Không có tham số.
  • Hàm tạo tham số: Có các tham số. Tạo một thể hiện mới của một lớp và đồng thời truyền các đối số.
  • Hàm tạo sao chép: Tạo một đối tượng mới dưới dạng bản sao của một đối tượng hiện có.

Từ chỉ định sealed là gì?

Các từ chỉ định sealed là công cụ sửa đổi truy cập mà các phương thức không thể kế thừa nó. Các từ chỉ định sealed cũng có thể được áp dụng cho các thuộc tính, sự kiện và phương thức. Sealed không thể được sử dụng cho các thành viên tĩnh.

Câu hỏi phỏng vấn OOP PHP

Sau đây là một số câu hỏi phỏng vấn OOP PHP thường gặp và gợi ý trả lời.

Câu hỏi phỏng vấn OOP PHP - ViecLamVui

PHP là ngôn ngữ hướng đối tượng như thế nào?

PHP chủ yếu dựa trên ngôn ngữ lập trình C++, mà C++ là ngôn ngữ lập trình hướng đối tượng.

Một lớp PHP chứa các thuộc tính và phương thức được sử dụng để tạo một đối tượng của lớp đó và mỗi đối tượng sẽ có các thuộc tính và giá trị riêng.

Namespace trong PHP là gì?

Một namespace trong PHP được sử dụng để đóng gói các mục tương tự như trừu tượng hóa trong các khái niệm lập trình hướng đối tượng. Namespace được sử dụng để thiết lập mối quan hệ giữa các lớp, hàm và hằng. Một namespace có thể được xác định bằng cách sử dụng từ keyword namespace được dành riêng cho PHP để sử dụng nội bộ để tránh xung đột với các định danh do người dùng tạo ra.

Sự khác biệt giữa việc sử dụng self và $this là gì?

Sử dụng $this để tham chiếu đến đối tượng hiện tại. Sử dụng self để tham chiếu đến lớp hiện tại. Nói cách khác, sử dụng $this->member cho các thành viên non-static, sử dụng self::$member cho các thành viên static.

Có một khía cạnh khác của self:: đáng nói đến. Bản thân self:: tham chiếu đến phạm vi ở điểm định nghĩa chứ không phải ở điểm thực thi. PHP 5.3 có một giải pháp, toán tử static:: thực hiện "late static binding", đây là một cách nói hay để nói rằng nó bị ràng buộc với phạm vi của lớp được gọi. Vì vậy, $this-> tham chiếu đến đối tượng hiện tại (một instance của một lớp), trong khi static:: tham chiếu đến một lớp.

Interface trong PHP là gì?

Interface là một cách để cung cấp việc thực hiện các chức năng khác nhau theo yêu cầu của người dùng. Interface cũng có thể được hiểu như là bản thiết kế của các cấu trúc cần thiết. Một interface có thể được sử dụng và triển khai theo nhiều cách bên trong lớp triển khai.

Từ khóa final là gì? Chúng được sử dụng như thế nào trong PHP?

Từ khóa final được giới thiệu trong phiên bản PHP 5. Từ khóa final (có nghĩa là cuối cùng) trong PHP được sử dụng để đánh dấu một lớp hoặc một hàm là cuối cùng.

Nếu một lớp được đánh dấu là final, nó không thể được mở rộng (extends) để sử dụng các thuộc tính hoặc phương thức của nó. Nó ngăn chặn các lớp con của nó ghi đè một phương thức.

Nếu chỉ có một hàm được đánh dấu là final, thì nó không thể được mở rộng. Một khai báo final có thể được thực hiện bằng cách thêm tiền tố vào tên lớp hoặc tên hàm với từ khóa final.

Clone là gì? Sử dụng clone như thế nào?

Clone là nhân bản một đối tượng đã có sẵn (không phải khởi tạo đối tượng mới). Sử dụng clone khi ta không muốn nó làm thay đổi giá trị của lớp ban đầu. 

Constructor và Destructor trong PHP là gì?

Constructor hay còn gọi là Hàm tạo trong PHP được sử dụng để tạo một đối tượng thuộc kiểu lớp của nó, được sử dụng để khởi tạo các thuộc tính của đối tượng bằng cách sử dụng một phương thức có tên là _construct().

Hàm tạo trong PHP có thể bị overload bằng cách gọi cùng tên phương thức nhưng truyền đối số khác nhau trong cùng một khai báo lớp.

Destructor hay còn gọi là Hàm hủy trong PHP được sử dụng để gọi khi vòng đời của đối tượng sẽ kết thúc để giải phóng bộ nhớ bị chiếm giữ hoặc để thu gom rác giống nhau.

Hàm hủy có thể được gọi bằng phương thức _destruct().

Require và Include trong PHP là gì?

Các câu lệnh require và include trong PHP có sẵn từ các phiên bản PHP 4 trở lên gần như giống hệt nhau. Chỉ một số khác biệt:

  • Câu lệnh include sẽ bao gồm các tệp đã chỉ định và đánh giá nó.
  • require cũng có tính năng tương tự nhưng nó tạo ra lỗi nghiêm trọng khi lỗi với lỗi cấp độ E_COMPILE_ERROR là lỗi biên dịch. Trong trường hợp này, nó dừng việc thực thi tập lệnh và tạm dừng dòng thời gian chạy chương trình. Các tệp sẽ được include dựa trên đường dẫn tệp được đưa ra trong tập lệnh.

Câu hỏi phỏng vấn Java OOP

Sau đây là bộ câu hỏi phỏng vấn OOP Java thường được các nhà tuyển dụng sử dụng để đánh giá và chọn lọc ứng viên. Tham khảo câu hỏi và câu trả lời gợi ý sau đây

Câu hỏi phỏng vấn Java OOP - ViecLamVui

Tính đa hình là gì?

Tính đa hình được mô tả ngắn gọn là “One interface, many implementations”. Nó là một đặc điểm của việc có thể gán một ý nghĩa hoặc cách sử dụng khác cho một thứ gì đó trong các ngữ cảnh khác nhau, cụ thể là cho phép một thực thể chẳng hạn như một biến, một hàm hoặc một đối tượng có nhiều hơn một dạng.

Có hai loại đa hình:

  • Đa hình lúc compile time: thể hiện qua method overloadding (nạp chồng phương thức)
  • Đa hình lúc runtime: thể hiện qua kế thừa và interface

Tính trừu tượng trong Java là gì?

Tính trừu tượng đề cập đến việc xử lý các ý tưởng hơn là sự kiện. Về cơ bản, nó giải quyết việc ẩn các chi tiết và hiển thị những thứ cần thiết cho người dùng. Vì vậy, có thể nó rằng tính từu tượng trong Java là quá trình ẩn các chi tiết triển khai khỏi người dùng và chỉ lộ chi tiết chức năng cho họ.

Có thể đạt được tính trừu tượng theo hai cách:

  • Sử dụng lớp abstract
  • Sử dụng interface

Sự khác biệt giữa class abstract và interface

Những sự khác biệt giữa class abstract và interface như sau:

Abstract class Interface
Không hỗ trợ đa kế thừa Một class có thể implements nhiều interface
Có thể định nghĩa thân của phương thức, property Không thể định nghĩa code xử lý, chỉ có thể khai báo
Có thể xác định phạm vi truy cập Mọi phương thức, property đều mặc định là public
Một lớp trừu tượng có thể chứa các constructor Không chứa constructor
Một lớp trừu tượng có thể chứa biến instance Không thể chứa biến instance

Tính kế thừa trong Java là gì?

Kế thừa trong Java là khái niệm trong đó các thuộc tính, phương thức của một lớp có thể được kế thừa bởi một lớp khác. Nó giúp sử dụng lại mã và thiết lập mối quan hệ giữa các lớp khác nhau. Sự kế thừa được thể hiện giữa hai loại lớp:

  • Super class (Base class - lớp cha)
  • Subclass (Derived class - lớp con)

Một lớp kế thừa các thuộc tính, phương thức được gọi là subclass; lớp có các thuộc tính, phương thức được kế thừa được gọi là super class.

Các kiểu kế thừa trong Java

Java hỗ trợ 4 kiểu kế thừa:

  • Đơn kế thừa: Một lớp kế thừa các thuộc tính, phương thức của lớp khác, tức là sẽ chỉ có một lớp cha và một lớp con.
  • Kế thừa thứ bậc: Khi có nhiều hơn một lớp con hay nói cách khác, nhiều lớp con cùng kế thừa một lớp cha.
  • Kế thừa đa cấp: Lớp con kế thừa các tính năng của lớp cha và dồng thời lớp con này lại hoạt động như một lớp cha cho lớp con khác.
  • Kế thừa lai: Sự kết hợp của hai hay nhiều kiểu kế thừa.
  • Đa kế thừa: Khi có một lớp con được kế thừa từ hai hay nhiều lớp cha.

Tuy nhiên, trong Java không hỗ trợ kế thừa lai và đa kế thừa mà chúng chỉ có thể được thực hiện thông qua interface.

Nạp chồng phương thức và ghi đè phương thức là gì?

  • Nạp chồng phương thức: Các phương thức có cùng tên, cùng nằm trong một class nhưng khác nhau về tham số (số lượng tham số và kiểu dữ liệu của tham số) thì được gọi là nạp chồng phương thức.
  • Ghi đè phương thức: Nếu lớp con có cùng phương thức được khai báo trong lớp cha, nó được gọi là ghi đè phương thức.

Có thể ghi đè phương thức private hoặc static trong Java không?

Không thể ghi đè phương thức private hoặc static trong Java. Nếu tạo một phương thức có cùng kiểu trả về, cùng tham số trong lớp con thì nó sẽ ẩn phương thức của lớp cha. Tương tự, cũng không thể ghi đè một phương thức private trong lớp con vì ta không thể truy cập được phương thức đó tại lớp con, những gì có thể làm chỉ là tạo ra một phương thức khác có cùng tên với phương thức của lớp cha trong lớp con.

Đa kế thừa là gì? Tại sao nó không được hỗ trợ trong Java?

Nếu có một lớp con kế thừa các thuộc tính từ hai hay nhiều lớp cha thì nó được gọi là đa kế thừa. Tuy nhiên, Java không hỗ trợ đa kế thừa.

Vấn đề với đa kế thừa là nếu nhiều lớp cha có cùng tên phương thức, thì trong lúc runtime, trình biên dịch sẽ khó quyết định phương thức nào sẽ được thực thi từ lớp con. Do đó, Java không hỗ trợ đa kế thừa. Bài toán này được gọi là bài toán kim cương (Diamond Problem).

Tính đóng gói trong Java là gì?

Đóng gói là một cơ chế mà bạn liên kết dữ liệu (biến) và mã (phương thức) với nhau như một đơn vị duy nhất. Ở đây, dữ liệu được ẩn khỏi thế giới bên ngoài và chỉ có thể được truy cập thông qua các phương thức lớp hiện tại. Điều này giúp bảo vệ dữ liệu khỏi bất kỳ sửa đổi không cần thiết nào.

Có thể đạt được tính đóng gói trong Java bằng cách:

  • Khai báo các biến của class là private
  • Cung cấp các phương thức gettersetter để đọc và ghi giá trị của các biến.

Runtime polymorphism là gì?

Runtime polymorphism hay còn được gọi là dynamic method dispatch.Ví dụ của đa hình lúc runtime là method overriding (Ghi đè phương thức). Khi class cha tham chiếu đến object của class con, method sẽ được xác định tại runtime. Nghĩa là nếu chúng ta gọi đến method có sẵn ở class cha và được class con định nghĩa lại thì trình biên dịch sẽ gọi method của class con.

Association là gì?

Association là một mối qua hệ mà tất cả các đối tượng có vòng đời riêng của chúng và không có chủ sở hữu. Ví dụ như quan hệ giữa giảng viên và học viên: Một học viên thì sẽ được nhiều giảng viên dạy và một giảng viên thì sẽ dạy nhiều học viên nhưng không có quyền sở hữu giữa các đối tượng và cả hai đều có vòng đời riêng.

Aggregation là gì?

Aggregation cũng giống như association, nhưng khác là aggregation có mối quan hệ sở hữu. Ví dụ như quan hệ giữa Khoa và giảng viên - một giảng viên chỉ thuộc về một khoa, nhưng nếu loại bỏ giảng viên ra khỏi khoa thì khoa đó vẫn tồn tại.

Composition là gì?

Composition là một dạng đặc biệt của aggregation. Đối tượng con không có vòng đời và nếu đối tượng cha loại bỏ tất cả đối tượng con thì đối tượng cha cũng sẽ bị loại bỏ. Ví dụ như trong một ngôi nhà có nhiều căn phòng, nếu chúng ra dỡ bỏ tất cả các căn phòng đó thì ngôi nhà cũng bị dỡ bỏ.

Dependency là gì?

Dependency là mối quan hệ khi một đối tượng A phụ thuộc vào đối tượng B. Những thay đổi ở đối tượng B có thể ảnh hưởng đến đối tượng A. Ví dụ như ta có đối tượng khách hàng và đơn hàng. Khi thay đổi thông tin khách hàng ví dụ như kiểu dữ liệu của id khách hàng thì tại đơn hàng thông tin id của khách hàng cũng phải thay đổi theo.

Interface Marker trong Java?

Marker Interface là một interface không có bất kỳ phương thức và thuộc tích nào bên trong nó. Nó cung cấp thông tin run-time type về object, vì vậy compiler và JVM có thêm thông tin về đối tượng thể thực hiện một số hoạt động hữu ích. Một số Marker Interface trong Java: Serializable, Cloneable,…

Một marker interface còn được gọi là một tagging interface.

Ví dụ:

public interface Serializable{

}

Cloning object trong Java như thế nào?

Nhân bản object là quá trình tạo ra một bản sao của một đối tượng. Về cơ bản nó có nghĩa là khả năng tạo ra một đối tượng có trạng thái tương tự với đối tượng ban đầu.

Để đạt được điều này, Java cung cấp phương thức clone(), clone () tiết kiệm tác vụ xử lý bổ sung để tạo ra một bản sao chính xác của một đối tượng. Nếu chúng ta thực hiện nó bằng cách sử dụng từ khoá new sẽ mất rất nhiều tiến trình xử lý được thực hiện, đó là lý do tại sao chúng ta sử dụng object cloning.

Copy Constructor trong java là gì?

Copy constructor trong Java là một constructor dùng để khởi tạo một object trong đó sử dụng một object khác có cùng kiểu dữ liệu.

Copy constructor sẽ hữu ích khi chúng ta muốn sao chép dữ liệu từ một object (các giá trị của các trường bên trong object) khác sang một object mới.

Để triển khai một copy constructor thì chúng ta cần tạo một constructor với tham số đầu vào là một object có cùng kiểu dữ liệu. Sau đó tiến hành khởi tạo giá trị của từng thuộc tính bên trong tương ứng với giá trị của object được truyền vào.

public class Person {

    private String name;

    private int age;

 

    public Person(Person person) {

        this.name = person.name;

        this.age = person.age;

    }

}

Constructor overloading trong Java

Trong Java, constructor overloading là một kỹ thuật thêm bất kỳ số lượng constructor nào vào một lớp, mỗi constructor sẽ có danh sách tham số khác nhau. Trình biên dịch sẽ sử dụng số lượng tham số và kiểu của chúng trong một danh sách để phân biệt các constructor được nạp chồng.

public class Person {

    private String name;

    private int age;

 

    public Person() {

    }

 

    public Person(String name) {

        this.name = name;

    }

 

    public Person(int age) {

        this.age = age;

    }

 

    public Person(String name, int age) {

        this.name = name;

        this.age = age;

    }

}

Câu hỏi phỏng vấn OOP C++

Sau đây là tổng hợp những câu hỏi phỏng vấn OOP C++ thường gặp nhất.

Câu hỏi phỏng vấn OOP C++ - ViecLamVui

Khái niệm C++ OOPs là gì?

Lập trình hướng đối tượng (OOP) là một kỹ thuật lập trình cho phép 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.

Đối tượng: Một đối tượng bao gồm 2 thông tin: thuộc tính và phương thức.

  • Thuộc tính chính là những thông tin, đặc điểm của đối tượng. Ví dụ: con người có các đặc tính như mắt, mũi, tay, chân…
  • Phương thức là những thao tác, hành động mà đối tượng đó có thể thực hiện. Ví dụ: một người sẽ có thể thực hiện hành động nói, đi, ăn, uống,...

Lớp: Một lớp là một kiểu dữ liệu bao gồm các thuộc tính và các phương thức được định nghĩa từ trước. Đây là sự trừu tượng hóa của đối tượng. Khác với kiểu dữ liệu thông thường, một lớp là một đơn vị (trừu tượng) bao gồm sự kết hợp giữa các phương thức và các thuộc tính. Hiểu nôm na hơn là các đối tượng có các đặc tính tương tự nhau được gom lại thành một lớp đối tượng.

Lớp và đối tượng trong C ++ là gì?

Một lớp giống như một bản thiết kế của một đối tượng. Nó là một kiểu dữ liệu do người dùng định nghĩa với các thành viên dữ liệu và các hàm thành viên và được định nghĩa với lớp từ khóa.

Bạn định nghĩa các đối tượng như một thể hiện của một lớp. Khi nó tạo đối tượng, nó có thể hoạt động trên cả thành viên dữ liệu và các hàm thành viên.

Phạm vi truy cập trong C++ là gì ?

Bạn sử dụng công cụ sửa đổi quyền truy cập để xác định khả năng truy cập cho các thành viên trong lớp. Nó định nghĩa cách truy cập các thành viên của lớp bên ngoài phạm vi lớp.

Có ba loại công cụ sửa đổi quyền truy cập:

  • public
  • private
  • protected

Ba loại phạm vi truy cập C++ khác nhau là gì?

  • Public: Tất cả các chức năng thành viên và thành viên dữ liệu có thể truy cập bên ngoài lớp.
  • Protected: Tất cả các hàm thành viên và thành viên dữ liệu đều có thể truy cập được trong lớp và lớp dẫn xuất.
  • Private: Tất cả các chức năng thành viên và thành viên dữ liệu không thể được truy cập bên ngoài lớp.

Tính đa hình trong C++ là gì?

Thuật ngữ đa hình dùng để chỉ sự hiện diện của nhiều dạng. Tính đa hình thường xảy ra khi có một hệ thống phân cấp của các lớp được liên kết với nhau bằng cách kế thừa.

Tính đa hình của C++ có nghĩa là tùy thuộc vào loại đối tượng gọi hàm, một hàm khác sẽ được thực thi.

Một trừu tượng trong C++ là gì?

Trừu tượng có nghĩa là hiển thị các chi tiết cần thiết cho người dùng trong khi ẩn các chi tiết không liên quan hoặc cụ thể mà bạn không muốn hiển thị cho người dùng.

Hàm tạo trong C++ là gì?

Một hàm tạo là một kiểu đặc biệt của hàm thành viên giúp khởi tạo (initialise) đối tượng tự động khi nó được tạo. Trình biên dịch xác định một hàm thành viên là hàm tạo thông qua tên và kiểu trả về của nó. Hàm tạo có cùng tên với tên của lớp và nó không có bất kỳ kiểu trả về nào. Thêm vào đó, hàm tạo luôn luôn là public.

Hàm ảo là gì?

Một hàm thành viên trong lớp cơ sở được định nghĩa lại trong một lớp dẫn xuất là một hàm ảo. Nó được khai báo bằng từ khóa ảo. Nó đảm bảo rằng hàm chính xác được gọi cho một đối tượng, bất kể loại tham chiếu / con trỏ được sử dụng cho lệnh gọi hàm. Các hàm ảo chủ yếu được sử dụng cho tính đa hình thời gian chạy.

Hàm hủy trong C++ là gì?

Hàm destructor (hàm hủy) là một loại hàm thành viên đặc biệt khác của class, được thực thi khi một đối tượng của class đó bị hủy. Trong khi các hàm constructors (hàm khởi tạo) được thiết kế để khởi tạo một class, thì các hàm destructors (hàm hủy) được thiết kế để hỗ trợ việc dọn dẹp bộ nhớ.

Có thể nạp chồng giải mã không? Đưa ra lý do cho câu trả lời của bạn.

Không, điều đó là không thể vì hàm hủy không nhận đối số hoặc trả về bất kỳ thứ gì. Chỉ có một hàm hủy rỗng cho mỗi lớp. Nó phải có một danh sách tham số void.

Lớp trừu tượng là gì? Nó được sử dụng khi nào?

Một lớp trừu tượng là một lớp mà các đối tượng của nó không thể được tạo ra. Nó đóng vai trò là lớp cha cho các lớp dẫn xuất. Việc đặt một hàm thuần ảo trong lớp làm cho nó trở thành một lớp trừu tượng.

Copy constructor là gì?

Hàm sao chép là một hàm thành viên sử dụng một đối tượng khác từ cùng một lớp để khởi tạo một thứ mới. Nói một cách đơn giản, hàm sao chép là một hàm tạo ra một đối tượng bằng cách khởi tạo nó với một đối tượng khác của cùng một lớp đã được xây dựng.

Kế thừa là gì trong C++ là gì?

Kế thừa là cơ chế mà bạn có thể tạo một lớp mới tức là lớp con từ lớp hiện có tức là lớp cha. Lớp con này còn được gọi là lớp dẫn xuất và lớp cha cũng được gọi là lớp cơ sở.

Hàm ảo khác với hàm thuần ảo như thế nào?

Một hàm ảo là một hàm thành viên của lớp cơ sở mà một lớp dẫn xuất có thể sửa đổi. Một hàm thành viên của lớp cơ sở là một hàm thuần ảo phải được định nghĩa trong kiểu dẫn xuất; nếu không, lớp dẫn xuất cũng sẽ trở nên trừu tượng.

STL là gì?

STL là viết tắt của thư viện mẫu tiêu chuẩn. Nó là một thư viện các mẫu vùng chứa cung cấp các lớp và chức năng chung.

Các thành phần STL là vùng chứa, thuật toán, trình vòng lặp và các đối tượng chức năng.

1001 CÂU HỎI PHỎNG VẤN

Tổng hợp những câu hỏi phỏng vấn lập trình hướng đối tượng (OOP) thường gặp, phổ biến ✓ Câu hỏi phỏng vấn OPP cơ bản, OOP PHP, OOP Java... ✓ Bộ câu hỏi phỏng vấn OPP có hướng dẫn trả lời chi tiết giúp ứng viên tự tin thuyết phục nhà tuyển dụng

Trên đây là 101 câu hỏi phỏng vấn OOP thường gặp và cách trả lời thuyết phục, ViecLamVui - chuyên trang tìm việc nhanh miễn phí - gửi đến bạn. Hy vọng tài liệu trên có thể hỗ trợ các bạn thật hiệu quả.

#CauHoiPhongVanOOP #ViecLamVui

Bạn có thể đăng tin tuyển dụng miễn phí, tìm việc làm miễn phí các vị trí công việcViệc Làm IT. Bài viết thuộc danh mụcBlog Việc Làm IT trên ViecLamVui