C++ Flashcards

1
Q

C++

What is encapsulation??

A

Containing and hiding information about an object, such as internal data structures and code.

Encapsulation isolates the internal complexity of an object’s operation from the rest of the application. For example, a client component asking for net revenue from a business object need not know the data’s origin.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

C++

What is inheritance?

A

Inheritance allows one class to reuse the state and behavior of another class.

The derived class inherits the properties and method implementations of the base class and extends it by overriding methods and adding additional properties and methods.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

C++

What is Polymorphism??

A

Ploymorphism allows a client to treat different objects in the same way even if they were created from different classes and exhibit different behaviors.

You can use implementation inheritance to achieve polymorphism in languages such as C++ and Java.

Base class object’s pointer can invoke methods in derived class objects.

You can also achieve polymorphism in C++ by function overloading and operator overloading.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

C++

What is constructor or ctor?

A

Constructor creates an object and initializes it. It also creates vtable for virtual functions. It is different from other methods in a class.

Constructor with no arguments or all the arguments has default values.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

C++

What is a destructor?

A

In object-oriented programming, a destructor (sometimes shortened to dtor) is a method which is automatically invoked when the object is destroyed.

It can happen when its lifetime is bound to scope and the execution leaves the scope, when it is embedded into another object whose lifetime ends, or when it was allocated dynamically and is released explicitly.

Its main purpose is to free the resources (memory alloactions, open files or sockets, database connections, resource locks, etc.) which were acquired by the object along its life cycle and/or deregister from other entities which may keep references to it.

The use of destructors is a necessity to the concept of Resource Acquisition Is Initialization (RAII).

In a language with an automatic garbage collection mechanism, it would be difficult to deterministically ensure the invocation of a destructor, and hence these languages are generally considered unsuitable for RAII. In such languages, unlinking an object from existing resources must be done by an explicit call of an appropriate function (usually called Dispose()). This method is also recommended for freeing resources rather than using finalizers for that.

C++ has the naming convention in which destructors have the same name as the class of which they are associated with, but prefixed with a tilde (~).

The destructor has the same name as the class, but with a tilde (~) in front of it. If the object was created as an automatic variable, its destructor is automatically called when it goes out of scope. If the object was created with a new expression, then its destructor is called when the delete operator is applied to a pointer to the object. Usually that operation occurs within another destructor, typically the destructor of a smart pointer object.

In inheritance hierarchies, the declaration of a virtual destructor in the base class ensures that the destructors of derived classes are invoked properly when an object is deleted through a pointer-to-base-class. Objects that may be deleted in this way need to inherit a virtual destructor.

A destructor should never throw an exception.[2]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

C++

What is copy constructor?

A

Constructor which initializes the it’s object member variables ( by shallow copying) with another object of the same class. If you don’t implement one in your class then compiler implements one for you.

It is a constructore which initializes it’s object member variable with another object of the same class. If you don’t implement a copy constructor in your class, the compiler automatically does it.

for example:
Boo Obj1(10); // calling Boo constructor
Boo Obj2(Obj1); // calling boo copy constructor
Boo Obj2 = Obj1;// calling boo copy constructor
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

C++

When are copy constructors called?

A

Copy constructors are called in following cases:

  1. When a function returns an object of that class by value
  2. When the object of that class is passed by value as an argument to a function
  3. When you construct an object based on another object of the same class
  4. When compiler generates a temporary object
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

C++

What is assignment operator?

A

Default assignment operator handles assigning one object to another of the same class.

Member to member copy (shallow copy)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

C++

What are all the implicit member functions of the class? Or what are all the functions which compiler implements for us if we don’t define one.??

A
  1. Default ctor
  2. Copy ctor
  3. Assignment operator
  4. Default destructor
  5. Address operator
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

C++

What is conversion constructor?

A

Constructor with a single argument makes that constructor as conversion ctor and it can be used for type conversion.

for example:

class Boo
{
  public: Boo( int i );
};

Boo BooObject = 10 ; // assigning int 10 Boo object

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

C++

What is conversion operator??

A

Class can have a public method for specific data type conversions.

for example:

class Boo
{
  double value;
  public: Boo(int i )
    operator double() 
    { 
        return value;
    }
};

Boo BooObject;

double i = BooObject; // assigning object to variable i of type double. now conversion operator gets called to assign the value.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

C++

What is diff between malloc()/free() and new/delete?

A

Malloc allocates memory for object in heap but doesn’t invoke object’s constructor to initiallize the object.

New allocates memory and also invokes constructor to initialize the object.

Malloc() and Free()
1. Do not support object semantics
2. Does not construct and destruct objects
string * ptr = (string *)(malloc (sizeof(string)))
3. Are not safe
4. Does not calculate the size of the objects that it construct

  1. Returns a pointer to void
    int *p = (int *) (malloc(sizeof(int)));
    int *p = new int;
  2. Are not extensible

new and delete can be overloaded in a class

“delete” first calls the object’s termination routine (i.e. its destructor) and then releases the space the object occupied on the heap memory. If an array of objects was created using new, then delete must be told that it is dealing with an array by preceding the name with an empty []:-

Int_t *my_ints = new Int_t[10];

delete []my_ints;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

C++

what is the diff between “new” and “operator new” ?

A

“operator new” works like malloc.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

C++

What is difference between template and macro??

A

define min(i, j) (i < j ? i : j)

There is no way for the compiler to verify that the macro parameters are of compatible types. The macro is expanded without any special type checking.

If macro parameter has a postincremented variable ( like c++ ), the increment is performed two times.

Because macros are expanded by the preprocessor, compiler error messages will refer to the expanded macro, rather than the macro definition itself. Also, the macro will show up in expanded form during debugging.

for example:

Macro:

