• Advertisement
Sign in to follow this  

Strong C++ knowledge, what it means?

This topic is 4048 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi all, I am not sure if this had been asked before, but what exactly does Strong C++ knowledge means to everyone? Is there a particular set of skills or topics that one needs to know? I think there are things which even after programming for years we would not come upon. Personally I have not heard of virtual inheritance until I did a google search on C++ interview questions. Maybe I simply haven't programmed enough. Hope to hear what everyone's opinion on this. Thanks. Thuan Seah Tan

Share this post


Link to post
Share on other sites
Advertisement
Actually, I am curious about that too. What would be considered Knowing "Beginner c++" ; "Intermidiate c++" ; and "Advanced c++" and so on. Because for my OpenGL book it says I should have a good understanding of c++ before doing it. But how much exactly should I know? I mean where is the guidelines? How do I know where I am at if I don't know how far I have gone?

The reason I replied is because I am sure there are MANY people out here who want to know how much is enough and how much is too little?

At list of "Need to knows" and a list of "You should knows" would be nice to have and to look at for reference and guide.

Share this post


Link to post
Share on other sites
Strong C++ will involve knowing the language complete, the standard library, and C++'s eccentricities. Strong programming ability will be knowing how to apply common design patterns in C++, and using standard library features to do it well. I'm not going to list every feature of C++, but if you've got them all down, you're only 50% of the way there. You need to know how to use them, and when to use them.

Hope that helps.

Share this post


Link to post
Share on other sites
Quote:
Original post by _goat
Strong C++ will involve knowing the language complete, the standard library, and C++'s eccentricities.

Hope that helps.


So I suppose STL knowledge is a must nowadays. As to knowing the language complete and C++ eccentricities, does that mean you have to memorize every single bits of the language by heart? Also, does that include knowing how certain things are implemented in compiler (e.g. the vtable of multi inheritance)? I suppose eccentricities refers to know when certain things will compile and work and when certain thing will compile and crash? For example I have seen a question asking what happen if you delete a pointer than is initialized to null.

For now, I am reading books like Effective C++ series, and thinking in C++. While I am certain these books do a good job in covering the language, but I doubt weird and extreme cases.

Share this post


Link to post
Share on other sites
Knowing the STL is a must (and make you programming live easier).
Learning to be a good programmer is slow process.

I don't like labels (beginner, intermidiate or advanced). I've been programming over 15 years (in many languages), am i intermidiate or advanced programmer?
These labels don't say anything. Im still learning every day, there are always things that can be done, nicer or smatter. (That makes programming fun).

"Strong C++ knowledge" just means: Knowing the language, knowing what to use in which situation, can solve problems and make programs that solve the problems.
And no, you don't have to know everything by heart. (Just where you can find things, books,reference card, internet etc).

Just make as many programs as you can and read as much as you can (on different topics).

www.nextdawn.nl

Share this post


Link to post
Share on other sites
Thanks boldyman, your reply made me feel much better now. I have always program with a C++ reference book within reach, and have no idea what would I do without one. I am just hoping to get an employer perspective on what they think is expert. I am pretty sure I am nowhere near Scott Meyers but I hope that doesn't make me a weak programmer. All I can say is I am always learning something new from books and google.


Thuan Seah Tan

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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!


Thuan Seah Tan

Share this post


Link to post
Share on other sites
I believe that being a strong c++ programmer goes beyond the list of technologies you know, and into the more intangible sense of understanding and problem solving that is required of difficult programming. I could blurt out a list of c++ features I know, and technologies I have mastered, and tools I can use, but that gives very little insight on how good of a c++ programmer I am. Expertise level can not be objectivly categorized (rightly), because the things that determine it are subjective skillsets and code, "intuitions".

Without even considering what things you understand, look at yourself honestly and you will know what level you are at.

Share this post


Link to post
Share on other sites
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!


Thuan Seah Tan


On the other hand, companies are kind of liers when it comes to job ads. They always want the Perfect Guy That Doesn't Exist. They will ask you to be young, passionate, with years of experience (quite difficult if you are young). You'll also have to know everything about everything, ranging from a programming language (generally C++), OO design practices, OO methodologies, be very familiar with the hardware, and so on.

But they also know that a guy who have all these qualities is going to ask too much for them - and they won't be able to afford it, unless he's applying for a manager role (in which case, the hw and sw knowledge are less important).

So in the end, what they want is a passionate, hard working guy with a solid brain. If you feel you have a good knowledge of C++ (comfortable with the language?), then you can apply to jobs which requires "Strong C++ Knowledge". If they really need a skilled person, you'll fail at the interview - but at least, you tried.

The reason why they do that is that they don't want to waste their time with people who consider they're not good enough - because you can be pretty sure that at least 50% of these guys will NOT be good enough.

So go ahead and ask for an interview (and maybe you'll find that these guys have a limited knowledge of C++, and that what they consider to be strong knowledge is below your own standards).

Regards,

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement