Sie sind auf Seite 1von 63

C++ Interview Questions and Answers C++ Interview Questions and Answers C++ Object-Oriented Questions C++ programming

on UNIX C++ Networking Interview Questions and Answers C++ Algorithm Interview Questions and Answers C++ Questions only C++ Interview Questions and Answers What is C++? Released in 1985, C++ is an object-oriented programming language created by Bjarne Stroustrup. C++ maintains almost all aspects of the C language, while simplifying memory management and adding several features - including a new datatype known as a class (you will learn more about these later) - to allow object-oriented programming. C++ maintains the features of C which allowed for low-level memory access but also gives the programmer new tools to simplify memory management. C++ used for: C++ is a powerful general-purpose programming language. It can be used to create small programs or large applications. It can be used to make CGI scripts or console-only DOS programs. C++ allows you to create programs to do almost anything you need to do. The creator of C++, Bjarne Stroustrup, has put together a partial list of applications written in C++. How do you find out if a linked-list has an end? (i.e. the list is not a cycle) 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. What is the difference between realloc() and free()? The free subroutine frees a block of memory previously allocated by the malloc subroutine. Undefined results occur if the Pointer parameter is not a valid pointer. If the Pointer parameter is a null value, no action will occur. The realloc subroutine changes the size of the block of memory pointed to by the Pointer parameter to the number of bytes specified by the Size parameter and returns a new pointer to the block. The pointer specified by the Pointer parameter must have been created with the malloc, calloc, or realloc subroutines and not been deallocated with the free or realloc subroutines. Undefined results occur if the Pointer parameter is not a valid pointer. What is function overloading and operator overloading? Function overloading: C++ enables several functions of the same name to be defined, as long as these functions have different sets of parameters (at least as far as their types are concerned). This capability is called function overloading. When an overloaded function is called, the C++ compiler selects the proper function by examining the number, types and order of the arguments in the call. Function overloading is commonly used to create several functions of the same name that perform similar tasks but on different data types. Operator overloading allows existing C++ operators to be redefined so that they work on objects of user-defined classes. Overloaded operators are syntactic sugar for equivalent function calls. They form a pleasant facade that doesn't add anything fundamental to the language (but they can improve understandability and reduce maintenance costs). What is the difference between declaration and definition?

The declaration tells the compiler that at some later point we plan to present the definition of this declaration. E.g.: void stars () //function declaration The definition contains the actual implementation. E.g.: void stars () // declarator { for(int j=10; j > =0; j--) //function body cout << *; cout << endl; } What are the advantages of inheritance? It permits code reusability. Reusability saves time in program development. It encourages the reuse of proven and debugged high-quality software, thus reducing problem after a system becomes functional. How do you write a function that can reverse a linked-list? void reverselist(void) { if(head==0) return; if(head->next==0) return; if(head->next==tail) { head->next = 0; tail->next = head; } else { node* pre = head; node* cur = head->next; node* curnext = cur->next; head->next = 0; cur-> next = head; for(; curnext!=0; ) { cur->next = pre; pre = cur; cur = curnext; curnext = curnext->next; } curnext->next = cur; } } What do you mean by inline function? The idea behind inline functions is to insert the code of a called function at the point where the function is called. If done carefully, this can improve the application's performance in exchange for increased compile time and possibly (but not always) an increase in the size of the generated binary executables.

Write a program that ask for user input from 5 to 9 then calculate the average #include "iostream.h" int main() { int MAX = 4; int total = 0; int average; int numb; for (int i=0; i<MAX; i++) { cout << "Please enter your input between 5 and 9: "; cin >> numb; while ( numb<5 || numb>9) { cout << "Invalid input, please re-enter: "; cin >> numb; } total = total + numb; } average = total/MAX; cout << "The average number is: " << average << "\n"; return 0; } Write a short code using C++ to print out all odd number from 1 to 100 using a for loop for( unsigned int i = 1; i < = 100; i++ ) if( i & 0x00000001 ) cout << i << \",\"; What is public, protected, private? Public, protected and private are three access specifiers in C++. Public data members and member functions are accessible outside the class. Protected data members and member functions are only available to derived classes. Private data members and member functions cant be accessed outside the class. However there is an exception can be using friend classes.

Write a function that swaps the values of two integers, using int* as the argument type. void swap(int* a, int*b) { int t; t = *a; *a = *b; *b = t; } Tell how to check whether a linked list is circular. Create two pointers, each set to the start of the list. Update each as follows: while (pointer1) { pointer1 = pointer1->next; pointer2 = pointer2->next; if (pointer2) pointer2=pointer2->next; if (pointer1 == pointer2) { print (\"circular\n\"); }

} OK, why does this work? If a list is circular, at some point pointer2 will wrap around and be either at the item just before pointer1, or the item before that. Either way, its either 1 or 2 jumps until they meet. What is polymorphism? 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. What is virtual constructors/destructors? Answer1 Virtual destructors: If an object (with a non-virtual destructor) is destroyed explicitly by applying the delete operator to a base-class pointer to the object, the base-class destructor function (matching the pointer type) is called on the object. There is a simple solution to this problem declare a virtual base-class destructor. This makes all derived-class destructors virtual even though they dont have the same name as the base-class destructor. Now, if the object in the hierarchy is destroyed explicitly by applying the delete operator to a base-class pointer to a derived-class object, the destructor for the appropriate class is called. Virtual constructor: Constructors cannot be virtual. Declaring a constructor as a virtual function is a syntax error. Answer2 Virtual destructors: If an object (with a non-virtual destructor) is destroyed explicitly by applying the delete operator to a base-class pointer to the object, the base-class destructor function (matching the pointer type) is called on the object. There is a simple solution to this problem declare a virtual base-class destructor. This makes all derived-class destructors virtual even though they dont have the same name as the base-class destructor. Now, if the object in the hierarchy is destroyed explicitly by applying the delete operator to a base-class pointer to a derived-class object, the destructor for the appropriate class is called. Virtual constructor: Constructors cannot be virtual. Declaring a constructor as a virtual function is a syntax error. Does c++ support multilevel and multiple inheritance? Yes. What are the advantages of inheritance? It permits code reusability. Reusability saves time in program development. It encourages the reuse of proven and debugged high-quality software, thus reducing problem after a system becomes functional. What is the difference between declaration and definition? The declaration tells the compiler that at some later point we plan to present the definition of this declaration. E.g.: void stars () //function declaration The definition contains the actual implementation. E.g.: void stars () // declarator { for(int j=10; j>=0; j--) //function body cout<<*; cout<<endl; } What is the difference between an ARRAY and a LIST?

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++; } Does c++ support multilevel and multiple inheritance? Yes. What is a template? 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 <class indetifier> function_declaration; template <typename indetifier> 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. Define a constructor - What it is and how it might be called (2 methods). Answer1 constructor is a member function of the class, with the name of the function being the same as the class name. It also specifies how the object should be initialized. Ways of calling constructor: 1) Implicitly: automatically by complier when an object is created. 2) Calling the constructors explicitly is possible, but it makes the code unverifiable.