template:
template 
T min (T i, T j) 
{ 
   return i < j ? i : j;
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

C++

What are C++ storage classes?

A

Auto
Register
Static
Extern

Auto: the default. Variables are automatically created and initialized when they are defined and are destroyed at the end of the block containing their definition. They are not visible outside that block

Register: a type of auto variable. a suggestion to the compiler to use a CPU register for performance

Static: a variable that is known only in the function that contains its definition but is never destroyed and retains its value between calls to that function. It exists from the time the program begins execution

Extern: a static variable whose definition and placement is determined when all object and library modules are combined (linked) to form the executable code file. It can be visible outside the file where it is defined.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What are storage qualifiers in C++ ?

A

They are..

Const
Volatile
Mutable

Const keyword indicates that memory once initialized, should not be altered by a program.

Volatile keyword indicates that the value in the memory location can be altered even though nothing in the program
code modifies the contents. for example if you have a pointer to hardware location that contains the time, where hardware changes the value of this pointer variable and not the program. The intent of this keyword to improve the optimization ability of the compiler.

Mutable keyword indicates that particular member of a structure or class can be altered even if a particular structure variable, class, or class member function is constant.

struct data
{
  char name[80];
  mutable double salary;
}

const data MyStruct = { “Satish Shetty”, 1000 }; //initlized by complier

strcpy ( MyStruct.name, “Shilpa Shetty”); // compiler error
MyStruct.salaray = 2000 ; // complier is happy allowed

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

C++

What is reference?

A

Reference is a name that acts as an alias, or alternative name, for a previously defined variable or an object.

prepending variable with “&” symbol makes it as reference.

for example:

int a;
int &b = a;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

C++

What is passing by reference?

A

Method of passing arguments to a function which takes parameter of type reference.

for example:

void swap( int & x, int & y )
{
  int temp = x;
  x = y;
  y = temp; 
}

int a=2, b=3;

swap( a, b );

Basically, inside the function there won’t be any copy of the arguments “x” and “y” instead they refer to original variables a and b. so no extra memory needed to pass arguments and it is more efficient.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

C++

When do use “const” reference arguments in function?

A
  1. Using const protects you against programming errors that inadvertently alter data.
  2. Using const allows function to process both const and non-const actual arguments, while a function without const in the prototype can only accept non constant arguments.
  3. Using a const reference allows the function to generate and use a temporary variable appropriately.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

C++

When are temporary variables created by C++ compiler?

A

Provided that function parameter is a “const reference”, compiler generates temporary variable in following 2 ways.

  1. The actual argument is the correct type, but it isn’t Lvalue
double Cube(const double & num)
{
  num = num * num * num;
  return num;

}

double temp = 2.0;
double value = cube(3.0 + temp); // argument is a expression and not a Lvalue;

  1. The actual argument is of the wrong type, but of a type that can be converted to the correct type

long temp = 3L;
double value = cuberoot ( temp); // long to double conversion

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

C++

What is virtual function?

A

When derived class overrides the base class method by redefining the same function, then if client wants to access redefined the method from derived class through a pointer from base class object, then you must define this function in base class as virtual function.

class parent
{
   void Show() 
  { 
      cout << "i'm parent" << endl;
   }
};
class child: public parent
{
   void Show() 
   { 
       cout << "i'm child" << endl;
    }
};

parent * parent_object_ptr = new child;

parent_object_ptr->show() 
// calls parent->show() i 

now we goto virtual world…

class parent
{
   virtual void Show() 
   { 
      cout << "i'm parent" << endl;
    }
};
class child: public parent
{
   void Show() 
   { 
     cout << "i'm child" << endl;
   }
};

parent * parent_object_ptr = new child;

parent_object_ptr->show() 
// calls child->show()
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

C++

What is pure virtual function? or what is abstract class?

A

When you define only function prototype in a base class without implementation and do the complete implementation in derived class. This base class is called abstract class and client won’t able to instantiate an object using this base class.

You can make a pure virtual function or abstract class this way..

class Boo
{
   void foo() = 0;
}

Boo MyBoo; // compilation error

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

C++

What is Memory alignment??

A

The term alignment primarily means the tendency of an address pointer value to be a multiple of some power of two. So a pointer with two byte alignment has a zero in the least significant bit. And a pointer with four byte alignment has a zero in both the two least significant bits. And so on. More alignment means a longer sequence of zero bits in the lowest bits of a pointer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

C++

What problem does the namespace feature solve?

A

Multiple providers of libraries might use common global identifiers causing a name collision when an application tries to link with two or more such libraries. The namespace feature surrounds a library’s external declarations with a unique namespace that eliminates the potential for those collisions.

namespace [identifier] { namespace-body }

A namespace declaration identifies and assigns a name to a declarative region.
The identifier in a namespace declaration must be unique in the declarative region in which it is used. The identifier is the name of the namespace and is used to reference its members.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

C++

What is the use of ‘using’ declaration?

A

A using declaration makes it possible to use a name from a namespace without the scope operator.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

C++

What is an Iterator class?

A

A class that is used to traverse through the objects maintained by a container class.

There are five categories of iterators:

  1. Input iterators
  2. Output iterators
  3. Forward iterators
  4. Bidirectional iterators
  5. Random access.

An iterator is an entity that gives access to the contents of a container object without violating encapsulation constraints.

Access to the contents is granted on a one-at-a-time basis in order. The order can be storage order (as in lists and queues) or some arbitrary order (as in array indices) or according to some ordering relation (as in an ordered binary tree).

The iterator is a construct, which provides an interface that, when called, yields either the next element in the container, or some value denoting the fact that there are no more elements to examine.

Iterators hide the details of access to and update of the elements of a container class. Something like a pointer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

C++

What is a dangling pointer?

A

A dangling pointer arises when you use the address of an object after its lifetime is over. This may occur in situations like returning addresses of the automatic variables from a function or using the address of the memory block after it is freed.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

C++

What do you mean by Stack unwinding?

A

It is a process during exception handling when the destructor is called for all local objects in the stack between the place where the exception was thrown and where it is caught.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

C++

Name the operators that cannot be overloaded??

A

sizeof, ., .*, .->, ::, ?:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

C++

What is a container class? What are the types of container classes?

A

A container class is a class that is used to hold objects in memory or external storage.

A container class acts as a generic holder.

A container class has a predefined behavior and a well-known interface.

A container class is a supporting class whose purpose is to hide the topology used for maintaining the list of objects in memory.

When a container class contains a group of mixed objects, the container is called a heterogeneous container; when the container is holding a group of objects that are all the same, the container is called a homogeneous container.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

C++

What is inline function??

A

The __inline keyword tells the compiler to substitute the code within the function definition for every instance of a function call. However, substitution occurs only at the compiler’s discretion. For example, the compiler does not inline a function if its address is taken or if it is too large to inline.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

C++

What is overloading??

A

To override a method, a subclass of the class that originally declared the method must declare a method with the same name, return type (or a subclass of that return type), and same parameter list.

The definition of the method overriding is:

· Must have same method name.
· Must have same data type.
· Must have same argument list.

Overriding a method means that replacing a method functionality in child class. To imply overriding functionality we need parent and child classes. In the child class you define the same method signature as one defined in the parent class.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

C++

What is “this” pointer?

A

The this pointer is a pointer accessible only within the member functions of a class, struct, or union type. It points to the object for which the member function is called. Static member functions do not have a this pointer.

When a nonstatic member function is called for an object, the address of the object is passed as a hidden argument to the function. For example, the following function call

myDate.setMonth( 3 );

can be interpreted this way:

setMonth( &myDate, 3 );

The object’s address is available from within the member function as the this pointer. It is legal, though unnecessary, to use the this pointer when referring to members of the class.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

C++

What happens when you make call “delete this;” ?

A

The code has two built-in pitfalls.

  1. If it executes in a member function for an extern, static, or automatic object, the program will probably crash as soon as the delete statement executes. There is no portable way for an object to tell that it was instantiated on the heap, so the class cannot assert that its object is properly instantiated.
  2. When an object commits suicide this way, the using program might not know about its demise. As far as the instantiating program is concerned, the object remains in scope and continues to exist even though the object did itself in. Subsequent dereferencing of the pointer can and usually does lead to disaster.

You should never do this. Since compiler does not know whether the object was allocated on the stack or on the heap, “delete this” could cause a disaster.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

C++

How virtual functions are implemented C++?

A

Virtual functions are implemented using a table of function pointers, called the vtable. There is one entry in the table per virtual function in the class. This table is created by the constructor of the class. When a derived class is constructed, its base class is constructed first which creates the vtable. If the derived class overrides any of the base classes virtual functions, those entries in the vtable are overwritten by the derived class constructor. This is why you should never call virtual functions from a constructor: because the vtable entries for the object may not have been set up by the derived class constructor yet, so you might end up calling base class implementations of those virtual functions

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

C++

What is the difference between a pointer and a reference?

A

A reference must always refer to some object and, therefore, must always be initialized; pointers do not have such restrictions.

A pointer can be reassigned to point to different objects while a reference always refers to an object with which it was initialized.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

C++

How are prefix and postfix versions of operator++() differentiated?

A

The postfix version of operator++() has a dummy parameter of type int. The prefix version does not have dummy parameter.

Whenever you have a choice, you should use the C++ prefix increment and decrement operators (e.g. ++i) instead of the postfix versions (e.g. i++). This will make your code more efficient, clear and consistent. This advice applies (more or less) to most languages that have both prefix and postfix operators.

  1. Efficiency
    Code like this is quite common:

for (i = 0; i Increment(); // or whatever
return *this;
}

// Postfix increment
const Incrementable Incrementable::operator++(int)
{
    Incrementable temp(*this);
    this->Increment(); // or whatever
    return temp;
}

Even allowing for typical optimizations, this still results in one useless object (temp) being copy constructed. Even if i is an integral type today, somebody might change it tomorrow to be some relatively heavyweight class type like an iterator: suddenly, you get a new object created and destroyed every time through the loop. Simply switching to ++i would avoid this waste.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

C++

What is the difference between const char *myPointer and char *const myPointer?

A

Const char *myPointer is a non constant pointer to constant data; while char *const myPointer is a constant pointer to non constant data.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

C++

How can I handle a constructor that fails?

A

throw an exception. Constructors don’t have a return type, so it’s not possible to use return codes. The best way to signal constructor failure is therefore to throw an exception.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

C++

How can I handle a destructor that fails?

A

Write a message to a log-file. But do not throw an exception.

The C++ rule is that you must never throw an exception from a destructor that is being called during the “stack unwinding” process of another exception.

For example, if someone says throw Foo(), the stack will be unwound so all the stack frames between the throw Foo() and the } catch (Foo e) { will get popped. This is called stack unwinding.

During stack unwinding, all the local objects in all those stack frames are destructed. If one of those destructors throws an exception (say it throws a Bar object), the C++ runtime system is in a no-win situation: should it ignore the Bar and end up in the } catch (Foo e) { where it was originally headed?

Should it ignore the Foo and look for a } catch (Bar e) { handler? There is no good answer – either choice loses information.

So the C++ language guarantees that it will call terminate() at this point, and terminate() kills the process. Bang you’re dead.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

C++

What is Virtual Destructor?

A

Using virtual destructors, you can destroy objects without knowing their type - the correct destructor for the object is invoked using the virtual function mechanism. Note that destructors can also be declared as pure virtual functions for abstract classes.

if someone will derive from your class, and if someone will say “new Derived”, where “Derived” is derived from your class, and if someone will say delete p, where the actual object’s type is “Derived” but the pointer p’s type is your class.

If your class has at least one virtual function, you should have a virtual destructor. This allows you to delete a dynamic object through a baller to a base class object. In absence of this, the wrong destructor will be invoked during deletion of the dynamic object.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

C++

Can you think of a situation where your program would crash without reaching the breakpoint which you set at the beginning of main()?

A

C++ allows for dynamic initialization of global variables before main() is invoked.

It is possible that initialization of global will invoke some function. If this function crashes the crash will occur before main() is entered.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q

C++

Name two cases where you MUST use initialization list as opposed to assignment in constructors.

A

Both non-static const data members and reference data members cannot be assigned values; instead, you should use initialization list to initialize them.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
44
Q

C++

Can you overload a function based only on whether a parameter is a value or a reference?

A

No. Passing by value and by reference looks identical to the caller.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
45
Q

What are the differences between a C++ struct and C++ class?

A

The default member and base class access specifiers are different.

The C++ struct has all the features of the class. The only differences are that a struct defaults to public member access and public base class inheritance, and a class defaults to the private access specifier and private base class inheritance.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
46
Q

C++

What does extern “C” int func(int *, Foo)
accomplish?

A

It will turn off “name mangling” for func so that one can link to code compiled by a C compiler.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
47
Q

C++

How do you access the static member of a class?

A

::

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
48
Q

C++

What is multiple inheritance(virtual inheritance)? What are its advantages and disadvantages?

A

Multiple Inheritance is the process whereby a child can be derived from more than one parent class.

The advantage of multiple inheritance is that it allows a class to inherit the functionality of more than one base class thus allowing for modeling of complex relationships.

The disadvantage of multiple inheritance is that it can lead to a lot of confusion(ambiguity) when two base classes implement a method with the same name.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
49
Q

What are the access privileges in C++? What is the default access level?

A

The access privileges in C++ are private, public and protected.

The default access level assigned to members of a class is private.

Private members of a class are accessible only within the class and by friends of the class.

Protected members are accessible by the class itself and it’s sub-classes. Public members of a class can be accessed by anyone.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
50
Q

C++

What is a nested class? Why can it be useful?

A

A nested class is a class enclosed within the scope of another class. For example:

  //  Example 1: Nested class
  //
  class OuterClass
  {
    class NestedClass
    {
      // ...
    };
    // ...
  };
Nested classes are useful for organizing code and controlling access and dependencies. Nested classes obey access rules just like other parts of a class do; so, in Example 1, if NestedClass is public then any code can name it as OuterClass::NestedClass. Often nested classes contain private implementation details, and are therefore made private; in Example 1, if NestedClass is private, then only OuterClass's members and friends can use NestedClass.

When you instantiate as outer class, it won’t instantiate inside class.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
51
Q

C++

What is a local class? Why can it be useful?

A

local class is a class defined within the scope of a function – any function, whether a member function or a free function. For example:

  //  Example 2: Local class
  //
  int f()
  {
    class LocalClass
    {
      // ...
    };
    // ...
  };

Like nested classes, local classes can be a useful tool for managing code dependencies.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
52
Q

C++

Can a copy constructor accept an object of 
the same class as parameter, instead of reference of the object?
A

No. It is specified in the definition of the copy constructor itself. It should generate an error if a programmer specifies a copy constructor with a first argument that is an object and not a reference.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
53
Q

C++

What is the difference between an ARRAY and a LIST?

A

Answer1
Array is collection of homogeneous elements.
List is collection of heterogeneous elements.

For Array memory allocated is static and continuous.
For List memory allocated is dynamic and Random.

Array: User need not have to keep in track of next memory allocation.
List: User has to keep in Track of next location where memory is allocated.

Answer2
Array uses direct access of stored members, list uses sequencial access for members.

//With Array you have direct access to memory position 5
Object x = a[5]; // x takes directly a reference to 5th element of array

//With the list you have to cross all previous nodes in order to get the 5th node:
list mylist;
list::iterator it;

for( it = list.begin() ; it != list.end() ; it++ )
{
   if( i==5)
   {
      x = *it;
      break;
    }
   i++;
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
54
Q

C++

What is a template?

A

Templates allow to create generic functions that admit any data type as parameters and return value without having to overload the function with all the possible data types. Until certain point they fulfill the functionality of a macro. Its prototype is any of the two following ones:

template function_declaration; template function_declaration;

The only difference between both prototypes is the use of keyword class or typename, its use is indistinct since both expressions have exactly the same meaning and behave exactly the same way.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
55
Q

C++

What is the difference between class and structure?

A

Structure: Initially (in C) a structure was used to bundle different type of data types together to perform a particular functionality. But C++ extended the structure to contain functions also.

The major difference is that all declarations inside a structure are by default public.

Class: Class is a successor of Structure. By default all the members inside the class are private.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
56
Q

C++

What is RTTI?

A

Runtime type identification (RTTI) lets you find the dynamic type of an object when you have only a pointer or a reference to the base type. RTTI is the official way in standard C++ to discover the type of an object and to convert the type of a pointer or reference (that is, dynamic typing). The need came from practical experience with C++.

RTTI replaces many Interview Questions - Homegrown versions with a solid, consistent approach.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
57
Q

C++

What is namespace?

A

Namespaces allow us to group a set of global classes, objects and/or functions under a name. To say it somehow, they serve to split the global scope in sub-scopes known as namespaces.

The form to use namespaces is:
namespace identifier { namespace-body }
Where identifier is any valid identifier and namespace-body is the set of classes, objects and functions that are included within the namespace.

For example:
namespace general { int a, b; } In this case, a and b are normal variables integrated within the general namespace. In order to access to these variables from outside the namespace we have to use the scope operator ::.

For example, to access the previous variables we would have to put:
general::a general::b

The functionality of namespaces is specially useful in case that there is a possibility that a global object or function can have the same name than another one, causing a redefinition error.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
58
Q

C++

What is Boyce Codd Normal form?

A

A relation schema R is in BCNF with respect to a set F of functional dependencies if for all functional dependencies in F+ of the form a-> , where a and b is a subset of R, at least one of the following holds:

  • a- > b is a trivial functional dependency (b is a subset of a)
  • a is a superkey for schema R
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
59
Q

C++

What is virtual class and friend class?

A

Friend classes are used when two or more classes are designed to work together and need access to each other’s implementation in ways that the rest of the world shouldn’t be allowed to have. In other words, they help keep private things private. For instance, it may be desirable for class DatabaseCursor to have more privilege to the internals of class Database than main() has.

What is the word

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
60
Q

C++

What is the word you will use when defining a function in base class to allow this function to be a polimorphic function?

A

virtual

61
Q

C++

What do you mean by binding of data and functions?

A

Encapsulation

62
Q

What are 2 ways of exporting a function from a DLL?

A
  1. Taking a reference to the function from the DLL instance.

2. Using the DLL ’s Type Library

63
Q

C++

What is the difference between an object and a class?

A

Classes and objects are separate but related concepts. Every object belongs to a class and every class contains one or more related objects.

  • A Class is static. All of the attributes of a class are fixed before, during, and after the execution of a program. The attributes of a class don’t change.
  • The class to which an object belongs is also (usually) static. If a particular object belongs to a certain class at the time that it is created then it almost certainly will still belong to that class right up until the time that it is destroyed.
  • An Object on the other hand has a limited lifespan. Objects are created and eventually destroyed. Also during that lifetime, the attributes of the object may undergo significant change.
64
Q

C++

Suppose that data is an array of 1000 integers. Write a single function call that will sort the 100 elements data [222] through data [321].

A

quicksort ((data + 222), 100);

65
Q

C++

What is a class?

A

Class is a user-defined data type in C++. It can be created to solve a particular kind of problem. After creation the user need not know the specifics of the working of a class.

66
Q

C++

What is friend function?

A

As the name suggests, the function acts as a friend to a class. As a friend of a class, it can access its private and protected members. A friend function is not a member of the class. But it must be listed in the class definition.

67
Q

C++

What are virtual functions?

A

A virtual function allows derived classes to replace the implementation provided by the base class. The compiler makes sure the replacement is always called whenever the object in question is actually of the derived class, even if the object is accessed by a base pointer rather than a derived pointer. This allows algorithms in the base class to be replaced in the derived class, even if users don’t know about the derived class.

68
Q

C++

What is the difference between an external iterator and an internal iterator? Describe an advantage of an external iterator.

A

An internal iterator is implemented with member functions of the class that has items to step through. .An external iterator is implemented as a separate class that can be “attach” to the object that has items to step through. .

An external iterator has the advantage that many difference iterators can be active simultaneously on the same object.

69
Q

C++

What is a scope resolution operator?

A

A scope resolution operator (::), can be used to define the member functions of a class outside the class.

70
Q

C++

What do you mean by pure virtual functions?

A

A pure virtual member function is a member function that the base class forces derived classes to provide. Normally these member functions have no implementation.

Pure virtual functions are equated to zero.
class Shape { public: virtual void draw() = 0; };
71
Q

C++

How do you decide which integer type to use?

A

It depends on our requirement. When we are required an integer to be stored in 1 byte (means less than or equal to 255) we use short int, for 2 bytes we use int, for 8 bytes we use long int.

A char is for 1-byte integers, a short is for 2-byte integers, an int is generally a 2-byte or 4-byte integer (though not necessarily), a long is a 4-byte integer, and a long long is a 8-byte integer.

72
Q

C++

What is the difference between char a[] = “string”; and char *p = “string”;?

A

In the first case 6 bytes are allocated to the variable a which is fixed, where as in the second case if *p is assigned to some other value the allocate memory can change.

73
Q

C++

What’s the auto keyword good for?

A

Answer1
Not much. It declares an object with automatic storage duration. Which means the object will be destroyed at the end of the objects scope. All variables in functions that are not declared as static and not dynamically allocated have automatic storage duration by default.

For example
int main()
{
   int a; 
   //this is the same as writing “auto int a;”
} 

Answer2
Local variables occur within a scope; they are “local” to a function. They are often called automatic variables because they automatically come into being when the scope is entered and automatically go away when the scope closes. The keyword auto makes this explicit, but local variables default to auto auto auto auto so it is never necessary to declare something as an auto auto auto auto.

74
Q

C++

How do I initialize a pointer to a function?

A
This is the way to initialize a pointer to a function
void fun(int a)
{

}

void main()
{
    void (*fp)(int);
    fp=fun;
    fp(1);
}
75
Q

C++

How do you link a C++ program to C functions?

A

By using the extern “C” linkage specification around the C function declarations.

76
Q

C++

Explain the scope resolution operator.

A

It permits a program to reference an identifier in the global scope that has been hidden by another identifier with the same name in the local scope.

77
Q

C++

What are the differences between a C++ struct and C++ class?

A

The default member and base-class access specifier are different.

78
Q

C++

How many ways are there to initialize an int with a constant?

A

Two.
There are two formats for initializers in C++ as shown in the example that follows. The first format uses the traditional C notation. The second format uses constructor notation.

int foo = 123;
int bar (123);
79
Q

C++

How does throwing and catching exceptions differ from using setjmp and longjmp?

A

The throw operation calls the destructors for automatic objects instantiated since entry to the try block.

80
Q

C++

What is a default constructor?

A
Default constructor WITH arguments 
class B 
   { 
      public: B (int m = 0) : n (m) {} int n; }; 
      int main(int argc, char *argv[]) 
      { B b; return 0; }
81
Q

C++

What is a conversion constructor?

A

A constructor that accepts one argument of a different type.

82
Q

C++

What is the difference between a copy constructor and an overloaded assignment operator?

A

A copy constructor constructs a new object by using the content of the argument object.

The assignment operator is used to copy the values from one object to another already existing object. The key words here are “already existing”. Consider the following example:

Cents cMark(5); 
// calls Cents constructor 
Cents cNancy; 
//calls Cents default constructor 
cNancy = cMark; 
// calls Cents assignment operator 

What happens if the object being copied into does not already exist? To understand what happens in that case, we need to talk about the copy constructor.

Cents cMark(5); 
// calls Cents constructor 
Cents cNancy = cMark; 
// calls Cents copy constructor!

Because the second statement uses an equals symbol in it, you might expect that it calls the assignment operator. However, it doesn’t! It actually calls a special type of constructor called a copy constructor. A copy constructor is a special constructor that initializes a new object from an existing object.

The purpose of the copy constructor and the assignment operator are almost equivalent — both copy one object to another. However, the assignment operator copies to existing objects, and the copy constructor copies to newly created objects.

The difference between the copy constructor and the assignment operator causes a lot of confusion for new programmers, but it’s really not all that difficult. Summarizing:

If a new object has to be created before the copying can occur, the copy constructor is used.

If a new object does not have to be created before the copying can occur, the assignment operator is used.

There are three general cases where the copy constructor is called instead of the assignment operator:

When instantiating one object and initializing it with values from another object (as in the example above).
When passing an object by value.
When an object is returned from a function by value.

In each of these cases, a new variable needs to be created before the values can be copied — hence the use of the copy constructor.

Because the copy constructor and assignment operator essentially do the same job (they are just called in different cases), the code needed to implement them is almost identical.

83
Q

C++

When should you use multiple inheritance?

A

There are three acceptable answers: “Never,” “Rarely,” and “When the problem domain cannot be accurately modeled any other way.”

84
Q

C++

Explain the ISA and HASA class relationships. How would you implement each in a class design?

A

A specialized class “is” a specialization of another class and, therefore, has the ISA relationship with the other class.

An Employee ISA Person. This relationship is best implemented with inheritance. Employee is derived from Person. A class may have an instance of another class. For example, an employee “has” a salary, therefore the Employee class has the HASA relationship with the Salary class. This relationship is best implemented by embedding an object of the Salary class in the Employee class.

85
Q

C++

When is a template a better solution than a base class?

A

When you are designing a generic class to contain or otherwise manage objects of other types, when the format and behavior of those other types are unimportant to their containment or management, and particularly when those other types are unknown (thus, the generosity) to the designer of the container or manager class.

86
Q

C++

What is a mutable member?

A

One that can be modified by the class even when the object of the class or the member function doing the modification is const.

87
Q

C++

What is an explicit constructor?

A

A conversion constructor declared with the explicit keyword. The compiler does not use an explicit constructor to implement an implied conversion of types. It’s purpose is reserved explicitly for construction.

88
Q

C++

What is the Standard Template Library (STL)?

A

A library of container templates approved by the ANSI committee for inclusion in the standard C++ specification.

A programmer who then launches into a discussion of the generic programming model, iterators, allocators, algorithms, and such, has a higher than average understanding of the new technology that STL brings to C++ programming.

89
Q

C++

Describe run-time type identification.

A

The ability to determine at run time the type of an object by using the typeid operator or the dynamic_cast operator.

90
Q

C++

What problem does the namespace feature solve?

A

Multiple providers of libraries might use common global identifiers causing a name collision when an application tries to link with two or more such libraries. The namespace feature surrounds a library’s external declarations with a unique namespace that eliminates the potential for those collisions.
This solution assumes that two library vendors don’t use the same namespace identifier, of course.

91
Q

C++

Are there any new intrinsic (built-in) data types?

A

Yes. The ANSI committee added the bool intrinsic type and its true and false value keywords.

92
Q

C++What is the difference between Mutex and Binary semaphore?

A

Semaphore is used to synchronize processes. where as mutex is used to provide synchronization between threads running in the same process.

Their synchronization semantics are very different:

  • Mutexes allow serialization of access to a given resource i.e. multiple threads wait for a lock, one at a time and as previously said, the thread owns the lock until it is done: only this particular thread can unlock it.
  • A Binary Semaphore is a counter with value 0 and 1: a task blocking on it until any task does a sem_post. The semaphore advertises that a resource is available, and it provides the mechanism to wait until it is signaled as being available.

As such one can see a mutex as a token passed from task to tasks and a semaphore as traffic red-light (it signals someone that it can proceed).

93
Q

In C++, what is the difference between method overloading and method overriding?

A

Overloading a method (or function) in C++ is the ability for functions of the same name to be defined as long as these methods have different signatures (different set of parameters).

Method overriding is the ability of the inherited class rewriting the virtual method of the base class.

94
Q

C++

What methods can be overridden in Java?

A

In C++ terminology, all public methods in Java are virtual. Therefore, all Java methods can be overwritten in subclasses except those that are declared final, static, and private.

95
Q

C++

What are the defining traits of an object-oriented language?

A

The defining traits of an object-oriented langauge are:

  • encapsulation
  • inheritance
  • polymorphism
96
Q

C++

Assignment Operator - What is the diffrence between a “assignment operator” and a “copy constructor”?

A
Answer1. 
In assignment operator, you are assigning a value to an existing object. But in copy constructor, you are creating a new object and then assigning a value to that object. For example: 
complex c1,c2;
c1=c2; //this is assignment
complex c3=c2; //copy constructor

Answer2.
A copy constructor is used to initialize a newly declared variable from an existing variable. This makes a deep copy like assignment, but it is somewhat simpler:

There is no need to test to see if it is being initialized from itself.

There is no need to clean up (eg, delete) an existing value (there is none).
A reference to itself is not returned.

97
Q

C++

RTTI - What is RTTI?

A

Answer1.
RTTI stands for “Run Time Type Identification”. In an inheritance hierarchy, we can find out the exact type of the objet of which it is member. It can be done by using:

1) dynamic id operator
2) typecast operator

Answer2.
RTTI is defined as follows: Run Time Type Information, a facility that allows an object to be queried at runtime to determine its type. One of the fundamental principles of object technology is polymorphism, which is the ability of an object to dynamically change at runtime.

98
Q

C++

STL Containers - What are the types of STL containers?

A

There are 3 types of STL containers:

  1. Adaptive containers like queue, stack
  2. Associative containers like set, map
  3. Sequence containers like vector, deque
99
Q

C++

What is the need for a Virtual Destructor ?

A

Destructors are declared as virtual because if do not declare it as virtual the base class destructor will be called before the derived class destructor and that will lead to memory leak because derived class’s objects will not get freed.Destructors are declared virtual so as to bind objects to the methods at runtime so that appropriate destructor is called.

100
Q

C++

What is “mutable”?

A

Answer1.
“mutable” is a C++ keyword. When we declare const, none of its data members can change. When we want one of its members to change, we declare it as mutable.

Answer2.
A “mutable” keyword is useful when we want to force a “logical const” data member to have its value modified. A logical const can happen when we declare a data member as non-const, but we have a const member function attempting to modify that data member. For example:

class Dummy 
{
   public:
   bool isValid() const;
   private:
   mutable int size_ = 0; 
   mutable bool validStatus_ = FALSE; 
   // logical const issue resolved
};
bool Dummy::isValid() const 
// data members become bitwise const
{
    if (size > 10) 
    {
       validStatus_ = TRUE; // fine to assign
       size = 0; // fine to assign 
    }
}
101
Q

C++

Differences of C and C++
Could you write a small program that will compile in C but not in C++

A
In C, if you can a const variable e.g. 
const int i = 2; 
you can use this variable in other module as follows 
extern const int i; 
C compiler will not complain. 

But for C++ compiler u must write
extern const int i = 2;
else error would be generated.

102
Q

C++

Bitwise Operations - Given inputs X, Y, Z and operations | and & (meaning bitwise OR and AND, respectively), what is output equal to in?

A

output = (X & Y) | (X & Z) | (Y & Z);

   0101 (decimal 5) AND 0011 (decimal 3)
 = 0001 (decimal 1)

    0011 (decimal 3) AND 0010 (decimal 2)
 = 0010 (decimal 2)

  0101 (decimal 5) OR 0011 (decimal 3)    = 0111 (decimal 7)

  0010 (decimal 2) OR 1000 (decimal 8)    = 1010 (decimal 10)

    0101 (decimal 5) XOR 0011 (decimal 3)
 =0110 (decimal 6)

   0010 (decimal 2) XOR 1010 (decimal 10)
 = 1000 (decimal 8)
103
Q

C++

What is a modifier?

A

A modifier, also called a modifying function is a member function that changes the value of at least one data member. In other words, an operation that modifies the state of an object. Modifiers are also known as ‘mutators’. Example: The function mod is a modifier in the following code snippet:

class test
{
    int x,y;
    public:test()
    {
       x=0; y=0;
    }
    void mod()
    {
      x=10;
      y=15;
     }
};
104
Q

C++

What is an accessor?

A

An accessor is a class operation that does not modify the state of an object. The accessor functions need to be declared as const operations

105
Q

C++

Differentiate between a template class and class template.

A

Template class: A generic definition or a parameterized class not instantiated until the client provides the needed information. It’s jargon for plain templates.

Class template: A class template specifies how individual classes can be constructed much like the way a class specifies how individual objects can be constructed. It’s jargon for plain classes.

106
Q

C++

When does a name clash occur?

A

A name clash occurs when a name is defined in more than one place. For example., two different class libraries could give two different classes the same name. If you try to use many class libraries at the same time, there is a fair chance that you will be unable to compile or link the program because of name clashes.

107
Q

C++

Define namespace.

A

It is a feature in C++ to minimize name collisions in the global name space. This namespace keyword assigns a distinct name to a library that allows other libraries to use the same identifier names without creating any name collisions. Furthermore, the compiler uses the namespace signature for differentiating the definitions.

108
Q

C++

What is the use of ‘using’ declaration. ?

A

A using declaration makes it possible to use a name from a namespace without the scope operator.

109
Q

C++

What is an incomplete type?

