-
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).
-
-
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.
-
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
-
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.
-
What are the different types of
DLL’s? A: Extension, Regular and
pure Win32 DLL (without MFC)
-
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)
-
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.)
-
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.
-
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.
-
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.
-
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.
-
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.
-
How can we create thread in MFC
framework? A: Using
AfxBeginThread.
-
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
-
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.
-
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.
-
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
-
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().
-
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_<MESSAGE_NAME>_REFLECT
macro to create a reflected message.
-
What is the command routing in
MFC framework? A: CView =>
CDocument => CFrameWnd => CWinApp
-
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.
-
What class is responsible for
document template in MDI
application? A:
CMultiDocTemplate.
-
What function must be used to add
document template? A:
AddDocTemplate.
-
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.
-
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.
-
Our Debug version works fine, but
Release fails. What should be done?
A: There are four differences
between debug and release builds:
-
heap layout (you may have heap
overwrite in release mode - this
will cause 90% of all problems),
-
compilation (check conditional
compilation statements,
assertion functions etc.),
-
pointer support (no padding in
release mode which may increase
chances of a pointer to point
into sky)
-
optimization.
Check the project settings.
|
|
|