You are on page 1of 5

1. Tell the differences between Windows 95 and Windows NT?

Lack of Unicode
implementation for most of the functions of Win95. Different extended error
codes. Different number window and menu handles. Windows 95 implements
some window management features in 16 bits. Windows 95 uses 16-bit world
coordinate system and the coordinates restricted to 32K. Deletion of drawing
objects is different. Windows 95 does not implement print monitor DLLs of
Windows NT. Differences in registry. Windows 95 does not support
multiprocessor computers. NT implementation of scheduler is quite different.
Different driver models. Win95 was built with back-compatibility in mind and ill-
behaving 16-bit process may easily corrupt the system. Win95 starts from real
DOS, while WinNT uses DOS emulation when one needs a DOS. Win95’s FAT is
built over 16-bit win3.1 FAT (not FAT32!, actually, Win95’s FAT contains two
FATs).
2. What is the effective way of DIB files management? A: Memory-mapped file
is the best choice for device-independent bitmaps. MMF allows to map the file to
RAM/SWAP addresses and to let Windows handle all load/unload operations for
the file.
3. What should you be aware of if you design a program that runs
days/weeks/months/years? A: When your program should run for a long time,
you should be careful about heap allocations, because if you use new/delete
intensively in your application, the memory becomes highly fragmented with a
time. It is better to allocate all necessary memory in this case that many times
small blocks. You should be especially careful about CString class which
allocates permanent DLL
4. What are the advantages of using DLL’s? DLLs are run-time modular. DLL is
loaded when the program needs it. Used as a code sharing between
executables.
5. What are the different types of DLL’s? A: Extension, Regular and pure Win32
DLL (without MFC)
6. What are the differences between a User DLL and an MFC Extension DLL?
A: Extension DLL supports a C++ interface, i.e. can export whole C++ classes
and the client may construct objects from them. Extension DLL dynamically links
to MFC DLLs (those which name starts with MFC??.DLL) and to be synchronous
with the version it was developed for. Extension DLL is usually small (simple
extension DLL might be around 10K) Regular DLL can be loaded by any Win32
environment (e.g. VB 5) Big restriction is that regular DLL may export only C-
style functions. Regular DLLs are generally larger. When you build a regular DLL,
you may choose a static link (in this case MFC library code is copied to your
DLL) and dynamic (in this case you would need MFC DLLs to be presented on
the target machine)
7. What do you have to do when you inherit from two CObject-based classes?
A: First of all, this is a bad idea does not matter what tells you interviewer.
Secondly, if you forced to use condemned rhombus structure, read Technical
Note 16 in MSDN, which discusses why MFC does not support multiple
inheritance and what to do in case you still need it (there are a few problems with
CObject class, such as incorrect information, returned by IsKindOf() of CObject
for MI, etc.)
8. What are the additional requirements for inheritance from CWnd-based
classes? A: Again, this is the bad idea. Try to find alternative solution. Anyway, if
you have to multiply inherit from CWnd-based class, the following are additional
requirements to the above conditions (again, this is extremely bad question for
interview!!!): There must be only one CWnd-derived base class. The CWnd-
derived base class must be the first (or left-most) base class.
9. What is a "mutex"? A: Mutexes are the mechanism of process synchronization
that might be used to synchronize data across multiple processes. Mutex is a
waitable object while a critical section is not. Mutexes are significantly slower
than critical sections.
10. What’s the difference between a "mutex" and a "critical section"? Critical
section provides synchronization means for one process only, while mutexes
allow data synchronization across processes.
11. What might be wrong with the following pseudo-code:
FUNCTION F
BEGIN
INT I=2
DO
I=I+1
IF I = 4 THEN BREAK
END DO
END
A:This code is not thread safe. Suppose one thread increments I to 3 and then
returns to the beginning of DO statement. Then it increments I to 4 and now
context switch happens. Second thread increments I to 5. From this moment the
code shown will execute forever until some external force intervention. Solution is
obviously using some synchronization object to protect I from being changed by
more than one thread.
12. What is a deadlock ? A: A deadlock, very simply, is a condition in which two or
more threads wait for each other to release a shared resource before resuming
their execution. Because all threads participating in a deadlock are suspended
and cannot, therefore, release the resources they own, no thread can continue,
and the entire application (or, worse, more than one application if the resources
are shared between threads in multiple applications) appears to hang.
13. How can we create thread in MFC framework? A: Using AfxBeginThread.
14. What types of threads are supported by MFC framework? A: Working thread
and windows thread. Working thread usually does not have a user interface and
easier to use. Windows thread has an user interface and usually used to improve
responsiveness of the user input. Message Map
15. When ON_UPDATE_COMMAND_UI is called? (message may vary) A: When
a user of your application pulls down a menu, each menu item needs to know
whether it should be displayed as enabled or disabled. The target of a menu
command provides this information by implementing an
ON_UPDATE_COMMAND_UI handler.
16. What is a "hook"? A: A point in the Windows message-handling mechanism
where an application can install a subroutine to monitor messages. You need
hooks to implement your own Windows message filter.
17. What are the difference between MFC Exception macros and C++ exception
keywords? A:Actually, MFC macros may accept exception of only CException
class or class, derived from CException, where as C++ exception mechanism
accepts exception of ANY type Reusable Control Class
18. How would you set the background of an edit control to a customized
color? A: You have several choices, but the simplest one is subclassing.
Kruglinski in his "Inside Visual C++" describes pretty well this process. Generally,
you derive the class from none control class, override the messages you want
(like WM_CTLCOLOR) and then in init function like OnInitialUpdate of CDialog,
subclass the control with SubclassDlgItem().
19. What is Message Reflection? How could you accomplish the above task
using message reflection? A: See Technical Note 62 of MSDN. Usually,
message is handled in the parent class that means you have to override
message handler for each parent. Sometimes it is nice to handle a message in
the control itself, without parent invocation. Such handling mechanism is called
message reflection. Control "reflects" message to itself and then processes it.
Use ON__REFLECT macro to create a reflected message.
20. What is the command routing in MFC framework? A: CView => CDocument
=> CFrameWnd => CWinApp
21. What’s the purpose of CView class? CDocument class? What are
relationships between them? A: The CView class provides the basic
functionality for user-defined view classes. A view is attached to a document and
acts as an intermediary between the document and the user: the view renders an
image of the document on the screen or printer and interprets user input as
operations upon the document. The CDocument class provides the basic
functionality for user-defined document classes. A document represents the unit
of data that the user typically opens with the File Open command and saves with
the File Save command. Users interact with a document through the CView
object(s) associated with it. A view is a child of a frame window. The relationship
between a view class, a frame window class, and a document class is
established by a CDocTemplate object. A view can be attached to only one
document, but a document can have multiple views attached to it at once.
22. What class is responsible for document template in MDI application? A:
CMultiDocTemplate.
23. What function must be used to add document template? A:
AddDocTemplate.
24. What the main objects are created for SDI and MDI applications? A:
CWinApp - application object. For MDI application with New document
implementation CDocTemplate, CDocument, CView, CMainFrame. If your
application is SDI, your CMainFrame class is derived from class CFrameWnd. If
your application is MDI, CMainFrame is derived from class CMDIFrameWnd. For
MDI application CMDIChildWindow is also created.
25. We have a loop for 800,000. It fails on 756,322. How can we get the
information before it fails? A: You could think of several way to debug this: Set
the condition in debugger to stop when loop is passed around 756321 times.
Throw an exception within a loop (may be not the best idea since exception does
not show you the exact location of the fail. Create a log file and to put detailed
information within a loop.
26. Our Debug version works fine, but Release fails. What should be done? A:
There are four differences between debug and release builds:
o heap layout (you may have heap overwrite in release mode - this will
cause 90% of all problems),
o compilation (check conditional compilation statements, assertion functions
etc.),
o pointer support (no padding in release mode which may increase chances
of a pointer to point into sky)
o optimization

You might also like