A

Incomplete types refers to pointers in which there is non availability of the implementation of the referenced location or it points to some location whose value is not available for modification.

int *i=0x400 
// i points to address 400
*i=0; 
//set the value of memory location pointed by i. 

Incomplete types are otherwise called uninitialized pointers.

110
Q

C++

What is a dangling pointer?

A

A dangling pointer arises when you use the address of an object after
its lifetime is over. This may occur in situations like returning
addresses of the automatic variables from a function or using the
address of the memory block after it is freed. The following
code snippet shows this:

class Sample
{
    public:
    int *ptr;
    Sample(int i)
    {
      ptr = new int(i);
    }

~Sample()
{
delete ptr;
}

     void PrintVal()
     {
      cout << "The value is " << *ptr;
     }
};
void SomeFunc(Sample x)
{
   cout << "Say i am in someFunc " << endl;
}
int main()
{
    Sample s1 = 10;
    SomeFunc(s1);
    s1.PrintVal();
}

In the above example when PrintVal() function is
called it is called by the pointer that has been freed by the
destructor in SomeFunc.

111
Q

C++

Differentiate between the message and method.

A

Message:

  • Objects communicate by sending messages to each other.
  • A message is sent to invoke a method.

Method

  • Provides response to a message.
  • It is an implementation of an operation.