Answer2 class Point2D{ int x; int y; public Point2D() : x(0) , y(0) {} //default (no argument) constructor }; main(){ Point2D MyPoint; // Implicit Constructor call. In order to allocate memory on stack, the default constructor is implicitly called. Point2D * pPoint = new Point2D(); // Explicit Constructor call. In order to allocate memory on HEAP we call the default constructor. You have two pairs: new() and delete() and another pair : alloc() and free(). Explain differences between eg. new() and malloc() Answer1 1.) new and delete are preprocessors while malloc() and free() are functions. [we dont use brackets will calling new or delete]. 2.) no need of allocate the memory while using new but in malloc() we have to use sizeof(). 3.) new will initlize the new memory to 0 but malloc() gives random value in the new alloted memory location [better to use calloc()] Answer2 new() allocates continous space for the object instace malloc() allocates distributed space. new() is castless, meaning that allocates memory for this specific type, malloc(), calloc() allocate space for void * that is cated to the specific class type pointer. What is the difference between class and structure? 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. What is RTTI? 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 homegrown versions with a solid, consistent approach. What is encapsulation? Packaging an objects variables within its methods is called encapsulation. Explain term POLIMORPHISM and give an example using eg. SHAPE object: If I have a base class SHAPE, how would I define DRAW methods for two objects CIRCLE and SQUARE Answer1 POLYMORPHISM : A phenomenon which enables an object to react differently to the same function call. in C++ it is attained by using a keyword virtual

Example public class SHAPE { public virtual void SHAPE::DRAW()=0; } Note here the function DRAW() is pure virtual which means the sub classes must implement the DRAW() method and SHAPE cannot be instatiated public class CIRCLE::public SHAPE { public void CIRCLE::DRAW() { // TODO drawing circle } } public class SQUARE::public SHAPE { public void SQUARE::DRAW() { // TODO drawing square } } now from the user class the calls would be like globally SHAPE *newShape; When user action is to draw public void MENU::OnClickDrawCircle(){ newShape = new CIRCLE(); } public void MENU::OnClickDrawCircle(){ newShape = new SQUARE(); } the when user actually draws public void CANVAS::OnMouseOperations(){ newShape->DRAW(); } Answer2 class SHAPE{ public virtual Draw() = 0; //abstract class with a pure virtual method }; class CIRCLE{ public int r; public virtual Draw() { this->drawCircle(0,0,r); } }; class SQURE public int a; public virtual Draw() { this->drawRectangular(0,0,a,a); } };

Each object is driven down from SHAPE implementing Draw() function in its own way. What is an object? Object is a software bundle of variables and related methods. Objects have state and behavior. How can you tell what shell you are running on UNIX system? 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. Describe PRIVATE, PROTECTED and PUBLIC the differences and give examples. class Point2D{ int x; int y; public int color; protected bool pinned; public Point2D() : x(0) , y(0) {} //default (no argument) constructor }; Point2D MyPoint; You cannot directly access private data members when they are declared (implicitly) private: MyPoint.x = 5; // Compiler will issue a compile ERROR //Nor yoy can see them: int x_dim = MyPoint.x; // Compiler will issue a compile ERROR On the other hand, you can assign and read the public data members: MyPoint.color = 255; // no problem int col = MyPoint.color; // no problem With protected data members you can read them but not write them: MyPoint.pinned = true; // Compiler will issue a compile ERROR bool isPinned = MyPoint.pinned; // no problem What is namespace? 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. What do you mean by inheritance?

Inheritance is the process of creating new classes, called derived classes, from existing classes or base classes. The derived class inherits all the capabilities of the base class, but can add embellishments and refinements of its own. What is a COPY CONSTRUCTOR and when is it called? A copy constructor is a method that accepts an object of the same class and copies its data members to the object on the left part of assignement: class Point2D{ int x; int y; public int color; protected bool pinned; public Point2D() : x(0) , y(0) {} //default (no argument) constructor public Point2D( const Point2D & ) ; }; Point2D::Point2D( const Point2D & p ) { this->x = p.x; this->y = p.y; this->color = p.color; this->pinned = p.pinned; } main(){ Point2D MyPoint; MyPoint.color = 345; Point2D AnotherPoint = Point2D( MyPoint ); // now AnotherPoint has color = 345 What is Boyce Codd Normal form? 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 What is virtual class and friend class? 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 you will use when defining a function in base class to allow this function to be a polimorphic function? virtual What do you mean by binding of data and functions? Encapsulation. What are 2 ways of exporting a function from a DLL?

1.Taking a reference to the function from the DLL instance. 2. Using the DLL s Type Library What is the difference between an object and a class? 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. 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]. quicksort ((data + 222), 100); What is a class? 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. What is friend function? 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. Which recursive sorting technique always makes recursive calls to sort subarrays that are about half size of the original array? Mergesort always makes recursive calls to sort subarrays that are about half size of the original array, resulting in O(n log n) time. What is abstraction? Abstraction is of the process of hiding unwanted details from the user. What are virtual functions? 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. What is the difference between an external iterator and an internal iterator? Describe an advantage of an external iterator. 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. What is a scope resolution operator?

A scope resolution operator (::), can be used to define the member functions of a class outside the class. What do you mean by pure virtual functions? 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; }; What is polymorphism? Explain with an example? "Poly" means "many" and "morph" means "form". Polymorphism is the ability of an object (or reference) to assume (be replaced by) or become many different forms of object. Example: function overloading, function overriding, virtual functions. Another example can be a plus + sign, used for adding two integers or for using it to concatenate two strings. How can you quickly find the number of elements stored in a a) static array b) dynamic array ? Why is it difficult to store linked list in an array? How can you find the nodes with repetetive data in a linked list? Write a prog to accept a given string in any order and flash error if any of the character is different. For example : If abc is the input then abc, bca, cba, cab bac are acceptable but aac or bcd are unacceptable. Write out a function that prints out all the permutations of a string. For example, abc would give you abc, acb, bac, bca, cab, cba. You can assume that all the characters will be unique. Whats the output of the following program? Why? #include <stdio.h> main() { typedef union { int a; char b[10]; float c; } Union; Union x,y = {100}; x.a = 50; strcpy(x.b,\"hello\"); x.c = 21.50; printf(\"Union x : %d %s %f \n\",x.a,x.b,x.c ); printf(\"Union y :%d %s%f \n\",y.a,y.b,y.c); } Given inputs X, Y, Z and operations | and & (meaning bitwise OR and AND, respectively) What is output equal to in output = (X & Y) | (X & Z) | (Y & Z) Why are arrays usually processed with for loop? The real power of arrays comes from their facility of using an index variable to traverse the array, accessing each element with the same expression a[i]. All the is needed to make this work is a

iterated statement in which the variable i serves as a counter, incrementing from 0 to a.length -1. That is exactly what a loop does. What is an HTML tag? Answer: An HTML tag is a syntactical construct in the HTML language that abbreviates specific instructions to be executed when the HTML script is loaded into a Web browser. It is like a method in Java, a function in C++, a procedure in Pascal, or a subroutine in FORTRAN. Explain which of the following declarations will compile and what will be constant - a pointer or the value pointed at: * const char * * char const * * char * const Note: Ask the candidate whether the first declaration is pointing to a string or a single character. Both explanations are correct, but if he says that its a single character pointer, ask why a whole string is initialized as char* in C++. If he says this is a string declaration, ask him to declare a pointer to a single character. Competent candidates should not have problems pointing out why const char* can be both a character and a string declaration, incompetent ones will come up with invalid reasons. Youre given a simple code for the class BankCustomer. Write the following functions: * Copy constructor * = operator overload * == operator overload * + operator overload (customers balances should be added up, as an example of joint account between husband and wife) Note:Anyone confusing assignment and equality operators should be dismissed from the interview. The applicant might make a mistake of passing by value, not by reference. The candidate might also want to return a pointer, not a new object, from the addition operator. Slightly hint that youd like the value to be changed outside the function, too, in the first case. Ask him whether the statement customer3 = customer1 + customer2 would work in the second case. What problems might the following macro bring to the application? #define sq(x) x*x Anything wrong with this code? T *p = new T[10]; delete p; Everything is correct, Only the first element of the array will be deleted, The entire array will be deleted, but only the first element destructor will be called. Anything wrong with this code? T *p = 0; delete p; Yes, the program will crash in an attempt to delete a null pointer. How do you decide which integer type to use? 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.

Whats the best way to declare and define global variables? The best way to declare global variables is to declare them after including all the files so that it can be used in all the functions. What does extern mean in a function declaration? Using extern in a function declaration we can make a function such that it can used outside the file in which it is defined. An extern variable, function definition, or declaration also makes the described variable or function usable by the succeeding part of the current source file. This declaration does not replace the definition. The declaration is used to describe the variable that is externally defined. If a declaration for an identifier already exists at file scope, any extern declaration of the same identifier found within a block refers to that same object. If no other declaration for the identifier exists at file scope, the identifier has external linkage. What can I safely assume about the initial values of variables which are not explicitly initialized? It depends on complier which may assign any garbage value to a variable if it is not initialized. What is the difference between char a[] = string; and char *p = string;? 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. Whats the auto keyword good for? 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. What is the difference between char a[] = string; and char *p = string; ? Answer1 a[] = string; char *p = string; The difference is this: p is pointing to a constant string, you can never safely say p[3]=x'; however you can always say a[3]=x';

char a[]=string; - character array initialization. char *p=string ; - non-const pointer to a const-string.( this is permitted only in the case of char pointer in C++ to preserve backward compatibility with C.) Answer2 a[] = string; char *p = string; a[] will have 7 bytes. However, p is only 4 bytes. P is pointing to an adress is either BSS or the data section (depending on which compiler GNU for the former and CC for the latter). Answer3 char a[] = string; char *p = string; for char a[].using the array notation 7 bytes of storage in the static memory block are taken up, one for each character and one for the terminating nul character. But, in the pointer notation char *p.the same 7 bytes required, plus N bytes to store the pointer variable p (where N depends on the system but is usually a minimum of 2 bytes and can be 4 or more) How do I declare an array of N pointers to functions returning pointers to functions returning pointers to characters? Answer1 If you want the code to be even slightly readable, you will use typedefs. typedef char* (*functiontype_one)(void); typedef functiontype_one (*functiontype_two)(void); functiontype_two myarray[N]; //assuming N is a const integral Answer2 char* (* (*a[N])())() Here a is that array. And according to question no function will not take any parameter value. What does extern mean in a function declaration? It tells the compiler that a variable or a function exists, even if the compiler hasnt 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. How do I initialize a pointer to a function? This is the way to initialize a pointer to a function void fun(int a) { } void main() { void (*fp)(int); fp=fun; fp(1); }

How do you link a C++ program to C functions? By using the extern "C" linkage specification around the C function declarations. Explain the scope resolution operator. 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. What are the differences between a C++ struct and C++ class? The default member and base-class access specifiers are different. How many ways are there to initialize an int with a constant? 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); I write a program in C++ that asks the user for names of students and their cooresponding midterm scores, at the end, it displays each person, their average, gpa, class ave, total a's, b's, etc. I make the exe and it works fine, how do I make it run in something other than the command prompt, I mean, make it so that it is like a page where you can just enter the info in and hit enter and it display the calculates in say, a box that was empty at the bottom of the page? ------------------------------------------------------I. Event Driven Programming, Part #1 ------------------------------------------------------The most challenging hurdle that most new programmers face when moving from the command line to a graphical user interface is getting their head around event-driven programming. While there are some rare exceptions--I worked on a couple of PlayStation2 games that had menu systems that were only semi-event driven--practically ALL graphical applications use an event-driven architecture. In a typical command line application, you get some input from the user at startup, immediately do some work based on the input and then exit. If you need more input from the user you display a prompt and wait there until the user enters something. [KEY POINT: The *program* controls the flow of execution.] In an event driven application, the program starts up and then waits there for "something" to happen. "Something" might be a keystroke, mouse click, tick from a timer or any number of other things. Most often, it's related to some sort of input from the user. When "something" happens, the program then responds and does some work. This "something" is called an EVENT. Events are the core of event-driven programming. Events tell the program when the user does something that the program needs to respond to. [KEY POINT: The *user* controls the flow of execution.] Here is some pseudo-code for a typical command line program:

void main() { getKeystroke(); doSomeWork(); exit(); } Here is the same pseudo-code converted into a home-brew event-driven program: void main() { // do forever (this loop is also called the "pump") while(true) { // every time "something" happens, call // the function that goes along with it if ( getKeystroke() ) { onKeyPress(); } if ( exitKeyPressed) { exit(); } } } void onKeyPress() { doSomeWork(); } Cheesy as that sounds, that is exactly how most event-driven applications work... including large Windows applications. I am over-simplifying a bit, but not by much. In addition to events, Windows adds an extra layer called MESSAGES to make its job easier. Messages are just bits of data (a UINT to be exact) with some parameters attached that get passed around in order to tell a program what event just happened. Each MESSAGE passes a number, which represents a specific EVENT. Then the program's EVENT HANDLER is called with that message number. An event handler is a function in your program that handles an event; or in other words, a function that does "something" when "something" happens. In our pseudo-code listing, this concept could be written like so: void main() { // do forever ("MESSAGE PUMP") while(true) { // "translate" the events... every time "something" happens, // set the variable "message" to the number that corresponds int message; if ( getKeystroke() ) { message = 1; }

if ( exitKeyPressed) { message = 2; } // "dispatch" the events... call a main event handler to // figure out which sub-event handler to call doEvent(message); } } // MAIN EVENT HANDLER void doEvent(int message) { switch(message) { case 1: onKeyPress(); break; case 2: exit(); break; } } // KEYPRESS EVENT HANDLER void onKeyPress() { doSomeWork(); } This may seem like a round-about way to do things, but messages make it easier for Windows to pass important events between different programs. If the program doesn't know what to do with an event, it can also pass it to the Windows default event handler. The default event handler is just another function that figures out what to do with the event when you aren't sure or simply don't want to deal with it. Following is code for a real Windows program to show you what I mean. This code will compile and run with Microsoft Visual C\C++6.0; it should also run with Borland or any other C\C++ compiler that supports the Windows API. Just in case you aren't sure, the Windows API is a set of functions, libraries, etc., provided by the operating system to do the basic things that are required by a graphical program. This saves you from re-inventing the wheel every time you write a program; the code for things that all windows programs need, like the basic functionality of a button, is already done for you. Other platforms, such as the Mac or X Windows\Motif, have similar APIs. From my personal experience, I can say that the Windows API is more full-featured and does a lot more things for you than many of the other platforms, at the expensive of being enormous, sometimes over-featured and often overwhelming. The following code will create a basic window. It also handles the PAINT event, and provides a sample function that draws a circle on the window. (I apologize in advance if some of the code wraps funny. You may need to copy and paste this into a mono-spaced editor to read it

more clearly.) **********BEGIN LISTING**************** #define STRICT // strict type checking #define WIN32_LEAN_AND_MEAN // exclude seldom-used code #include // needed to write windows code /*---------------------------------------------------------------------Paints the Window Client Area -- This is your event handler for the PAINT event. For each thing you want to do, such as handle a keystroke or a button press, you'll have an event handler function just like this. Parameters: HWND hWnd - handle to current window. Windows identifies each form and control in an application by assigning it a handle. Most API functions need to know the handle of a window in order to do anything interesting to it. Returns: ---------------------------------------------------------------------------*/ void onPaint(HWND hWnd) { PAINTSTRUCT ps; // structure for paint info HDC hDC; // handle to graphics device context, i.e. where to paint // create device context, prepare for painting hDC = BeginPaint(hWnd, &ps); // draw a circle Ellipse(hDC, 0, 0, 50, 50); // update the window client area with whatever else we want // delete device context DeleteDC(hDC); // end painting EndPaint(hWnd, &ps); } /*------------------------------------------------------------------------Windows Message Pump Callback Routine -- This is your MAIN EVENT HANDLER. This function takes the events that Windows passes in, figures out what they are, and then calls your

additional sub-event handler functions to handle the event. Any events that aren't handled get passed on to the default event handler supplied by Windows (DefWindowProc). This saves you from having to write code for events you don't care about, like, say, a notice that the window was resized. Parameters: HWND hWnd - our window's handle UINT wMsg - message number WPARAM wParam - word parameter, contents differ for each message LPARAM lParam - long parameter, contents differ for each message Returns: 0 if we handled the message, result code otherwise ---------------------------------------------------------------------------*/ LRESULT CALLBACK WndProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam) { // select and handle possible window messages switch(wMsg){ // window created, initialize application case WM_CREATE: // do whatever you need to do on startup here break; // window close suggested case WM_CLOSE: // do whatever you need to do on shutdown here DestroyWindow(hWnd); break; // paint window requested case WM_PAINT: onPaint(hWnd); break; // application terminated case WM_DESTROY: PostQuitMessage(0); break; // pass on other unhandled messages to default handler default: return(DefWindowProc(hWnd, wMsg, wParam, lParam)); } // return 0 if we handled the message return 0L; } /*-------------------------------------------------------------------------

Main Entry Point -- this is the equivalent of "void main()" for a windows program Parameters: HINSTANCE hInstance - current program instance HINSTANCE hPrevInst - handle to the previous instance LPSTR lpszCmdLine - command-line arguments int nCmdShow - window size/mode Returns: the value of PostQuitMessage ---------------------------------------------------------------------------*/ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow) { HWND hWnd; // window handle from create window MSG wMsg; // message from GetMessage WNDCLASS wndclass; // window class structure char *strProgramName = "My Program Name"; // the name of your program // if this is the first instance of the application, register the window structure... // back in the day, system resources were very tight, and programs that used several // similar looking windows could save loads of memory by storing only one "design" // for a window in memory. new copies of the application in memory, or "instances", // could point to the window design that was already in RAM instead of loading it // again. even though it's less important today now that computers have gobs of // memory, windows still works this way; it has a number of misc advantages. if( ! hPrevInst ) { wndclass.style = CS_HREDRAW | CS_VREDRAW; // window style wndclass.lpfnWndProc = WndProc; // address to event handling procedure wndclass.cbClsExtra = 0; // no extra class data wndclass.cbWndExtra = 0; // no extra window data wndclass.hInstance = hInstance; // handle to the current instance wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); // stock arrow cursor wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); // stock icon wndclass.lpszMenuName = NULL; // menu name wndclass.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE + 1); // background color brush wndclass.lpszClassName = strProgramName; //

window class name RegisterClass(&wndclass); } // create the main window. you can change the parameters to this function // to make different kinds of windows hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, window style strProgramName, // program name strProgramName, // window titlebar caption WS_OVERLAPPEDWINDOW | WS_SYSMENU, // base window style CW_USEDEFAULT, // default x position CW_USEDEFAULT, // default y position CW_USEDEFAULT, // default width CW_USEDEFAULT, // default height NULL, // parent's handle NULL, // menu handle hInstance, // handle to the instance NULL); // initialization data // display the main window; unless you make the window visible as part of the window // style you specify, the window is invisible by default ShowWindow(hWnd, nCmdShow); // windows "message pump"... remember that "while(true)" loop that sat around // waiting for events in the pseudocode? well, here it is! through this loop, messages // are parsed and eventually sent by windows to your main event handler, WndProc while(GetMessage(&wMsg,0,0,0)){ TranslateMessage(&wMsg); DispatchMessage(&wMsg); } // return exit code from program, obtained from PostQuitMessage return wMsg.wParam; } **********END LISTING**************** ------------------------------------------------------II. Event Driven Programming, Part #2

// extended

------------------------------------------------------If you actually read the previous listing, you might be reeling a little by now and wondering if there isn't an easier way. Thankfully, the answer is "yes". Most programmers don't want to deal with the whole window setup routine (WinMain) or frankly the main event handler (WndProc) either. Most programmers just want to cut to the chase and write the application-specific code for the events they are interested in (i.e. onPaint). Fortunately, the people who write development tools are not insensitive to this need. Many tools exist that will help you do exactly that. MFC, for example, is a window framework that does the dirty work for you. MFC handles the window setup and teardown that is basically the same for all apps, and allows you to write only the onWhatever event handler functions that are meaningful to you. Deep, deep down it still has a message pump but you'll never see it... and for most people, that's a good thing. Many other window frameworks other than MFC are available and range from basic application skeletons to libraries that--like MFC--contain a lot of extra code for other things that GUI programs like to do: such as send data over a network or write to a database. ViewKit, for example, is a basic window framework for CDE and OSF/Motif developers on Unix platforms. ------------------------------------------------------III. Widgets, Windows and Gadgets, Part #1 ------------------------------------------------------The word WIDGET is a short for "window gadget". A widget is any control you place on your main window (or FORM) such as a button, textbox or scrollbar. Once you understand the basics of how to get an event-driven window up and running, you'll want to start adding widgets to make your app, well, do something interesting. If you wanted to add a button using the Windows-API, you might add the following code to your WinMain function right before the call to ShowWindow: CreateWindow( "BUTTON", // button class control name "Click Me", // default text WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP, // window style 30, // horizontal position 30, // vertical position 50, // width 50, // height hWnd, // handle to parent or owner window (HMENU)IDC_MYBUTTONID, // button id, anything you like hInstance, // handle to application instance NULL // pointer to window-creation data );

Be sure to make assign a unique ID to you button. Do this by pasting the following line at the top of the example: #define IDC_MYBUTTONID 100 Notice that the CreateWindow function is used to make a button. Buttons, and other widgets, are really just windows themselves much like your main application window, but with special functionality written into them to make them operate as buttons. To make the button actually do anything, you'll need to attach an event to it. When a button is clicked, Windows fires the WM_COMMAND event. It also sets the low-order word of the wParam message parameter to the ID of the button, so that you know what button was clicked. To process this event, you'll need to add the following code to your WndProc function: // button clicked case WM_COMMAND: if (LOWORD(wParam) == IDC_MYBUTTONID) { onClickMyButton(hWnd); } else { // some other button got clicked } break; Then you would add a function to serve as the event handler for your button: void onClickMyButton(HWND hWnd) { MessageBox(hWnd, "Yeah, you clicked me!!", "I was Clicked", MB_OK); } Congratulations! You've just made a real, working fully graphical pure-Windows API program that actually does something. It's not much, but it fully demonstrates the core of what is involved in producing a simple application with a GUI.

------------------------------------------------------IV. Widgets, Windows and Gadgets, Part #2 ------------------------------------------------------Just like manually writing the code for the event pump, most programmers have no tolerance for manually coding every button on their form. Not only is it a pain to do, it's difficult to maintain when you want to make design changes. While there's no reason you can't do it that way, the truth is that most major applications do not create all of their widgets by calling CreateWindow. Most windows compilers include what is know as a RESOURCE COMPILER, which generally also includes a graphical resource editor. A RESOURCE

EDITOR lets you design your form by dragging and dropping buttons, scrollbars and other widgets onto it. When you are done designing, your form is saved as a RESOURCE SCRIPT and the positions of your buttons and other widgets are stored inside. When you compile your application, this script is compiled into your application by the resource compiler. Various API calls allow you to simply load even complete window dialogs from a resource file, which saves you the trouble of writing code to position all of the controls. Tools such as MFC can help you simplify connecting your code to the resources you create. However, you can use a resource editor to help you design your user interfaces whether you use MFC (or any other framework) or not. ------------------------------------------------------V. Toolkits ------------------------------------------------------Sometimes even a resource editor and window framework are not enough. Many people like to shortcut designing their applications even further by using one of many different toolkits. For example, Tcl and the Tk Toolkit is one popular means for designing simple GUIs. Many people develop just the graphical portion of their application in Tcl\Tk, and then write the remainder of the application that does the actual work in C++. This is often a very quick way for people to add a GUI to a command-line application without investing a large amount of time programming the interface in C++. Mktclapp is a tool that can help you do that a bit more easily, and can be found here: http://www.hwaci.com/sw/mktclapp/ Some other window toolkits and frameworks were already mentioned in the comments. ------------------------------------------------------VI. What Tools to Use ------------------------------------------------------Which development tool(s) to use is a very personal decision based on a large number of different factors. Different tools vary greatly in both performance and ease of use. Some tools are also better suited to different types of applications. For example, since we've been discussing MFC, MFC would be a great choice for writing a spreadsheet application for Windows because it is easy to use and creates many standard kinds of window appearances with less effort. However, MFC would be a terrible choice for developing a trendy screen hack because it makes it far too difficult to get under the hood. MFC would also be a poor choice for developing a spreadsheet application if you intended to port the application to several different platforms, say Windows and Linux. If you wanted to do something like that, you might be better off using a different compiler entirely, perhaps such as GCC, along with some sort of cross-platform window toolkit. My best advice is just to shop around and see what feels right for you. Think about what kind of application you want to write, and see

if you can find something similar that someone else has done and find out what they used to do it. The other thing to consider is how much you are willing to spend. Some tools--like many of the Linux tools--are free, but some of the other tools--like the Microsoft compilers--can be kind of pricey. On the flip side, if you take a college course, you might be able to get the student edition of any of them for fairly cheap. ------------------------------------------------------VII. Where to Learn More ------------------------------------------------------Obviously, there is a lot more to learn about developing applications with graphical user interfaces. You might consider a course at your local community college, or at the very least, a trip to your local library. Many of the "For Dummies" books are actually very good as are most of the books published by O'Reilly. Don't forget to read the compiler documentation, either. Although I had a programming background to begin with--both my parents are programmers, so they taught me ever since I was little--I first taught myself C years ago strictly from the Borland help files. The MSDN has a wealth of information and lots of useful examples. Many of the programming tools available come with some basic docs or sample files to get you started. The following sites have good links to information (and lots of code you can swipe :-) ) as well as answers to common questions related to programming graphical applications for various platforms: Experts Exchange http://www.experts-exchange.com/ Code Guru http://www.codeguru.com/ Code Project http://www.codeproject.com/ MSDN http://msdn.microsoft.com/ Linoleum: Linux Programming Resources http://leapster.org/linoleum/ Mac OS X Programming: Getting Started http://developer.apple.com/macosx/gettingstarted/ How does throwing and catching exceptions differ from using setjmp and longjmp? The throw operation calls the destructors for automatic objects instantiated since entry to the try block. What is a default constructor? 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; }

What is a conversion constructor? A constructor that accepts one argument of a different type. What is the difference between a copy constructor and an overloaded assignment operator? A copy constructor constructs a new object by using the content of the argument object. An overloaded assignment operator assigns the contents of an existing object to another existing object of the same class. When should you use multiple inheritance? There are three acceptable answers: "Never," "Rarely," and "When the problem domain cannot be accurately modeled any other way." Explain the ISA and HASA class relationships. How would you implement each in a class design? 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. When is a template a better solution than a base class? 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 genericity) to the designer of the container or manager class. What is a mutable member? One that can be modified by the class even when the object of the class or the member function doing the modification is const. What is an explicit constructor? A conversion constructor declared with the explicit keyword. The compiler does not use an explicit constructor to implement an implied conversion of types. Its purpose is reserved explicitly for construction. What is the Standard Template Library (STL)? 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. Describe run-time type identification. The ability to determine at run time the type of an object by using the typeid operator or the dynamic_cast operator. What problem does the namespace feature solve?

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 librarys external declarations with a unique namespace that eliminates the potential for those collisions. This solution assumes that two library vendors dont use the same namespace identifier, of course. Are there any new intrinsic (built-in) data types? Yes. The ANSI committee added the bool intrinsic type and its true and false value keywords. Will the following program execute? void main() { void *vptr = (void *) malloc(sizeof(void)); vptr++; } Answer1 It will throw an error, as arithmetic operations cannot be performed on void pointers. Answer2 It will not build as sizeof cannot be applied to void* ( error Unknown size ) Answer3 How can it execute if it wont even compile? It needs to be int main, not void main. Also, cannot increment a void *. Answer4 According to gcc compiler it wont show any error, simply it executes. but in general we cant do arthematic operation on void, and gives size of void as 1 Answer5 The program compiles in GNU C while giving a warning for void main. The program runs without a crash. sizeof(void) is 1? hence when vptr++, the address is incremented by 1. Answer6 Regarding arguments about GCC, be aware that this is a C++ question, not C. So gcc will compile and execute, g++ cannot. g++ complains that the return type cannot be void and the argument of sizeof() cannot be void. It also reports that ISO C++ forbids incrementing a pointer of type void*. Answer7 in C++ voidp.c: In function `int main(): voidp.c:4: error: invalid application of `sizeof to a void type voidp.c:4: error: `malloc undeclared (first use this function) voidp.c:4: error: (Each undeclared identifier is reported only once for each function it appears in.) voidp.c:6: error: ISO C++ forbids incrementing a pointer of type `void* But in c, it work without problems void main() { char *cptr = 0?2000; long *lptr = 0?2000; cptr++; lptr++;

printf( %x %x, cptr, lptr); }Will it execute or not? Answer1 For Q2: As above, wont compile because main must return int. Also, 02000 cannot be implicitly converted to a pointer (I assume you meant 02000 and not 0?2000.) Answer2 Not Excute. Compile with VC7 results following errors: error C2440: initializing : cannot convert from int to char * error C2440: initializing : cannot convert from int to long * Not Excute if it is C++, but Excute in C. The printout: 2001 2004 Answer3 In C++ [$]> g++ point.c point.c: In function `int main(): point.c:4: error: invalid conversion from `int to `char* point.c:5: error: invalid conversion from `int to `long int* in C [$] etc > gcc point.c point.c: In function `main: point.c:4: warning: initialization makes pointer from integer without a cast point.c:5: warning: initialization makes pointer from integer without a cast [$] etc > ./a.exe 2001 2004 What is the difference between Mutex and Binary semaphore? semaphore is used to synchronize processes. where as mutex is used to provide synchronization between threads running in the same process. In C++, what is the difference between method overloading and method overriding? 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. What methods can be overridden in Java? 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. What are the defining traits of an object-oriented language? The defining traits of an object-oriented langauge are: * encapsulation * inheritance * polymorphism Write a program that ask for user input from 5 to 9 then calculate the average

int main() { int MAX=4; int total =0; int average=0; int numb; cout<<"Please enter your input from 5 to 9"; cin>>numb; if((numb <5)&&(numb>9)) cout<<"please re type your input"; else for(i=0;i<=MAX; i++) { total = total + numb; average= total /MAX; } cout<<"The average number is"<<average<<endl; return 0; } Can you be bale to identify between Straight- through and Cross- over cable wiring? and in what case do you use Straight- through and Cross-over? Straight-through is type of wiring that is one to connection, Cross- over is type of wiring which those wires are got switched We use Straight-through cable when we connect between NIC Adapter and Hub. Using Cross-over cable when connect between two NIC Adapters or sometime between two hubs. If you hear the CPU fan is running and the monitor power is still on, but you did not see any thing show up in the monitor screen. What would you do to find out what is going wrong? I would use the ping command to check whether the machine is still alive(connect to the network) or it is dead. Assignment Operator - What is the diffrence between a "assignment operator" and a "copy constructor"? 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. "mutable" Keyword - What is "mutable"?

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 } } Answer2. "mutable" keyword in C++ is used to specify that the member may be updated or modified even if it is member of constant object. Example: class Animal { private: string name; string food; mutable int age; public: void set_age(int a); }; void main() { const Animal Tiger(Fulffy,'antelope,1); Tiger.set_age(2); // the age can be changed since its mutable } RTTI - What is RTTI? 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. STL Containers - What are the types of STL containers? 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 Virtual Destructor - What is the need for Virtual Destructor ? 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 classs 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. Differences of C and C++ Could you write a small program that will compile in C but not in C++ ? 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. Bitwise Operations - Given inputs X, Y, Z and operations | and & (meaning bitwise OR and AND, respectively), what is output equal to in? output = (X & Y) | (X & Z) | (Y & Z); C++ Object-Oriented Questions 1. What is a modifier? 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; } }; 2. What is an accessor? 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 3. Differentiate between a template class and class template. Template class: A generic definition or a parameterized class not instantiated until the client provides the needed information. Its 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. Its jargon for plain classes. 4. When does a name clash occur? 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. 5. Define namespace. 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. 6. What is the use of using declaration. A using declaration makes it possible to use a name from a namespace without the scope operator. 7. What is an Iterator class? A class that is used to traverse through the objects maintained by a container class. There are five categories of iterators: input iterators, output iterators, forward iterators, bidirectional iterators, 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. The simplest and safest iterators are those that permit read-only access to the contents of a container class. 10. What is an incomplete type? 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.

11. What is a dangling pointer? 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. 12. Differentiate between the message and method. 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. 13. What is an adaptor class or Wrapper class?

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. 14. What is a Null object? 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. 15. What is class invariant? 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. 16. What do you mean by Stack unwinding? 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. 17. Define precondition and post-condition to a member function. 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. 18. What are the conditions that have to be met for a condition to be an invariant of the class? * The condition should hold at the end of every constructor. * The condition should hold at the end of every mutator (non-const) operation. 19. What are proxy objects? Objects that stand for other objects are called proxy objects or surrogates. template <class t=""> 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: Array2D<float>data(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. 20. Name some pure object oriented languages. Smalltalk, Java, Eiffel, Sather. 21. Name the operators that cannot be overloaded. 22. What is a node class? 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. 23. What is an orthogonal base class? 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. 24. What is a container class? What are the types of container classes? 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. 25. How do you write a function that can reverse a linked-list? Answer1: void reverselist(void) { if(head==0) return;

if(head-<next==0) return; if(head-<next==tail) { head-<next = 0; tail-<next = head; } else { node* pre = head; node* cur = head-<next; node* curnext = cur-<next; head-<next = 0; cur-<next = head; for(; curnext!=0; ) { cur-<next = pre; pre = cur; cur = curnext; curnext = curnext-<next; } curnext-<next = cur; } } Answer2: node* reverselist(node* head) { if(0==head || 0==head->next) //if head->next ==0 should return head instead of 0; return 0; { node* prev = head; node* curr = head->next; node* next = curr->next; for(; next!=0; ) { curr->next = prev; prev = curr; curr = next; next = next->next; } curr->next = prev; head->next = 0; head = curr; } return head; }

26. What is polymorphism? 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. 27. How do you find out if a linked-list has an end? (i.e. the list is not a cycle) 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. 28. How can you tell what shell you are running on UNIX system? 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. 29. What is Boyce Codd Normal form? 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 30. What is pure virtual function? 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 31. Write a Struct Time where integer m, h, s are its members struct Time { int m; int h; int s; }; 32. How do you traverse a Btree in Backward in-order? Process the node in the right subtree Process the root Process the node in the left subtree 33. What is the two main roles of Operating System? As a resource manager As a virtual machine 34. In the derived class, which data member of the base class are visible? In the public and protected sections. C++ programming on UNIX Could you tell something about the Unix System Kernel? The kernel is the heart of the UNIX openrating system, its reponsible for controlling the computers resouces and scheduling user jobs so that each one gets its fair share of resources.

What are each of the standard files and what are they normally associated with? 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. Detemine the code below, tell me exectly how many times is the operation sum++ performed ? for ( i = 0; i < 100; i++ ) for ( j = 100; j > 100 - i; j) sum++; (99 * 100)/2 = 4950 The sum++ is performed 4950 times. Give 4 examples which belongs application layer in TCP/IP architecture? FTP, TELNET, HTTP and TFTP Whats the meaning of ARP in TCP/IP? 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. What is a Makefile? 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. What is deadlock? 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. What is semaphore? 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. Is C an object-oriented language? C is not an object-oriented language, but limited object-oriented programming can be done in C. Name some major differences between C++ and Java. 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

C++ Networking Interview Questions and Answers What is the difference between Stack and Queue? Stack is a Last In First Out (LIFO) data structure. Queue is a First In First Out (FIFO) data structure Write a fucntion that will reverse a string. char *strrev(char *s) { int i = 0, len = strlen(s); char *str; if ((str = (char *)malloc(len+1)) == NULL) /*cannot allocate memory */ err_num = 2; return (str); } while(len) str[i++]=s[len]; str[i] = NULL; return (str); } What is the software Life-Cycle? 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 What is the difference between a Java application and a Java applet? The difference between a Java application and a Java applet is that a Java application is a program that can be executed using the Java interpeter, and a JAVA applet can be transfered to different networks and executed by using a web browser (transferable to the WWW). Name 7 layers of the OSI Reference Model? -Application layer -Presentation layer -Session layer -Transport layer

-Network layer -Data Link layer -Physical layer C++ Algorithm Interview Questions and Answers What are the advantages and disadvantages of B-star trees over Binary trees? Answer1 B-star trees have better data structure and are faster in search than Binary trees, but its 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 Btree 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. Write the psuedo code for the Depth first Search. dfs(G, v) //OUTLINE Mark v as "discovered" For each vertex w such that edge vw is in G: If w is undiscovered: dfs(G, w); that is, explore vw, visit w, explore from there as much as possible, and backtrack from w to v. Otherwise: "Check" vw without visiting w. Mark v as "finished". Describe one simple rehashing policy. 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. Describe Stacks and name a couple of places where stacks are useful. 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. Suppose a 3-bit sequence number is used in the selective-reject ARQ, what is the maximum number of frames that could be transmitted at a time? If a 3-bit sequence number is used, then it could distinguish 8 different frames. Since the number of frames that could be transmitted at a time is no greater half the numner of frames that could be distinguished by the sequence number, so at most 4 frames can be transmitted at a time. C++ Questions only C++ Questions only (1) 1.Write a short code using C++ to print out all odd number from 1 to 100 using a for loop for( unsigned int i = 1; i < = 100; i++ )

if( i & 0x00000001 ) cout << i<<","; 2. Design and implement a String class that satisfies the following: * Supports embedded nulls * Provide the following methods (at least) o Constructor o Destructor o Copy constructor o Assignment operator o Addition operator (concatenation) o Return character at location o Return substring at location o Find substring * Provide versions of methods for String and for char* arguments 3. Which one of the following statements about operator delete is TRUE? 1) delete is equivalent to dealloc() 2) delete can be overloaded 3) delete is always more efficient than free() 4) delete is not as efficient as dealloc() 5) A delete call can be made on a variable of any type 4. You have a class whose internal representation is not exposed to the user and can change transparently. What is that an example of? 1) Polymorphism 2) Abstraction 3) Derivation 4) Encapsulation 5) Inheritance 5. char a; char ca[] = {'a','e','i','o','u','y'}; char* pca = ca; pca += 2; a = *pca; What values are be stored in 'a' after the above sample code is run if it is run on a system where pointers are two bytes long? 1) a = 'u' 2) a = 'e' 3) a = 'i' 4) The code is illegal. Only a pointer can be added to a pointer, not an integer. 5) The value cannot be determined without also knowing the size of an int on the system. 6. template<class T = int> class Foo { public: template<class T2 = T> class InnerFoo {

T2 t2; }; static InnerFoo<long> *f; }; Foo<double> f; Referring to the sample code above, what is the type of T2 in the object ::f? 1) double 2) t2 3) char 4) int 5) long 7. int I, j; string s; cin >> I >> j >> s >> s >> I; cout << I << " " << j << " "<< s << " "<< I; Referring to the sample code above, what is the displayed output if the input string given were: "5 10 Sample Word 15 20"? 1) 5 10 Sample Word 15 20 2) 15 20 Sample Word 15 3) 5 10 Sample Word 15 4) 15 10 Word 15 5) 15 20 Sample Word 20 8. String::~String() { cout << " String() " << endl; } Assuming that all the necessary using-directives have been made, in the sample code above, which one of the following statements pertaining to the destructor is TRUE? 1) The destructor should be ~String::String(). 2) The destructor is incorrect because it is declared outside the class definition. 3) The destructor has been defined correctly. 4) The destructor is incorrect because of the scope resolution operator :: 5) The destructor has been defined incorrectly since it contains code. 9. Which type conditional expression is used when a developer wants to execute a statement only once when a given condition is met? 1) switch-case 2) for 3) if 4) do-while 5) while 10. const int MaxEntries = 10;

extern int entries[MaxEntries]; If this is a complete translation unit, what can be said about the variable "MaxEntries"? 1) It can only be used within the translation unit shown in the sample. 2) It cannot be used as a case value in a switch statement. 3) It becomes accessible to other translation units that reference it by using the extern specifier. 4) It can be used in preprocessor directives. 5) It cannot be used to specify bounds in an array declaration. C++ Questions only (2) 10. int count=0; class obj { public: obj(){ count++; } ~obj() { count--; } }; main() { obj A,B,C,D ; return 0 ; } What is the value of "count" immediately before the return statement above is executed? 1) 0 2) 1 3) 2 4) 3 5) 4 11. class Foo; What is the above sample code an example of? 1) A class constructor 2) A class object instantiation 3) A class definition 4) A class declaration 5) A syntax error 12. 1: class Foo { 2: int size; string name; double value; 3: 4: public: 5: Foo() : size(0), name("unknown"), value(0.0) {

6: } 7: Foo(int s) { 8: size = s; name = "unknown"; value = 0.0; 9: } 10: Foo(int s = 0, string n = "unknown", double v=0) { 11: size = s; name = n; value = v; 12: } 13: }; Referring to the sample code above, on which one of the following lines does an initializer list occur? 1) Line 2 2) Line 5 3) Line 8 4) Line 10 5) Line 11 13. Scenario:Your manager has asked you to integrate an existing project with an external timer. Her requirements include adding a global variable whose contents can be only read by the software but whose value will be continuously updated by the hardware clock. Referring to the above scenario, which one of the following variable declarations satisfies all the requirements? 1) extern volatile clock; 2) extern const volatile long clock; 3) extern long clock; 4) extern const mutable long clock; 5) extern mutable long clock; 14. class Grandpa { }; class Ma : virtual public Grandpa { }; class Pa : virtual public Grandpa { }; class Me : public Ma, public Pa, virtual public Grandpa { }; Each object of type Me will contain how many sub-objects of type Grandpa? 1) 1 2) 2 3) 3 4) 4 5) 5

15. class Foo { int i; public: Foo(int x) : i(x) { } }; 1: Foo *f = new Foo; 2: Foo &f = new Foo(1); 3: int i = Foo::i; 4: Foo *af = new Foo[10]; 5: const Foo &af = Foo(1); Referring to the sample code above, which one of the numbered lines of code is legal C++? 1) Line 1 2) Line 2 3) Line 3 4) Line 4 5) Line 5 16. Which set of preprocessor directives is used to prevent multiple inclusions of header files? 1 #ifndef, #define and #endif 2 #ifdefined and #enddefine 3 #define and #endif only 4 #$if and #endif 5 #if and #define 17. Which one of the following statements is TRUE in regard to overloading the ++ operator? 1 You cannot define a post-increment operator. 2 You cannot define a pre-increment operator 3 You cannot define both a pre-increment and post increment operator for a class. 4 You must use a dummy parameter to define a post increment operator. 5 You should always create a pre-increment operator when overloading ++. C++ Questions only (3) 18. Which one of the following correctly shows that class d is a sub-class of class b? 1 class b : public d {}; 2 class d : public b {}; 3 class b public b {}; 4 class d, public b {}; 5 class b, public d {}; 19. class numbers {

