{"id":7110,"date":"2025-02-11T23:29:05","date_gmt":"2025-02-11T23:29:05","guid":{"rendered":"https:\/\/algocademy.com\/blog\/top-c-interview-questions-master-your-next-technical-interview\/"},"modified":"2025-02-11T23:29:05","modified_gmt":"2025-02-11T23:29:05","slug":"top-c-interview-questions-master-your-next-technical-interview","status":"publish","type":"post","link":"https:\/\/algocademy.com\/blog\/top-c-interview-questions-master-your-next-technical-interview\/","title":{"rendered":"Top C++ Interview Questions: Master Your Next Technical Interview"},"content":{"rendered":"<p><!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\"><br \/>\n<html><body><\/p>\n<article>\n<p>Are you preparing for a C++ interview and feeling overwhelmed? Don&#8217;t worry! We&#8217;ve got you covered with this comprehensive guide to the most common C++ interview questions. Whether you&#8217;re a fresh graduate or an experienced developer looking to switch jobs, this article will help you brush up on your C++ knowledge and boost your confidence for your next technical interview.<\/p>\n<p>At AlgoCademy, we understand the importance of being well-prepared for coding interviews, especially when aiming for positions at top tech companies. That&#8217;s why we&#8217;ve compiled this extensive list of C++ interview questions, complete with detailed explanations and sample code snippets. Let&#8217;s dive in!<\/p>\n<h2>1. What are the key features of C++?<\/h2>\n<p>This is often one of the first questions you&#8217;ll encounter in a C++ interview. It&#8217;s essential to have a solid understanding of the language&#8217;s core features.<\/p>\n<p>Key features of C++ include:<\/p>\n<ul>\n<li>Object-Oriented Programming (OOP)<\/li>\n<li>Generic Programming<\/li>\n<li>Multi-paradigm language (supports procedural, object-oriented, and generic programming)<\/li>\n<li>Strong typing<\/li>\n<li>Compile-time polymorphism (function overloading and templates)<\/li>\n<li>Runtime polymorphism (virtual functions)<\/li>\n<li>Memory management<\/li>\n<li>Exception handling<\/li>\n<li>Standard Template Library (STL)<\/li>\n<\/ul>\n<p>Be prepared to explain these features and provide examples of how they&#8217;re used in C++ programming.<\/p>\n<h2>2. What is the difference between C and C++?<\/h2>\n<p>This question tests your understanding of C++&#8217;s evolution from C and the key differences between the two languages.<\/p>\n<p>Main differences include:<\/p>\n<ul>\n<li>C++ supports OOP, while C is a procedural programming language<\/li>\n<li>C++ has built-in support for classes and objects<\/li>\n<li>C++ supports function overloading, while C doesn&#8217;t<\/li>\n<li>C++ has a richer set of library functions (STL)<\/li>\n<li>C++ supports exception handling, which C doesn&#8217;t<\/li>\n<li>C++ allows for user-defined operators (operator overloading)<\/li>\n<li>C++ has built-in support for references, while C doesn&#8217;t<\/li>\n<\/ul>\n<h2>3. Explain the concept of object-oriented programming in C++<\/h2>\n<p>Object-Oriented Programming (OOP) is a fundamental concept in C++. Be prepared to discuss the four main principles of OOP:<\/p>\n<ol>\n<li>Encapsulation: Bundling data and methods that operate on that data within a single unit (class)<\/li>\n<li>Inheritance: Allowing a class to inherit properties and methods from another class<\/li>\n<li>Polymorphism: The ability of objects of different classes to respond to the same method call<\/li>\n<li>Abstraction: Hiding complex implementation details and showing only the necessary features of an object<\/li>\n<\/ol>\n<p>Here&#8217;s a simple example demonstrating these concepts:<\/p>\n<pre><code>class Shape {\nprotected:\n    int width;\n    int height;\npublic:\n    virtual int area() = 0;\n    void setWidth(int w) { width = w; }\n    void setHeight(int h) { height = h; }\n};\n\nclass Rectangle : public Shape {\npublic:\n    int area() override {\n        return (width * height);\n    }\n};\n\nclass Triangle : public Shape {\npublic:\n    int area() override {\n        return (width * height \/ 2);\n    }\n};<\/code><\/pre>\n<p>In this example, <code>Shape<\/code> is an abstract base class, and <code>Rectangle<\/code> and <code>Triangle<\/code> are derived classes that inherit from <code>Shape<\/code>. The <code>area()<\/code> function demonstrates polymorphism, as it&#8217;s implemented differently in each derived class.<\/p>\n<h2>4. What is a constructor? What are the different types of constructors in C++?<\/h2>\n<p>A constructor is a special member function that is automatically called when an object of a class is created. It&#8217;s used to initialize the object&#8217;s data members.<\/p>\n<p>Types of constructors in C++:<\/p>\n<ol>\n<li>Default constructor: Takes no parameters and is automatically provided by the compiler if no constructor is defined<\/li>\n<li>Parameterized constructor: Takes one or more parameters to initialize object members<\/li>\n<li>Copy constructor: Creates a new object as a copy of an existing object<\/li>\n<li>Move constructor: Transfers ownership of resources from one object to another (C++11 and later)<\/li>\n<\/ol>\n<p>Here&#8217;s an example demonstrating different types of constructors:<\/p>\n<pre><code>class MyClass {\nprivate:\n    int x;\n    std::string str;\n\npublic:\n    \/\/ Default constructor\n    MyClass() : x(0), str(\"\") {}\n\n    \/\/ Parameterized constructor\n    MyClass(int val, std::string s) : x(val), str(s) {}\n\n    \/\/ Copy constructor\n    MyClass(const MyClass&amp; other) : x(other.x), str(other.str) {}\n\n    \/\/ Move constructor\n    MyClass(MyClass&amp;&amp; other) noexcept : x(std::move(other.x)), str(std::move(other.str)) {}\n};<\/code><\/pre>\n<h2>5. What is the difference between stack and heap memory allocation?<\/h2>\n<p>Understanding memory management is crucial in C++. Be prepared to explain the differences between stack and heap memory allocation:<\/p>\n<ul>\n<li>Stack:\n<ul>\n<li>Faster allocation and deallocation<\/li>\n<li>Memory is automatically managed<\/li>\n<li>Limited in size<\/li>\n<li>Used for local variables and function calls<\/li>\n<\/ul>\n<\/li>\n<li>Heap:\n<ul>\n<li>Slower allocation and deallocation<\/li>\n<li>Manual memory management (using new and delete)<\/li>\n<li>Larger memory size available<\/li>\n<li>Used for dynamic memory allocation<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Example of stack and heap allocation:<\/p>\n<pre><code>void exampleFunction() {\n    \/\/ Stack allocation\n    int stackVar = 5;\n    \n    \/\/ Heap allocation\n    int* heapVar = new int(10);\n    \n    \/\/ Use the variables\n    std::cout &lt;&lt; \"Stack variable: \" &lt;&lt; stackVar &lt;&lt; std::endl;\n    std::cout &lt;&lt; \"Heap variable: \" &lt;&lt; *heapVar &lt;&lt; std::endl;\n    \n    \/\/ Clean up heap memory\n    delete heapVar;\n} \/\/ stackVar is automatically deallocated when the function ends<\/code><\/pre>\n<h2>6. What is a virtual function? How does it work?<\/h2>\n<p>Virtual functions are a key concept in C++ polymorphism. They allow a base class to declare a function that can be overridden by derived classes.<\/p>\n<p>Key points about virtual functions:<\/p>\n<ul>\n<li>Declared using the <code>virtual<\/code> keyword in the base class<\/li>\n<li>Enable runtime polymorphism<\/li>\n<li>Use a virtual function table (vtable) for implementation<\/li>\n<li>Allow for correct function calls when using base class pointers or references to derived class objects<\/li>\n<\/ul>\n<p>Here&#8217;s an example of virtual functions in action:<\/p>\n<pre><code>class Animal {\npublic:\n    virtual void makeSound() {\n        std::cout &lt;&lt; \"The animal makes a sound\" &lt;&lt; std::endl;\n    }\n};\n\nclass Dog : public Animal {\npublic:\n    void makeSound() override {\n        std::cout &lt;&lt; \"The dog barks\" &lt;&lt; std::endl;\n    }\n};\n\nclass Cat : public Animal {\npublic:\n    void makeSound() override {\n        std::cout &lt;&lt; \"The cat meows\" &lt;&lt; std::endl;\n    }\n};\n\nint main() {\n    Animal* animal1 = new Dog();\n    Animal* animal2 = new Cat();\n    \n    animal1-&gt;makeSound(); \/\/ Output: The dog barks\n    animal2-&gt;makeSound(); \/\/ Output: The cat meows\n    \n    delete animal1;\n    delete animal2;\n    \n    return 0;\n}<\/code><\/pre>\n<h2>7. What is the difference between references and pointers in C++?<\/h2>\n<p>Both references and pointers are used to indirectly access variables, but they have some key differences:<\/p>\n<ul>\n<li>References:\n<ul>\n<li>Must be initialized when declared<\/li>\n<li>Cannot be null<\/li>\n<li>Cannot be reassigned to refer to a different object<\/li>\n<li>Safer and easier to use<\/li>\n<\/ul>\n<\/li>\n<li>Pointers:\n<ul>\n<li>Can be declared without initialization<\/li>\n<li>Can be null<\/li>\n<li>Can be reassigned to point to different objects<\/li>\n<li>More flexible but require careful management<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Example demonstrating the differences:<\/p>\n<pre><code>int main() {\n    int x = 5;\n    int y = 10;\n    \n    \/\/ Reference\n    int&amp; ref = x;\n    ref = 7; \/\/ x is now 7\n    \n    \/\/ Pointer\n    int* ptr = &amp;x;\n    *ptr = 8; \/\/ x is now 8\n    \n    ptr = &amp;y; \/\/ ptr now points to y\n    *ptr = 12; \/\/ y is now 12\n    \n    return 0;\n}<\/code><\/pre>\n<h2>8. Explain the concept of function overloading in C++<\/h2>\n<p>Function overloading is a feature of C++ that allows multiple functions with the same name but different parameter lists to coexist in the same scope. The compiler determines which function to call based on the number, types, and order of the arguments passed.<\/p>\n<p>Key points about function overloading:<\/p>\n<ul>\n<li>Functions must have different parameter lists (number, type, or order of parameters)<\/li>\n<li>Return type alone is not sufficient for overloading<\/li>\n<li>Enables more intuitive function naming<\/li>\n<li>Resolved at compile-time (static polymorphism)<\/li>\n<\/ul>\n<p>Example of function overloading:<\/p>\n<pre><code>class Calculator {\npublic:\n    int add(int a, int b) {\n        return a + b;\n    }\n    \n    double add(double a, double b) {\n        return a + b;\n    }\n    \n    int add(int a, int b, int c) {\n        return a + b + c;\n    }\n};\n\nint main() {\n    Calculator calc;\n    \n    std::cout &lt;&lt; calc.add(5, 3) &lt;&lt; std::endl;        \/\/ Calls int add(int, int)\n    std::cout &lt;&lt; calc.add(3.14, 2.86) &lt;&lt; std::endl; \/\/ Calls double add(double, double)\n    std::cout &lt;&lt; calc.add(1, 2, 3) &lt;&lt; std::endl;    \/\/ Calls int add(int, int, int)\n    \n    return 0;\n}<\/code><\/pre>\n<h2>9. What is the purpose of the &#8216;const&#8217; keyword in C++?<\/h2>\n<p>The <code>const<\/code> keyword in C++ is used to declare constants and to specify that a variable or object cannot be modified. It&#8217;s an important tool for writing safer and more efficient code.<\/p>\n<p>Uses of <code>const<\/code>:<\/p>\n<ul>\n<li>Declaring constants<\/li>\n<li>Const pointers and references<\/li>\n<li>Const member functions<\/li>\n<li>Const objects<\/li>\n<\/ul>\n<p>Examples of <code>const<\/code> usage:<\/p>\n<pre><code>\/\/ Constant variable\nconst int MAX_SIZE = 100;\n\n\/\/ Const pointer to non-const int\nint value = 5;\nint* const ptr = &amp;value;\n*ptr = 10; \/\/ OK\n\/\/ ptr = &amp;other_value; \/\/ Error: ptr is const\n\n\/\/ Const pointer to const int\nconst int* const ptr2 = &amp;value;\n\/\/ *ptr2 = 15; \/\/ Error: *ptr2 is const\n\/\/ ptr2 = &amp;other_value; \/\/ Error: ptr2 is const\n\nclass MyClass {\npublic:\n    \/\/ Const member function\n    int getValue() const {\n        return value;\n    }\n    \nprivate:\n    int value;\n};\n\n\/\/ Using const objects\nconst MyClass obj;\nint val = obj.getValue(); \/\/ OK\n\/\/ obj.setValue(10); \/\/ Error: obj is const<\/code><\/pre>\n<h2>10. What is the Standard Template Library (STL) in C++?<\/h2>\n<p>The Standard Template Library (STL) is a powerful set of C++ template classes to provide general-purpose classes and functions with templates that implement many popular and commonly used algorithms and data structures.<\/p>\n<p>Key components of the STL:<\/p>\n<ol>\n<li>Containers: Data structures like vector, list, map, set, etc.<\/li>\n<li>Algorithms: Functions for searching, sorting, counting, etc.<\/li>\n<li>Iterators: Objects that provide a way to access elements in containers<\/li>\n<li>Function objects: Objects that can be used as function arguments<\/li>\n<\/ol>\n<p>Example using STL components:<\/p>\n<pre><code>#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;algorithm&gt;\n\nint main() {\n    std::vector&lt;int&gt; numbers = {5, 2, 8, 1, 9};\n    \n    \/\/ Sort the vector\n    std::sort(numbers.begin(), numbers.end());\n    \n    \/\/ Print sorted vector\n    for (const auto&amp; num : numbers) {\n        std::cout &lt;&lt; num &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n    \n    \/\/ Find an element\n    auto it = std::find(numbers.begin(), numbers.end(), 8);\n    if (it != numbers.end()) {\n        std::cout &lt;&lt; \"Found 8 at position: \" &lt;&lt; std::distance(numbers.begin(), it) &lt;&lt; std::endl;\n    }\n    \n    return 0;\n}<\/code><\/pre>\n<h2>11. What is a smart pointer? What types of smart pointers are available in C++?<\/h2>\n<p>Smart pointers are objects that act like pointers but provide additional features such as automatic memory management and ownership semantics. They help prevent common problems like memory leaks and dangling pointers.<\/p>\n<p>Types of smart pointers in C++:<\/p>\n<ol>\n<li><code>std::unique_ptr<\/code>: Exclusive ownership, automatically deletes the object it points to when it goes out of scope<\/li>\n<li><code>std::shared_ptr<\/code>: Shared ownership, uses reference counting to manage the lifetime of the pointed-to object<\/li>\n<li><code>std::weak_ptr<\/code>: Non-owning reference to an object managed by <code>std::shared_ptr<\/code>, helps break circular references<\/li>\n<\/ol>\n<p>Example using smart pointers:<\/p>\n<pre><code>#include &lt;iostream&gt;\n#include &lt;memory&gt;\n\nclass MyClass {\npublic:\n    MyClass(int val) : value(val) {\n        std::cout &lt;&lt; \"MyClass constructor called\" &lt;&lt; std::endl;\n    }\n    ~MyClass() {\n        std::cout &lt;&lt; \"MyClass destructor called\" &lt;&lt; std::endl;\n    }\n    int getValue() const { return value; }\nprivate:\n    int value;\n};\n\nint main() {\n    \/\/ unique_ptr example\n    std::unique_ptr&lt;MyClass&gt; uniquePtr = std::make_unique&lt;MyClass&gt;(42);\n    std::cout &lt;&lt; \"uniquePtr value: \" &lt;&lt; uniquePtr-&gt;getValue() &lt;&lt; std::endl;\n    \n    \/\/ shared_ptr example\n    std::shared_ptr&lt;MyClass&gt; sharedPtr1 = std::make_shared&lt;MyClass&gt;(10);\n    std::shared_ptr&lt;MyClass&gt; sharedPtr2 = sharedPtr1;\n    std::cout &lt;&lt; \"sharedPtr1 value: \" &lt;&lt; sharedPtr1-&gt;getValue() &lt;&lt; std::endl;\n    std::cout &lt;&lt; \"sharedPtr2 value: \" &lt;&lt; sharedPtr2-&gt;getValue() &lt;&lt; std::endl;\n    \n    \/\/ weak_ptr example\n    std::weak_ptr&lt;MyClass&gt; weakPtr = sharedPtr1;\n    if (auto sharedFromWeak = weakPtr.lock()) {\n        std::cout &lt;&lt; \"weakPtr value: \" &lt;&lt; sharedFromWeak-&gt;getValue() &lt;&lt; std::endl;\n    }\n    \n    return 0;\n} \/\/ All smart pointers are automatically deleted here<\/code><\/pre>\n<h2>12. What is the difference between a struct and a class in C++?<\/h2>\n<p>In C++, structs and classes are very similar, with only a few key differences:<\/p>\n<ul>\n<li>Default access specifier:\n<ul>\n<li>struct: public by default<\/li>\n<li>class: private by default<\/li>\n<\/ul>\n<\/li>\n<li>Inheritance:\n<ul>\n<li>struct: public inheritance by default<\/li>\n<li>class: private inheritance by default<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Other than these differences, structs and classes can have member functions, constructors, destructors, and can use inheritance and polymorphism.<\/p>\n<p>Example demonstrating the differences:<\/p>\n<pre><code>struct MyStruct {\n    int x; \/\/ public by default\n    void print() { std::cout &lt;&lt; x &lt;&lt; std::endl; }\n};\n\nclass MyClass {\n    int x; \/\/ private by default\npublic:\n    void print() { std::cout &lt;&lt; x &lt;&lt; std::endl; }\n};\n\nint main() {\n    MyStruct s;\n    s.x = 5; \/\/ OK, x is public\n    s.print();\n    \n    MyClass c;\n    \/\/ c.x = 5; \/\/ Error, x is private\n    c.print();\n    \n    return 0;\n}<\/code><\/pre>\n<h2>13. Explain the concept of exception handling in C++<\/h2>\n<p>Exception handling is a mechanism in C++ for dealing with runtime errors or exceptional situations that may occur during program execution. It allows you to separate error-handling code from normal code, making your programs more robust and easier to maintain.<\/p>\n<p>Key components of exception handling:<\/p>\n<ul>\n<li><code>try<\/code>: Encloses the code that might throw an exception<\/li>\n<li><code>throw<\/code>: Used to throw an exception when a problem occurs<\/li>\n<li><code>catch<\/code>: Catches and handles the exception<\/li>\n<\/ul>\n<p>Example of exception handling:<\/p>\n<pre><code>#include &lt;iostream&gt;\n#include &lt;stdexcept&gt;\n\ndouble divide(double a, double b) {\n    if (b == 0) {\n        throw std::runtime_error(\"Division by zero!\");\n    }\n    return a \/ b;\n}\n\nint main() {\n    try {\n        std::cout &lt;&lt; divide(10, 2) &lt;&lt; std::endl; \/\/ OK\n        std::cout &lt;&lt; divide(10, 0) &lt;&lt; std::endl; \/\/ Throws exception\n    }\n    catch (const std::exception&amp; e) {\n        std::cerr &lt;&lt; \"Caught exception: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n    \n    return 0;\n}<\/code><\/pre>\n<h2>14. What is a lambda expression in C++?<\/h2>\n<p>Lambda expressions, introduced in C++11, allow you to create anonymous function objects. They provide a concise way to define small, inline functions that can be used in place of function objects or function pointers.<\/p>\n<p>Syntax of a lambda expression:<\/p>\n<pre><code>[capture clause](parameters) -&gt; return_type { function body }<\/code><\/pre>\n<p>Example using lambda expressions:<\/p>\n<pre><code>#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;algorithm&gt;\n\nint main() {\n    std::vector&lt;int&gt; numbers = {1, 2, 3, 4, 5};\n    \n    \/\/ Using a lambda to print each number\n    std::for_each(numbers.begin(), numbers.end(), [](int n) {\n        std::cout &lt;&lt; n &lt;&lt; \" \";\n    });\n    std::cout &lt;&lt; std::endl;\n    \n    \/\/ Using a lambda to transform the vector\n    std::transform(numbers.begin(), numbers.end(), numbers.begin(),\n                   [](int n) { return n * 2; });\n    \n    \/\/ Print the transformed vector\n    for (int n : numbers) {\n        std::cout &lt;&lt; n &lt;&lt; \" \";\n    }\n    std::cout &lt;&lt; std::endl;\n    \n    return 0;\n}<\/code><\/pre>\n<h2>15. What is the difference between compile-time and runtime polymorphism?<\/h2>\n<p>Polymorphism in C++ can be achieved in two ways: compile-time (static) polymorphism and runtime (dynamic) polymorphism.<\/p>\n<p>Compile-time polymorphism:<\/p>\n<ul>\n<li>Achieved through function overloading and templates<\/li>\n<li>Resolved at compile-time<\/li>\n<li>More efficient as there&#8217;s no runtime overhead<\/li>\n<li>Example: Function overloading, operator overloading<\/li>\n<\/ul>\n<p>Runtime polymorphism:<\/p>\n<ul>\n<li>Achieved through virtual functions and inheritance<\/li>\n<li>Resolved at runtime<\/li>\n<li>Allows for more flexibility and extensibility<\/li>\n<li>Example: Virtual functions in base and derived classes<\/li>\n<\/ul>\n<p>Example demonstrating both types of polymorphism:<\/p>\n<pre><code>\/\/ Compile-time polymorphism (function overloading)\nclass MathOperations {\npublic:\n    int add(int a, int b) { return a + b; }\n    double add(double a, double b) { return a + b; }\n};\n\n\/\/ Runtime polymorphism (virtual functions)\nclass Shape {\npublic:\n    virtual double area() = 0;\n};\n\nclass Rectangle : public Shape {\nprivate:\n    double width, height;\npublic:\n    Rectangle(double w, double h) : width(w), height(h) {}\n    double area() override { return width * height; }\n};\n\nclass Circle : public Shape {\nprivate:\n    double radius;\npublic:\n    Circle(double r) : radius(r) {}\n    double area() override { return 3.14159 * radius * radius; }\n};\n\nint main() {\n    MathOperations math;\n    std::cout &lt;&lt; math.add(5, 3) &lt;&lt; std::endl;      \/\/ Calls int add(int, int)\n    std::cout &lt;&lt; math.add(3.14, 2.86) &lt;&lt; std::endl; \/\/ Calls double add(double, double)\n    \n    Shape* shape1 = new Rectangle(5, 3);\n    Shape* shape2 = new Circle(2);\n    \n    std::cout &lt;&lt; shape1-&gt;area() &lt;&lt; std::endl; \/\/ Calls Rectangle::area()\n    std::cout &lt;&lt; shape2-&gt;area() &lt;&lt; std::endl; \/\/ Calls Circle::area()\n    \n    delete shape1;\n    delete shape2;\n    \n    return 0;\n}<\/code><\/pre>\n<h2>Conclusion<\/h2>\n<p>Mastering these C++ interview questions will significantly boost your chances of success in your next technical interview. Remember, the key to acing these interviews is not just memorizing answers, but understanding the underlying concepts and being able to apply them in practical scenarios.<\/p>\n<p>At AlgoCademy, we&#8217;re committed to helping you develop your programming skills and prepare for technical interviews. Our platform offers interactive coding tutorials, AI-powered assistance, and a wealth of resources to help you progress from beginner-level coding to tackling complex algorithmic problems.<\/p>\n<p>Keep practicing, stay curious, and don&#8217;t hesitate to dive deeper into any topics that interest you or challenge you. With dedication and the right resources, you&#8217;ll be well-prepared to tackle any C++ interview question that comes your way. Good luck with your interview preparation!<\/p>\n<\/article>\n<p><\/body><\/html><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Are you preparing for a C++ interview and feeling overwhelmed? Don&#8217;t worry! We&#8217;ve got you covered with this comprehensive guide&#8230;<\/p>\n","protected":false},"author":1,"featured_media":7109,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[],"class_list":["post-7110","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-problem-solving"],"_links":{"self":[{"href":"https:\/\/algocademy.com\/blog\/wp-json\/wp\/v2\/posts\/7110"}],"collection":[{"href":"https:\/\/algocademy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/algocademy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/algocademy.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/algocademy.com\/blog\/wp-json\/wp\/v2\/comments?post=7110"}],"version-history":[{"count":0,"href":"https:\/\/algocademy.com\/blog\/wp-json\/wp\/v2\/posts\/7110\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/algocademy.com\/blog\/wp-json\/wp\/v2\/media\/7109"}],"wp:attachment":[{"href":"https:\/\/algocademy.com\/blog\/wp-json\/wp\/v2\/media?parent=7110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/algocademy.com\/blog\/wp-json\/wp\/v2\/categories?post=7110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/algocademy.com\/blog\/wp-json\/wp\/v2\/tags?post=7110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}