0% found this document useful (0 votes)
20 views

C++ Interview Q & A 7

This document contains a set of interview questions for a C++ game developer position. The questions cover topics like pointer declarations, operator overloading, inheritance, arrays, and virtual functions. The notes provide guidance on common mistakes to watch out for in candidate responses.

Uploaded by

Azhag Arasu
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

C++ Interview Q & A 7

This document contains a set of interview questions for a C++ game developer position. The questions cover topics like pointer declarations, operator overloading, inheritance, arrays, and virtual functions. The notes provide guidance on common mistakes to watch out for in candidate responses.

Uploaded by

Azhag Arasu
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 3

C++ gamedev interview questions

1. This set of questions came from a prominent gaming company. As you can
see, the answers are not given (the interviews are typically conducted by
senior developers), but there’s a set of notes with common mistakes to avoid.
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 it’s 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. You’re 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 you’d 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:


5. struct A { A(){ cout << "A"; } };
6. struct B { B(){ cout << "B"; } };
7. struct C { C(){ cout << "C"; } };
8. struct D { D(){ cout << "D"; } };
9. struct E : D { E(){ cout << "E"; } };
10. struct F : A, B
11. {
12. C c;
13. D d;
14. E e;
15. 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.

16.Anything wrong with this code?


17. T *p = new T[10];
18. 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".

19.Anything wrong with this code?


20. T *p = 0;
21. 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.

22. 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 he’ll probably say he’d 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, he’s hired.
23.What’s potentially wrong with the following code?
24. long value;
25. //some stuff
26. value &= 0xFFFF;

Note: Hint to the candidate about the base platform they’re developing
for. If the person still doesn’t find anything wrong with the code, they
are not experienced with C++.

27.What does the following code do and why would anyone write
something like that?
28. void send (int *to, int * from, int count)
29. {
30. int n = (count + 7) / 8;
31. switch ( count % 8)
32. {
33. case 0: do { *to++ = *from++;
34. case 7: *to++ = *from++;
35. case 6: *to++ = *from++;
36. case 5: *to++ = *from++;
37. case 4: *to++ = *from++;
38. case 3: *to++ = *from++;
39. case 2: *to++ = *from++;
40. case 1: *to++ = *from++;
41. } while ( --n > 0 );
42. }
43. }
44.In the H file you see the following declaration:
45. class Foo {
46. void Bar( void ) const ;
47. };

Tell me all you know about the Bar() function.

You might also like