int I; public: void set(int v) {I = v;} int read() {return I;} }; Referring to the sample code above, how do you declare a numbers object called "A" and assign its "I" member the value "2"? 1) A : numbers; A.set(2); 2) numbers set(2); numbers A; 3) numbers A; set(2); 4) A.set(2), B.set(3), C.set(5); numbers A, B, C; 5) numbers A; A.set(2); 20. char s[] = {'a','b','c',0,'d','e','f',0}; int I = sizeof(s); Referring to the sample code above, what value does I contain? 13 26 37 48 59 21. std::cout << count_if( strVec.begin(), strVec.end(), bind2nd(greater(), "Baz") ); What will the above code output if strVec is a std::vector<std::string> and contains the strings "Foo", "Bar," "Baz", and "Bee"? 1 Unknown, those functions are non-standard. 22 3 "Bee" 4 "Baz" 54 22. class Parent {

public: Parent () { Status () ; } virtual ~Parent () { Status () ; } virtual void Status () { cout << "Parent "; } }; class Child : public Parent { public: Child () { Status () ; } virtual ~Child () { Status () ; } virtual void Status () { cout << "Child " ; } }; int main () { Child c ; return 0 ; } Assuming that all the necessary standard headers have been included and the necessary using-directives have been made, what will be the output of the sample code above? 1 Child Child Child Child 2 Parent Parent 3 Child Child 4 Parent Child Child Parent 5 Child Parent Parent Child 23. using namespace std; string s("abcdefghijk"); string::size_type I = s.find_first_of("a-c"); s = string(s, I, string::npos); I = s.find_first_not_of("a-e"); cout << string(s, I, string::npos); Assuming that all the necessary standard headers have been included, what is the output produced be the sample code above? 1 abcfghijk 2 abc 3 abcdefghijk 4 fghijk 5 bcdefghijk 24. Which one of the following operators can only be overridden when implemented as a member function of the class it is being implemented for? 1 == (double equal) 2 + (plus) 3 ! (exclamation point) 4 = (equal) 5 & (ampersand)

25. Sample Code class HasStatic { static int I; }; Referring to the sample code above, what is the appropriate method of defining the member variable "I", and assigning it the value 10, outside of the class declaration? 1 int static I = 10; 2 int HasStatic::I = 10; 3 HasStatic I = 10; 4 static I(10); 5 static I = 10; 26. class A { public: A() { if(x > 1) throw "x overflow"; else x++; } private: static int x; }; int A::x; Referring to the sample code above, which one of the following statements is correct? 1 The class can be instantiated without throwing an exception two times. 2 It cannot be determined how many times the class can be instantiated (unknown value for x). 3 The class can be instantiated without throwing an exception one time. 4 Class A can be instantiated as many times as desired without throwing an exception. 5 Class A can never be instantiated without throwing an exception. C++ gamedev interview questions (1) 1. Explain which of the following declarations will compile and what will be constant - a pointer or the value pointed at: * const char * * char const * * char * const Note: Ask the candidate whether the first declaration is pointing to a string or a single character. Both explanations are correct, but if he says that its a single character pointer, ask why a whole string is initialized as char* in C++. If he says this is a string declaration, ask him to declare a pointer to a single character. Competent candidates should not have problems pointing out why const char* can be both a character and a string declaration, incompetent ones will come up with invalid reasons.

2. Youre given a simple code for the class BankCustomer. Write the following functions: * Copy constructor * = operator overload * == operator overload * + operator overload (customers balances should be added up, as an example of joint account between husband and wife) Note:Anyone confusing assignment and equality operators should be dismissed from the interview. The applicant might make a mistake of passing by value, not by reference. The candidate might also want to return a pointer, not a new object, from the addition operator. Slightly hint that youd like the value to be changed outside the function, too, in the first case. Ask him whether the statement customer3 = customer1 + customer2 would work in the second case. 3. What problems might the following macro bring to the application? #define sq(x) x*x 4. Consider the following struct declarations: struct A { A(){ cout << "A"; } }; struct B { B(){ cout << "B"; } }; struct C { C(){ cout << "C"; } }; struct D { D(){ cout << "D"; } }; struct E : D { E(){ cout << "E"; } }; struct F : A, B { C c; D d; E e; F() : B(), A(),d(),c(),e() { cout << "F"; } }; What constructors will be called when an instance of F is initialized? Produce the program output when this happens. C++ gamedev interview questions (2) 5. Anything wrong with this code? T *p = new T[10]; delete p; Note: Incorrect replies: No, everything is correct, Only the first element of the array will be deleted, The entire array will be deleted, but only the first element destructor will be called. 6. Anything wrong with this code? T *p = 0; delete p; Note: Typical wrong answer: Yes, the program will crash in an attempt to delete a null pointer. The candidate does not understand pointers. A very smart candidate will ask whether delete is overloaded for the class T.

7. Explain virtual inheritance. Draw the diagram explaining the initialization of the base class when virtual inheritance is used. Note: Typical mistake for applicant is to draw an inheritance diagram, where a single base class is inherited with virtual methods. Explain to the candidate that this is not virtual inheritance. Ask them for the classic definition of virtual inheritance. Such question might be too complex for a beginning or even intermediate developer, but any applicant with advanced C++ experience should be somewhat familiar with the concept, even though hell probably say hed avoid using it in a real project. Moreover, even the experienced developers, who know about virtual inheritance, cannot coherently explain the initialization process. If you find a candidate that knows both the concept and the initialization process well, hes hired. 8. Whats potentially wrong with the following code? long value; //some stuff value &= 0xFFFF; Note: Hint to the candidate about the base platform theyre developing for. If the person still doesnt find anything wrong with the code, they are not experienced with C++. 9. What does the following code do and why would anyone write something like that? void send (int *to, int * from, int count) { int n = (count + 7) / 8; switch ( count % 8) { case 0: do { *to++ = *from++; case 7: *to++ = *from++; case 6: *to++ = *from++; case 5: *to++ = *from++; case 4: *to++ = *from++; case 3: *to++ = *from++; case 2: *to++ = *from++; case 1: *to++ = *from++; } while ( --n > 0 ); } } 10. In the H file you see the following declaration: class Foo { void Bar( void ) const ; }; Tell me all you know about the Bar() function. C++ coding interview questions Given the following classes class Fruit { // } class Apple : public Fruit { // } class Peach : public Fruit { // } // Container of fruit class BasketOfFruit { BasketOfFruit() ; void insert( Fruit & f ) ;

// } // Container of apples class BasketOfApples /* ??? */ { // } Should BasketOfApples derive from BasketOfFruit? Why or why not? What is the general principle that determines the answer? ---------------------------------------------Describe briefly what the following function does. What standard function is it most like ? int f( char *p ) { int n = 0 ; while ( *p != 0 ) n = 10*n + *p++ - 0? ; return n ; } ------------------------------------------Describe briefly what function a does in the following code fragment. struct s { struct s *next ; } a( struct s *p, struct s *x ) { while ( p->next != 0 ) p = p->next ; p->next = x ; x->next = 0 ; } -------------------------------------------What default methods are declared implicitly by the C++ compiler for the class below: class Empty { }; ----------------------------------------------C/C++ Questions only 1. What is the output of printf("%d") 2. What will happen if I say delete this 3. Difference between "C structure" and "C++ structure". 4. Diffrence between a "assignment operator" and a "copy constructor" 5. What is the difference between "overloading" and "overridding"?

6. Explain the need for "Virtual Destructor". 7. Can we have "Virtual Constructors"? 8. What are the different types of polymorphism? 9. What are Virtual Functions? How to implement virtual functions in "C" 10. What are the different types of Storage classes? 11. What is Namespace? 12. What are the types of STL containers?. 13. Difference between "vector" and "array"? 14. How to write a program such that it will delete itself after exectution? 15. Can we generate a C++ source code from the binary file? 16. What are inline functions? 17. Talk sometiming about profiling? 18. How many lines of code you have written for a single program? 19. What is "strstream" ? 20. How to write Multithreaded applications using C++? 21. Explain "passing by value", "passing by pointer" and "passing by reference" 22. Write any small program that will compile in "C" but not in "C++" 23. Have you heard of "mutable" keyword? 24. What is a "RTTI"? 25. Is there something that I can do in C and not in C++? 26. Why preincrement operator is faster than postincrement? 27. What is the difference between "calloc" and "malloc"? 28. What will happen if I allocate memory using "new" and free it using "free" or allocate sing "calloc" and free it using "delete"? 29. What is Memory Alignment? 30. Explain working of printf. 31. Difference between "printf" and "sprintf". 32. What is "map" in STL? 33. When shall I use Multiple Inheritance? 34. What are the techniques you use for debugging? 35. How to reduce a final size of executable? 36. Give 2 examples of a code optimization. C/C++ Questions only (Declarations and Initializations) 1. How do you decide which integer type to use? 2. What should the 64-bit type on new, 64-bit machines be? 3. What's the best way to declare and define global variables? 4. What does extern mean in a function declaration? 5. What's the auto keyword good for? 6. How do I declare an array of N pointers to functions returning pointers to functions returning pointers to characters? 7. How can I declare a function that returns a pointer to a function of its own type? 8. My compiler is complaining about an invalid redeclaration of a function, but I only define it once and call it once. 9. What can I safely assume about the initial values of variables which are not explicitly initialized? 10. Why can't I initialize a local array with a string? 11. What is the difference between char a[] = "string"; and char *p = "string"; ? 12. How do I initialize a pointer to a function? C/C++ Questions only (Structures, Unions, and Enumerations)

