Preparing for Interviews

Interviews:

A summary of things to prepare, with links to many of the most important details.
Topics:    Click on titles to expand
    • Company sites
      • Native code compiles to machine instructions and is executed directly when hosted in an execution image.
        Managed code, i.e., C# and Java, compile to bytecode and are executed in a virtual machine hosted by an execution image. The hosting environment provides services for garbage collection, reflection, exception handling, and security.
      • Static polymorphism is implemented with templates in C++ and with generics in C# and Java.
        C++ supports both template functions and template classes, parameterized by unspecified types. Type inference occurs at compile time so C++ template functions and classes can be specialized for specific types.
        You fill find a quick summary of template syntax here: Templates.
      • Dynamic polymorphism is implemented with inheritance and virtual functions in C++, C#, and Java.
        Dynamic polymorphism uses dynamic binding with Virtual Function Pointer Tables to call methods from pointers or references based on the type of object referenced, not the type of the reference.
        There is one virtual function pointer table for each class containing virtual methods.
      • JavaScript executes in a single-threaded apartment, just like GUI applications. That means that multiple concurrent callers may request invocations of JavaScript functions by enqueuing call contexts in an execution stack, but only a single thread deques each context and invokes it until the input queue is empty. The execution process is illustrated in this diagram.
        The JavaScript environment provides an execution stack and a queue of event handlers. To begin execution of a JavaScript function, it's context is loaded into the execution stack and begins running. If the running function calls another function the called function is pushed onto the execution stack and begins running. When completed, each function context is popped from the stack, and execution continues with the previous calling context, if any.
        When the last function context is popped from the stack, any event handler context at the front of the event queue is loaded into the execution stack and begins to run.