112
Q
C++
What is an adaptor class or Wrapper class?
A

A class that has no functionality of its own. Its member functions hide the use of a third party software component or an object with the non-compatible interface or a non-object-oriented implementation.

113
Q

C++

What is a Null object?

A

It is an object of some class whose purpose is to indicate that a real object of that class does not exist. One common use for a null object is a return value from a member function that is supposed to return an object with some specified properties but cannot find such an object.

114
Q

C++

What is class invariant?

A

A class invariant is a condition that defines all valid states for an object. It is a logical condition to ensure the correct working of a class.

Class invariants must hold when an object is created, and they must be preserved under all operations of the class. In particular all class invariants are both preconditions and post-conditions for all operations or member functions of the class.

115
Q

C++

What do you mean by Stack unwinding?

A

It is a process during exception handling when the destructor is called for all local objects between the place where the exception was thrown and where it is caught.

116
Q

C++

Define precondition and post-condition to a member function.

A
Precondition: 
A precondition is a condition that must be true on entry to a member function. A class is used correctly if preconditions are never false. An operation is not responsible for doing anything sensible if its precondition fails to hold. For example, the interface invariants of stack class say nothing about pushing yet another element on a stack that is already full. We say that isful() is a precondition of the push operation. 

Post-condition: A post-condition is a condition that must be true on exit from a member function if the precondition was valid on entry to that function. A class is implemented correctly if post-conditions are never false. For example, after pushing an element on the stack, we know that isempty() must necessarily hold. This is a post-condition of the push operation.

117
Q

C++

What are the conditions that have to be met for a condition to be an invariant of the class?

A
  • The condition should hold at the end of every constructor.

* The condition should hold at the end of every mutator (non-const) operation.

118
Q

C++

What are proxy objects?

A
Objects that stand for other objects are called proxy objects or surrogates. 
template 
class Array2D
{
    public: class Array1D
    {
      public: T& operator[] (int index);
      const T& operator[] (int index)const;
    };
Array1D operator[] (int index);
const Array1D operator[] (int index) const; };

The following then becomes legal:

Array2Ddata(10,20);
cout«data[3][6]; // fine

Here data[3] yields an Array1D object and the operator [] invocation on that object yields the float in position(3,6) of the original two dimensional array.

Clients of the Array2D class need not be aware of the presence of the Array1D class. Objects of this latter class stand for one-dimensional array objects that, conceptually, do not exist for clients of Array2D.

Such clients program as if they were using real, live, two-dimensional arrays. Each Array1D object stands for a one-dimensional array that is absent from a conceptual model used by the clients of Array2D. In the above example, Array1D is a proxy class.

Its instances stand for one-dimensional arrays that, conceptually, do not exist.

119
Q

C++

Name some pure object oriented languages.

A

Smalltalk, Java, Eiffel, Sather.

120
Q

C++

What is an orthogonal base class?

A

If two base classes have no overlapping methods or data they are said to be independent of, or orthogonal to each other. Orthogonal in the sense means that two classes operate in different dimensions and do not interfere with each other in any way. The same derived class may inherit such classes with no difficulty.

121
Q

C++

What is a node class?

A

A node class is a class that:

  • relies on the base class for services and implementation,
  • provides a wider interface to the users than its base class,
  • relies primarily on virtual functions in its public interface
  • depends on all its direct and indirect base class
  • can be understood only in the context of the base class
  • can be used as base for further derivation
  • can be used to create objects.

A node class is a class that has added new services or functionality beyond the services inherited from its base class.

122
Q

C++

What is a container class? What are the types of container classes?

A

A container class is a class that is used to hold objects in memory or external storage.

A container class acts as a generic holder.

A container class has a predefined behavior and a well-known interface.

A container class is a supporting class whose purpose is to hide the topology used for maintaining the list of objects in memory. When a container class contains a group of mixed objects, the container is called a heterogeneous container; when the container is holding a group of objects that are all the same, the container is called a homogeneous container.

123
Q

C++

What is polymorphism?

A

Polymorphism is the idea that a base class can be inherited by several classes. A base class pointer can point to its child class and a base class array can store different child class objects.

124
Q

C++

How do you find out if a linked-list has an end? (i.e. the list is not a cycle)

A

You can find out by using 2 pointers. One of them goes 2 nodes each time. The second one goes at 1 nodes each time. If there is a cycle, the one that goes 2 nodes each time will eventually meet the one that goes slower. If that is the case, then you will know the linked-list is a cycle.

125
Q

C++

How can you tell what shell you are running on UNIX system?

A

You can do the Echo $RANDOM. It will return a undefined variable if you are from the C-Shell, just a return prompt if you are from the Bourne shell, and a 5 digit random numbers if you are from the Korn shell. You could also do a ps -l and look for the shell with the highest PID.

126
Q

C++

What is Boyce Codd Normal form?

A

A relation schema R is in BCNF with respect to a set F of functional dependencies if for all functional dependencies in F+ of the form a->b, where a and b is a subset of R, at least one of the following holds:

  • a->b is a trivial functional dependency (b is a subset of a)
  • a is a superkey for schema R
127
Q

C++

What is pure virtual function?

A

A class is made abstract by declaring one or more of its virtual functions to be pure. A pure virtual function is one with an initializer of = 0 in its declaration

128
Q

C++

How do you traverse a Btree in Backward in-order?

A

Process the node in the right subtree
Process the root
Process the node in the left subtree

129
Q

C++

What is the two main roles of Operating System?

A

As a resource manager

As a virtual machine

130
Q
C++
In the derived class, which data member of the base class are visible?
A

In the public and protected sections.

131
Q

C++

Could you tell something about the Unix System Kernel?

A

The kernel is the heart of the UNIX openrating system, it’s reponsible for controlling the computer’s resouces and scheduling user jobs so that each one gets its fair share of resources.

132
Q

C++

What are each of the standard files and what are they normally associated with?

A

They are the standard input file, the standard output file and the standard error file. The first is usually associated with the keyboard, the second and third are usually associated with the terminal screen.

133
Q

C++

Give 4 examples which belongs application layer in TCP/IP architecture?

A

FTP, TELNET, HTTP and TFTP

134
Q

C++

What’s the meaning of ARP in TCP/IP?

A

The “ARP” stands for Address Resolution Protocol. The ARP standard defines two basic message types: a request and a response. a request message contains an IP address and requests the corresponding hardware address; a replay contains both the IP address, sent in the request, and the hardware address.

135
Q

C++

What is a Makefile?

A

Makefile is a utility in Unix to help compile large programs. It helps by only compiling the portion of the program that has been changed.
A Makefile is the file and make uses to determine what rules to apply. make is useful for far more than compiling programs.

136
Q

C++

What is deadlock?

A

Deadlock is a situation when two or more processes prevent each other from running.

Example: if T1 is holding x and waiting for y to be free and T2 holding y and waiting for x to be free deadlock happens.

137
Q

C++

What is semaphore?

A

Semaphore is a special variable, it has two methods: up and down. Semaphore performs atomic operations, which means ones a semaphore is called it can not be inturrupted.

The internal counter (= #ups - #downs) can never be negative. If you execute the “down” method when the internal counter is zero, it will block until some other thread calls the “up” method. Semaphores are use for thread synchronization.

138
Q

C++

Is C an object-oriented language?

A

C is not an object-oriented language, but limited object-oriented programming can be done in C.

139
Q

C++

Name some major differences between C++ and Java.

A

C++ has pointers; Java does not.
Java is platform-independent; C++ is not.
Java has garbage collection; C++ does not.

Java does have pointers. In fact all variables in Java are pointers. The difference is that Java does not allow you to manipulate the addresses of the pointer

140
Q

C++

What is the difference between Stack and Queue?

A

Stack is a Last In First Out (LIFO) data structure.

Queue is a First In First Out (FIFO) data structure

141
Q

C++

What is the software Life-Cycle?

A

The software Life-Cycle are

1) Analysis and specification of the task
2) Design of the algorithms and data structures
3) Implementation (coding)
4) Testing
5) Maintenance and evolution of the system
6) Obsolescence

142
Q

C++

What are the advantages and disadvantages of B-star trees over Binary trees?

A

Answer1
B-star trees have better data structure and are faster in search than Binary trees, but it’s harder to write codes for B-start trees.

Answer2
The major difference between B-tree and binary tres is that B-tree is a external data structure and binary tree is a main memory data structure. The computational complexity of binary tree is counted by the number of comparison operations at each node, while the computational complexity of B-tree is determined by the disk I/O, that is, the number of node that will be loaded from disk to main memory. The comparision of the different values in one node is not counted.

143
Q

C++

Describe one simple rehashing policy.

A

The simplest rehashing policy is linear probing.

Suppose a key K hashes to location i. Suppose other key occupies H[i].

The following function is used to generate alternative locations:

rehash(j) = (j + 1) mod h
where j is the location most recently probed. Initially j = i, the hash code for K. Notice that this version of rehash does not depend on K.

144
Q

C++

Describe Stacks and name a couple of places where stacks are useful.

A

A Stack is a linear structure in which insertions and deletions are always made at one end, called the top. This updating policy is called last in, first out (LIFO). It is useful when we need to check some syntex errors, such as missing parentheses.

145
Q

C++

In what situations do you have to use initialization list rather than assignment in constructors.

A

When you want to use non-static const data members and reference data members you should use initialization list to initialize them.

146
Q

C++

What is a pdb file?

A

A program database (PDB) file contains debugging and project state information that allows incremental linking of a Debug configuration of the program.

This file is created when you compile a C/C++ program with /ZI or /Zi or a Visual Basic/C#/JScript .NET program with /debug.

147
Q

C++

In a function declaration, what does extern mean?

A

The extern here tells the compiler about the existence of a variable or a function, even though the compiler hasn’t yet seen it in the file currently being compiled. This variable or function may be defined in another file or further down in the current file.

148
Q

You want to link a C++ program to C functions. How would you do it?

A

This can be done by using the extern “C” linkage specification around the C function declarations.