1. What's the difference between struct x1 { ... }; and typedef struct { ... } x2; ? 2. Why doesn't "struct x { ... }; x thestruct;" work? 3. Can a structure contain a pointer to itself? 4. What's the best way of implementing opaque (abstract) data types in C? 5. I heard that structures could be assigned to variables and passed to and from functions, but K&R1 says not. 6. Why can't you compare structures? 7. How are structure passing and returning implemented? 8. Can I pass constant values to functions which accept structure arguments? 9. How can I read/write structures from/to data files? 10. How can I turn off structure padding? 11. Why does sizeof report a larger size than I expect for a structure type? 12. How can I determine the byte offset of a field within a structure? 13. How can I access structure fields by name at run time? 14 I have a program which works correctly, but dumps core after it finishes. Why? 15. Can I initialize unions? 16. What is the difference between an enumeration and a set of preprocessor #defines? 17. Is there an easy way to print enumeration values symbolically? C/C++ Questions only (Expressions) 1. Why doesn't the code "a[i] = i++;" work? 2. Under my compiler, the code "int i = 7; printf("%d\n", i++ * i++);" prints 49. Regardless of the order of evaluation, shouldn't it print 56? 3. How could the code [CENSORED] ever give 7? 4. Don't precedence and parentheses dictate order of evaluation? 5. But what about the && and || operators? 6. What's a ``sequence point''? 7. So given "a[i] = i++;" we don't know which cell of a[] gets written to, but i does get incremented by one. 8. If I'm not using the value of the expression, should I use i++ or ++i to increment a variable? 9. Why doesn't the code "int a = 1000, b = 1000; long int c = a * b;" work? 10. Can I use ?: on the left-hand side of an assignment expression? C/C++ Questions only (Pointers) 1. What's wrong with "char *p; *p = malloc(10);"? 2. Does *p++ increment p, or what it points to?

3. I want to use a char * pointer to step over some ints. Why doesn't "((int *)p)++;" work? 4. I have a function which accepts, and is supposed to initialize, a pointer, but the pointer in the caller remains unchanged. 5. Can I use a void ** pointer to pass a generic pointer to a function by reference? 6. I have a function which accepts a pointer to an int. How can I pass a constant like 5 to it? 7. Does C even have ``pass by reference''? 8. I've seen different methods used for calling functions via C/C++ Questions only (Null Pointers) 1. What is this infamous null pointer, anyway? 2. How do I get a null pointer in my programs? 3. Is the abbreviated pointer comparison ``if(p)'' to test for non-null pointers valid? 4. What is NULL and how is it #defined? 5. How should NULL be defined on a machine which uses a nonzero bit pattern as the internal representation of a null pointer? 6. If NULL were defined as ``((char *)0),'' wouldn't that make function calls which pass an uncast NULL work? 7. If NULL and 0 are equivalent as null pointer constants, which should I use? 8. But wouldn't it be better to use NULL, in case the value of NULL changes? 9. I use the preprocessor macro "#define Nullptr(type) (type *)0" to help me build null pointers of the correct type. 10. This is strange. NULL is guaranteed to be 0, but the null pointer is not? 11. Why is there so much confusion surrounding null pointers? 12. I'm confused. I just can't understand all this null pointer stuff. 13. Given all the confusion surrounding null pointers, wouldn't it be easier simply to require them to be represented internally by zeroes? 14. Seriously, have any actual machines really used nonzero null pointers? 15. What does a run-time ``null pointer assignment'' error mean? C/C++ Questions only (Arrays and Pointers) 1. I had the definition char a[6] in one source file, and in another I declared extern char *a. Why didn't it work? 2. But I heard that char a[] was identical to char *a. 3. So what is meant by the ``equivalence of pointers and arrays'' in C? 4. Why are array and pointer declarations interchangeable as function formal parameters?

5. How can an array be an lvalue, if you can't assign to it? 6. What is the real difference between arrays and pointers? 7. Someone explained to me that arrays were really just constant pointers. 8. I came across some ``joke'' code containing the ``expression'' 5["abcdef"] . How can this be legal C? 9. What's the difference between array and &array? 10. How do I declare a pointer to an array? 11. How can I set an array's size at compile time? 12. How can I declare local arrays of a size matching a passed-in array? 13. How can I dynamically allocate a multidimensional array? 14. Can I simulate a non-0-based array with a pointer? 15. My compiler complained when I passed a two-dimensional array to a function expecting a pointer to a pointer. 16. How do I write functions which accept two-dimensional arrays when the ``width'' is not known at compile time? 17. How can I use statically- and dynamically-allocated multidimensional arrays interchangeably when passing them to functions? 18. Why doesn't sizeof properly report the size of an array which is a parameter to a C/C++ Questions only (Memory Allocation) 1. Why doesn't the code ``char *answer; gets(answer);'' work? 2. I can't get strcat to work. I tried ``char *s3 = strcat(s1, s2);'' but I got strange results. 3. But the man page for strcat says that it takes two char *'s as arguments. How am I supposed to know to allocate things? 4. I have a function that is supposed to return a string, but when it returns to its caller, the returned string is garbage. 5. Why am I getting ``warning: assignment of pointer from integer lacks a cast'' for calls to malloc? :wq 6. Why does some code carefully cast the values returned by malloc to the pointer type being allocated? 7. Why does so much code leave out the multiplication by sizeof(char) when allocating strings? 8. I've heard that some operating systems don't actually allocate malloc'ed memory until the program tries to use it. Is this legal? 9. I'm allocating a large array for some numeric work, but malloc is acting strangely. 10. I've got 8 meg of memory in my PC. Why can I only seem to malloc 640K or so? 19 My program is crashing, apparently somewhere down inside malloc.

11. You can't use dynamically-allocated memory after you free it, can you? 12. Why isn't a pointer null after calling free? 13. When I call malloc to allocate memory for a local pointer, do I have to explicitly free it? 14. When I free a dynamically-allocated structure containing pointers, do I have to free each subsidiary pointer first? 15. Must I free allocated memory before the program exits? 16. Why doesn't my program's memory usage go down when I free memory? 17. How does free know how many bytes to free? 18. So can I query the malloc package to find out how big an allocated block is? 19. Is it legal to pass a null pointer as the first argument to realloc? 20. What's the difference between calloc and malloc? 21. What is alloca and why is its use discouraged? C/C++ Questions only (Characters and Strings) 1. Why doesn't "strcat(string, '!');" work? 2. Why won't the test if(string == "value") correctly compare string against the value? 3. Why can't I assign strings to character arrays? 4. How can I get the numeric (character set) value corresponding to a character? 5. Why is sizeof('a') not C/C++ Questions only (Boolean Expressions and Variables) 1. What is the right type to use for Boolean values in C? 2. What if a built-in logical or relational operator ``returns'' something other than 1? 3. Is if(p), where p is a pointer, C/C++ Questions only (C Preprocessor) 1. I've got some cute preprocessor macros that let me write C code that looks more like Pascal. What do y'all think? 2. How can I write a generic macro to swap two values? 3. What's the best way to write a multi-statement macro? 4. What are .h files and what should I put in them? 5. Is it acceptable for one header file to #include another? 6. Where are header (``#include'') files searched for? 7. I'm getting strange syntax errors on the very first declaration in a file, but it looks fine. 8. Where can I get a copy of a missing header file? 9. How can I construct preprocessor #if expressions which compare strings? 10. Does the sizeof operator work in preprocessor #if directives? 11. Can I use an #ifdef in a #define line, to define something two

different ways? 12. Is there anything like an #ifdef for typedefs? 13. How can I use a preprocessor #if expression to detect endianness? 14. How can I preprocess some code to remove selected conditional compilations, without preprocessing everything? 15. How can I list all of the pre#defined identifiers? 16. I have some old code that tries to construct identifiers with a 17. macro like "#define Paste(a, b) a/**/b", but it doesn't work any more. 18. What does the message ``warning: macro replacement within a string literal'' mean? 19. How can I use a macro argument inside a string literal in the macro expansion? 20. I've got this tricky preprocessing I want to do and I can't figure out a way to do it. 21. How can I write a macro which takes a variable number of C/C++ Questions only (ANSI/ISO Standard C) 1. What is the ``ANSI C Standard?'' 2. How can I get a copy of the Standard? 3. My ANSI compiler is complaining about prototype mismatches for parameters declared float. 4. Can you mix old-style and new-style function syntax? 5. Why does the declaration "extern f(struct x *p);" give me a warning message? 6. Why can't I use const values in initializers and array dimensions? 7. What's the difference between const char *p and char * const p? 8. Why can't I pass a char ** to a function which expects a const char **? 9. Can I declare main as void, to shut off these annoying ``main returns no value'' messages? 10. But what about main's third argument, envp? 11. I believe that declaring void main() can't fail, since I'm calling exit instead of returning. 12. The book I've been using always uses void main(). 13. Is exit(status) truly equivalent to returning the same status from main? 14. How do I get the ANSI ``stringizing'' preprocessing operator `#' to stringize the macro's value instead of its name? 15. What does the message ``warning: macro replacement within a string literal'' mean? 16. I'm getting strange syntax errors inside lines I've #ifdeffed out.

