Strong C++ knowledge, what it means?

Started by
23 comments, last by tts1980 17 years ago
The ICT-sector doesn't exclude you on not being programmer with advanced C++ skills (or what every language). They choose people by their years of experience (believe me, this is your strongest foothold). With only five years of experience you already are considered as a valuable programmer in the ICT-sector and at this point you are usually in the position to discuss your salary :D.
If you supply a portfolio which has some demo's showing something specific, you are usually set for a position (unless they find someone with more years of experience, which is simply bad luck for you).

This all off-topic...

It 'think' that you have Strong C++ knowledge if you know how to solve every problem with C++ with or without using the available API's and other libraries. Knowing STL very well is just a recommandation and not a requirement, but it saves you alot of time.

Labels are usually used to specify how much time and effort it will take to fully comprehend example code.
Beginner level example code is for the 'average' programmer a see and understand level.
Intermidiate level you need to look over the code several times understand whats going on.
Advanced level is more or less code which can be understand fully by debugging the code step by step.

Knowing how to use alternative libraries cannot be really used as an argument to say if you have 'advanced' language-skills. This is because libraries continue to be updated and ofcourse new libraries emerge every year.
Knowing where and how to begin to familiarize yourself with a strange library is a skill which belongs in this section of determine your level of skills (you can learn a monkey tricks, but monkey will only that, nothing more).

It is all very fuzzy, so don't get demoralized too soon, nobody knows everything there is, we are all still students.

Regards,

Xeile
Advertisement
Thanks for the reply, hope to see more people's view on this.

Personally, I have applied for a programmer job at a local game company and was granted an interview somehow. I am pretty sure heaps of people with much more experiences in C++ have applied for the post. I have just graduated from college recently so I am thinking how on earth am I suppose to pit against those C++ gurus. To say I can learn and catch up to them within the next couple of days would be insulting and impossible.

In any case, I guess this will be a good learning opportunity for me to learn in what area I am lacking in. Ya, we are all still students. ;-)
Quote:Original post by tts1980
Thanks for the reply, hope to see more people's view on this.

Personally, I have applied for a programmer job at a local game company and was granted an interview somehow. I am pretty sure heaps of people with much more experiences in C++ have applied for the post. I have just graduated from college recently so I am thinking how on earth am I suppose to pit against those C++ gurus. To say I can learn and catch up to them within the next couple of days would be insulting and impossible.

In any case, I guess this will be a good learning opportunity for me to learn in what area I am lacking in. Ya, we are all still students. ;-)


First off, grats with getting a interview (its a chance at the very least :D).

Nowadays communication skills seem to be very valuable to companies. Not so surprizing since you only work in groups nowadays.
So if you can show-off some 'good' communication skills (which an interview gives you a perfect opportunity for), you might be even valued above those 'gurus'. Especially those 'old-timers' which prefere solo-working, will get a hard time getting another job.

Don't worry about getting along, it won't be that hard if you enjoy doing the job.

Regards,

Xeile
Quote:Original post by tts1980
Thanks for the reply, hope to see more people's view on this.

Personally, I have applied for a programmer job at a local game company and was granted an interview somehow. I am pretty sure heaps of people with much more experiences in C++ have applied for the post. I have just graduated from college recently so I am thinking how on earth am I suppose to pit against those C++ gurus. To say I can learn and catch up to them within the next couple of days would be insulting and impossible.

In any case, I guess this will be a good learning opportunity for me to learn in what area I am lacking in. Ya, we are all still students. ;-)


I recently scored a C++ game programming job (as well as a 25% salary increase, woohoo!), and the only advice i can give you is dont stress too much about the actual knowledge (but dont skimp on revision). Don't pretend to know more than you actually do, show a keen interest and that you are a quick learner. Remember, job interviews aren't just about how much you know, its about your personality too: They want someone who they think they can work well alongside for the next X years.
Quote:Original post by tts1980
Geez.. Promit, I am not sure should I feel happy or demoralize about trying to get into game industry. On one hand, I am happy that someone is willing to give examples of what is expected, on the other, I couldn't barely answer any of the questions.

Guess it's going to be a long night for me here googling to find out!
I have plenty of resources on that stuff, and I can clarify anything you might have questions about. Just ask -- probably in a separate thread if it's a bigger discussion.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Quote:Original post by Promit
Quote:Original post by tts1980
Geez.. Promit, I am not sure should I feel happy or demoralize about trying to get into game industry. On one hand, I am happy that someone is willing to give examples of what is expected, on the other, I couldn't barely answer any of the questions.

