Original Post
Inspired by Promit's post in this thread, I decided to start a thread regarding how to get in-depth knowledge on the languages / libraries you're working with.
Quote:Some of those issues I'm comfortable with and others I have no idea about (IOCP?). If I have no idea about them, then how am I supposed to even know to look them up in the first place? I'm not asking specifically about what these things are, but how to identify these types of thing regardless of what language / environment you're working in. The examples listed above are C++ specific, what kinds of things should we be looking for in the .NET framework and it's specific languages to move us beyond simply knowing the syntax and common pitfalls in them? I had hopes that I could find such useful information in tech blogs but I must be reading the wrong ones since all I encounter is common sense issues that are addressed quite often. What are the resources for identifying these areas and then learning more about them?
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?