17. What are #pragmas ? What does ``#pragma once'' mean? 18. Is char a[3] = "abc"; legal? 19. Why can't I perform arithmetic on a void * pointer? 20. What's the difference between memcpy and memmove? 21. What should malloc(0) do? 22. Why does the ANSI Standard not guarantee more than six case-insensitive characters of external identifier significance? 23. My compiler is rejecting the simplest possible test programs, with all kinds of syntax errors. 24. Why are some ANSI/ISO Standard library routines showing up as undefined, even though I've got an ANSI compiler? 25. Does anyone have a tool for converting old-style C programs to ANSI C, or for automatically generating prototypes? 26. Why won't frobozz-cc, which claims to be ANSI compliant, accept this code? 27. What's the difference between implementation-defined, unspecified, and undefined behavior? 28. I'm appalled that the ANSI Standard leaves so many issues undefined. 29. I just tried some allegedly-undefined code on an ANSI-conforming compiler, and got the results I expected. C/C++ Questions only (Stdio) 1. What's wrong with the code "char c; while((c = getchar()) != EOF) ..."? 2. Why won't the code `` while(!feof(infp)) { fgets(buf, MAXLINE, infp); fputs(buf, outfp); } '' work? 3. My program's prompts and intermediate output don't always show up on the screen. 4. How can I read one character at a time, without waiting for the RETURN key? 5. How can I print a '%' character with printf? 6. How can printf use %f for type double, if scanf requires %lf? 7. How can I implement a variable field width with printf? 8. How can I print numbers with commas separating the thousands? 9. Why doesn't the call scanf("%d", i) work? 10. Why doesn't the code "double d; scanf("%f", &d);" work? 11. How can I specify a variable width in a scanf format string? 12. When I read numbers from the keyboard with scanf "%d\n", it seems to hang until I type one extra line of input. 13. I'm reading a number with scanf %d and then a string with gets(), but the compiler seems to be skipping the call to gets()! 14. I'm re-prompting the user if scanf fails, but sometimes it seems to go into an infinite loop.

15. Why does everyone say not to use scanf? What should I use instead? 16. How can I tell how much destination buffer space I'll need for an arbitrary sprintf call? How can I avoid overflowing the destination buffer with sprintf? 17. Why does everyone say not to use gets()? 18. Why does errno contain ENOTTY after a call to printf? 19. What's the difference between fgetpos/fsetpos and ftell/fseek? 20. Will fflush(stdin) flush unread characters from the standard input stream? 21. I'm trying to update a file in place, by using fopen mode "r+", but it's not working. 22. How can I redirect stdin or stdout from within a program? 23. Once I've used freopen, how can I get the original stream back? 24. How can I read a binary data file properly? C/C++ Questions only (Library Functions) 1. How can I convert numbers to strings? 2. Why does strncpy not always write a '\0'? 3. Why do some versions of toupper act strangely if given an upper-case letter? 4. How can I split up a string into whitespace-separated fields? 5. I need some code to do regular expression and wildcard matching. 6. I'm trying to sort an array of strings with qsort, using strcmp as the comparison function, but it's not working. 7. Now I'm trying to sort an array of structures, but the compiler is complaining that the function is of the wrong type for qsort. 8. How can I sort a linked list? 9. How can I sort more data than will fit in memory? 10. How can I get the time of day in a C program? 11. How can I convert a struct tm or a string into a time_t? 12. How can I perform calendar manipulations? 13. I need a random number generator. 14. How can I get random integers in a certain range? 15. Each time I run my program, I get the same sequence of numbers back from rand(). 16. I need a random true/false value, so I'm just taking rand() % 2, but it's alternating 0, 1, 0, 1, 0... 17. How can I generate random numbers with a normal or Gaussian distribution? 18. I'm trying to port this old program. Why do I get ``undefined external'' errors for some library functions? 19. I get errors due to library functions being undefined even though I #include the right header files. 20. I'm still getting errors due to library functions being

undefined, even though I'm requesting the right libraries. 21. What does it mean when the linker says that _end is undefined? C/C++ Questions only (Floating Point) 1. When I set a float variable to 3.1, why is printf printing it as 3.0999999? 2. Why is sqrt(144.) giving me crazy numbers? 3. I keep getting ``undefined: sin'' compilation errors. 4. My floating-point calculations are acting strangely and giving me different answers on different machines. 5. What's a good way to check for ``close enough'' floating-point equality? 6. How do I round numbers? 7. Where is C's exponentiation operator? 8. The pre-#defined constant M_PI seems to be missing from <math.h>. 9. How do I test for IEEE NaN and other special values? 10. What's a good way to implement complex numbers in C? 11. I'm looking for some mathematical library code. 12. I'm having trouble with a Turbo C program which crashes and says something like ``floating point formats not linked.'' C/C++ Questions only (Variable-Length Argument Lists) 1. I heard that you have to #include <stdio.h> before calling printf. Why? 2. How can %f be used for both float and double arguments in printf? 3. Why don't function prototypes guard against mismatches in printf's arguments? 4. How can I write a function that takes a variable number of arguments? 5. How can I write a function that takes a format string and a variable number of arguments, like printf, and passes them to printf to do most of the work? 6. How can I write a function analogous to scanf, that calls scanf to do most of the work? 7. I have a pre-ANSI compiler, without <stdarg.h>. What can I do? 8. How can I discover how many arguments a function was actually called with? 9. My compiler isn't letting me declare a function that accepts only variable arguments. 10. Why isn't "va_arg(argp, float)" working? 11. I can't get va_arg to pull in an argument of type pointer-to-function. 12. How can I write a function which takes a variable number of arguments and passes them to some other function ? 13. How can I call a function with an argument list built up at run time?

C/C++ Questions only (Strange Problems) 1. This program crashes before it even runs! 2. I have a program that seems to run correctly, but then crashes as it's exiting. 3. This program runs perfectly on one machine, but I get weird results on another. 4. Why does the code "char *p = "hello, world!"; p[0] = 'H';" crash? 5. What does ``Segmentation violation'' mean? C/C++ Questions only (Style) 1. What's the best style for code layout in C? 2. Is the code "if(!strcmp(s1, s2))" good style? 3. Why do some people write if(0 == x) instead of if(x == 0)? 4. I came across some code that puts a (void) cast before each call to printf. Why? 5. What is Hungarian Notation''? Is it worthwhile? 6. Where can I get the ``Indian Hill Style Guide'' and other coding standards? 7. Some people say that goto's are evil and that I should never use them. Isn't that a bit extreme? C/C++ Questions only (Tools and Resources) 1. I'm looking for C development tools (cross-reference generators, code beautifiers, etc.). 2. How can I track down these pesky malloc problems? 3. What's a free or cheap C compiler I can use? 4. I just typed in this program, and it's acting strangely. Can you see anything wrong with it? 5. How can I shut off the ``warning: possible pointer alignment problem'' message which lint gives me for each call to malloc? 7. Where can I get an ANSI-compatible lint? 8. Don't ANSI function prototypes render lint obsolete? 9. Are there any C tutorials or other resources on the net? 10. What's a good book for learning C? 11. Where can I find the sources of the standard C libraries? 12. I need code to parse and evaluate expressions. 13. Where can I get a BNF or YACC grammar for C? 14. Does anyone have a C compiler test suite I can use? 15. Where and how can I get copies of all these freely distributable programs?& C/C++ Questions only (System Dependencies) 1. How can I read a single character from the keyboard without waiting for the RETURN key? 2. How can I find out how many characters are available for reading, or do a non-blocking read? 3. How can I display a percentage-done indication that updates

itself in place, or show one of those ``twirling baton'' progress indicators? 4. How can I clear the screen, or print things in inverse video, or move the cursor? 5. How do I read the arrow keys? What about function keys? 6. How do I read the mouse? 7. How can I do serial (``comm'') port I/O? 8. How can I direct output to the printer? 9. How do I send escape sequences to control a terminal or other device? 10. How can I do graphics? 11. How can I check whether a file exists? 12. How can I find out the size of a file, prior to reading it in? 13. How can a file be shortened in-place without completely clearing or rewriting it? 14. How can I insert or delete a line in the middle of a file? 15. How can I recover the file name given an open file descriptor? 16. How can I delete a file? 17. What's wrong with the call "fopen("c:\newdir\file.dat", "r")"? 18. How can I increase the allowable number of simultaneously open files? 19. How can I read a directory in a C program? 20. How can I find out how much memory is available? 21. How can I allocate arrays or structures bigger than 64K? 22. What does the error message ``DGROUP exceeds 64K'' mean? 23. How can I access memory located at a certain address? 24. How can I invoke another program from within a C program? 25. How can I invoke another program and trap its output? 26. How can my program discover the complete pathname to the executable from which it was invoked? 27. How can I automatically locate a program's configuration files in the same directory as the executable? 28. How can a process change an environment variable in its caller? 29. How can I read in an object file and jump to routines in it? 30. How can I implement a delay, or time a user's response, with sub-second resolution? 31. How can I trap or ignore keyboard interrupts like control-C? 32. How can I handle floating-point exceptions gracefully? 33. How do I... Use sockets? Do networking? Write client/server applications? 34. How do I use BIOS calls? How can I write ISR's? How can I create TSR's? 35. But I can't use all these nonstandard, system-dependent functions, because my program has to be ANSI compatible!

C/C++ Questions only (Miscellaneous) 1. How can I return multiple values from a function? 2. How do I access command-line arguments? 3. How can I write data files which can be read on other machines with different data formats? 4. How can I call a function, given its name as a string? 5. How can I implement sets or arrays of bits? 6. How can I determine whether a machine's byte order is big-endian or little-endian? 7. How can I convert integers to binary or hexadecimal? 8. Can I use base-2 constants (something like 0b101010)? Is there a printf format for binary? 9. What is the most efficient way to count the number of bits which are set in a value? 10. How can I make my code more efficient? 11. Are pointers really faster than arrays? How much do function calls slow things down? 12. Is there a way to switch on strings? 13. Is there a way to have non-constant case labels (i.e. ranges or arbitrary expressions)? 14. Are the outer parentheses in return statements really optional? 15. Why don't C comments nest? Are they legal inside quoted strings? 16. Why doesn't C have nested functions? 17. How can I call FORTRAN (C++, BASIC, Pascal, Ada, LISP) functions from C? 16. Does anyone know of a program for converting Pascal or FORTRAN to C? 17. Can I use a C++ compiler to compile C code? 18. I need to compare two strings for close, but not necessarily exact, equality. 19. What is hashing? 20. How can I find the day of the week given the date? 21. Will 2000 be a leap year? 22. How do you write a program which produces its own source code as its output? 23. What is ``Duff's Device''? 24. When will the next Obfuscated C Code Contest be held? How can I get a copy of previous winning entries? 25. What was the entry keyword mentioned in K&R1? 26. Where does the name ``C'' come from, anyway? 27. How do you pronounce ``char''? 28. Where can I get extra copies of this list?

Das könnte Ihnen auch gefallen