Guess it's going to be a long night for me here googling to find out!
I have plenty of resources on that stuff, and I can clarify anything you might have questions about. Just ask -- probably in a separate thread if it's a bigger discussion.


Okay then... I'm asking. Can you provide some resources, Promit? Thanks!
Quote:Original post by SanityAssassin
Quote:Original post by Promit
Quote:Original post by tts1980
Geez.. Promit, I am not sure should I feel happy or demoralize about trying to get into game industry. On one hand, I am happy that someone is willing to give examples of what is expected, on the other, I couldn't barely answer any of the questions.

Guess it's going to be a long night for me here googling to find out!
I have plenty of resources on that stuff, and I can clarify anything you might have questions about. Just ask -- probably in a separate thread if it's a bigger discussion.


Okay then... I'm asking. Can you provide some resources, Promit? Thanks!


I'm asking too!
I am re-reading C++ for Game Programmer for a start. I am keen on resources (ideally a book) that goes into how C++ features are implemented. Oh.. tips and tricks along the line of overriding of new and delete. Guess the list can go on and on. ;-)

Quote:Original post by raidtab

I recently scored a C++ game programming job (as well as a 25% salary increase, woohoo!), and the only advice i can give you is dont stress too much about the actual knowledge (but dont skimp on revision). Don't pretend to know more than you actually do, show a keen interest and that you are a quick learner. Remember, job interviews aren't just about how much you know, its about your personality too: They want someone who they think they can work well alongside for the next X years.


Congrats! Revision, that's exactly what I am doing now! It feels like an exam actually and I am digging out all my beginner C++ books, just to make sure I know most stuff.
Quote:Original post by Promit
When it comes to game development, there's a lot more architectural knowledge expected. Examples:

Do you know how virtual functions are implemented by the compiler?
Do you know how templates are implemented?
Are you familiar with the implementation and pitfalls of malloc, free, and the standard new and delete operators?
Do you know how to override and overload new and delete? How are strings stored in the std::string class?
What are the common implementations and performance characterisics of the popular STL classes and functions?
How do your stack and heap lay out in memory? (And on a related note, how to buffer overflows work?)
What are the benefits and pitfalls of static and shared libraries? (Related: allocation/freeing rules when working with shared libraries? What causes loader locks?)
How do you deal with basic thread safety problems?
Can you use SSE and other extensions like atomic compare-and-swap? How do you go about determining if those extensions are available?
What affects the compiler's ability to inline a function?
How could you write a profiler into your code?
What are memory mapped files and why are they useful?
What is IOCP and why is it useful?
Can you throw and catch exceptions? What about SEH? How is exception handling implemented? (There's so much to be asked here...)
Are you comfortable with RAII?

Just an incomplete list there. Some of those are more important than others, not all are strictly C++, and a couple are platform dependent.


Based on my interview experiences, from this list I think the most important items are:

Do you know how virtual functions are implemented by the compiler?
(Try to know as much as you can about polymorphism, use of the virtual keyword, and, at the very least, have an understanding of multiple inheritance and the diamond problem)

Do you know how templates are implemented?
(Also, where are they used, why are they used, etc.)

What are the common implementations and performance characterisics of the popular STL classes and functions?
(Don't worry too much about the STL, focus on common data structures and algorithms. Be able to optimize for speed and memory usage)

How do you deal with basic thread safety problems?
(If you put that you understand multithreading on your resume, prepare to answer questions about different types of synchronization objects - mutex, critical sections, etc., when you'll need them, and be able to explain what happens to a simple piece of code, like incrementing a variable, with and without a sync object like a mutex)

What affects the compiler's ability to inline a function?
(Focus less on memorizing the compiler's criteria for inlining, focus more on what does inlining a function actually do? When would you want to inline a function? When wouldn't you want to inline a function?)

How could you write a profiler into your code?


In general, don't focus too much on low-level compiler specific stuff. Try to focus more on C++ itself (don't worry too much about the STL, I've yet to be asked an STL-specific question), your ability to write code, and your problem solving abilities.

Some other stuff you might be asked:
* Implement a simple function (e.g. fibonacci sequence) both recursively and iteratively.
* Implement a function that checks if 2 rectangles intersect and if they do compute the area of the intersection.
* Implement a queue, stack, linked list, etc. and optimize for speed and/or memory usage.
* Given a certain class hierarchy for game objects, how would you place a new type of game object (monster, tree, weapon, whatever...) into it.
* Multiple by a certain number without using the multiply operator.
* Explain the different uses of the static keyword.
* Explain the different uses of the const keyword.
* Explain the benefits of using a linked list vs. an array and vice-vera.

Also, as raidtab said, don't stress yourself out.

This topic is closed to new replies.

Advertisement