If a break statement is encountered in a nested loop, it will exit _______. 

  • the outermost loop 
  • the innermost loop 
  • the function 
  • the program
When a break statement is encountered within a nested loop, it only exits the loop in which it's directly contained, i.e., the innermost loop. It does not affect any outer enclosing loops.

What is a friend function in C++? 

  • A function that always returns a friend object. 
  • A private function of a class. 
  • A function that can access private members of a class. 
  • A function that can only be called within its class.
A friend function in C++ is a special function that, although not a member of a class, has access to its private and protected members. This is used to allow non-member functions and other classes to access such members.

Consider a large-scale software project that heavily utilizes templates and generic programming. With an impending deadline, the compilation time is becoming a significant bottleneck. Which C++ feature/technique might be best suited to reduce compilation times without altering runtime performance? 

  • Decrease template depth 
  • Explicit template instantiation 
  • Use dynamic polymorphism
  • Use of inline functions 
Explicit template instantiation can help reduce compilation times by instructing the compiler to instantiate the templates in a specific source file rather than whenever they're used. This can help reduce redundancy and speed up the compilation of large projects that heavily rely on templates.

Consider enum class in C++11 and above. Which of the following is a true statement about its functionality? 

  • It allows for automatic type conversion. 
  • It cannot be forward declared. 
  • It restricts the scope of the enumerator values to the enumeration. 
  • It cannot be used with switch statements.
In C++11 and later, enum class (or "strongly typed enumerations") was introduced. Unlike traditional enums, the enumerators of an enum class are not exported to the surrounding scope, thus preventing name clashes. This essentially gives them a "scoped" behavior. This feature enhances type safety and code clarity.

You are tasked with optimizing a piece of code containing nested loops... 

  • Move calculations outside of the loops. 
  • Replace inner loop with a lookup table. 
  • Inline the inner loop calculations. 
  • Prefetch data before processing in the inner loop.
A lookup table can be used to store pre-computed results of complex calculations. By replacing the inner loop's calculations with lookups from this table, one can often achieve significant speedups, especially if the same calculations are being performed repeatedly.

You are developing a financial application with various account types. How would you design the classes to achieve this and allow future modifications? 

  • Singleton Pattern 
  • Composition 
  • Prototype Pattern 
  • Inheritance and Polymorphism
Using inheritance, a base class 'Account' can be created with methods like 'withdraw', 'deposit', and 'calculateInterest'. Derived classes like 'SavingsAccount', 'CurrentAccount', etc., can then override these methods to provide specific implementations. Polymorphism ensures these methods are called appropriately.

What happens if an exception occurs in a destructor in C++? 

  • The program will retry the destructor 
  • A default destructor is called 
  • The program terminates 
  • The exception is ignored
If an exception is thrown from a destructor, and it's not caught within the destructor, the C++ runtime system will terminate the program. Destructors are often invoked during stack unwinding when an exception is thrown, so allowing exceptions to propagate out can lead to unpredictable behavior.

Which of the following C++ standards introduced smart pointers? 

  • C++03 
  • C++11 
  • C++14
  • C++98 
Smart pointers, like std::shared_ptr, std::unique_ptr, and std::weak_ptr, were introduced in C++11. They are part of the C++ Standard Library and are designed to manage the lifecycle of dynamically allocated objects, preventing memory leaks.

In terms of object-oriented design principles, what is typically the most significant critique against the use of friend functions? 

  • They break encapsulation. 
  • They increase execution time. 
  • They aren't necessary in OOP. 
  • They cause memory leaks.
Friend functions have the ability to access private and protected members of a class, which can be seen as a violation of the principle of encapsulation in object-oriented programming. While they offer flexibility, they can break the boundaries set by encapsulation.

You are building a configuration parser for a C++ application... 

  • Use std::ifstream and check its state 
  • Read entire file and validate before parsing 
  • Use regular expressions to parse 
  • Use std::fscanf
When using std::ifstream, it's possible to check the state of the stream (e.g., fail(), bad(), eof()) after operations. This allows for robust error handling by identifying issues like file corruption. Ensuring stream integrity before operations can prevent runtime issues.