February 18, 2002 interview

More Reaction from Microsoft

2/18/2002

I’ve heard from several of my friends at Microsoft (and yes, I do have some…), that Microsoft is not such a terrible place to work, but nobody puts it better than Mike Byron:

Huh. Ran into your Web page about Microsoft. I gotta comment on one thing I saw there:

Over the years I’ve been collecting interview questions from Microsoft. I guess I started this hobby with the intent of working there some day, but now that I have a wife and two kids, that’s pretty much out of the question.’

Baloney. I’ve been working at Microsoft for almost 5 years. I have a wife and twin 7-year-olds. I have an active church life. I work around 40-45 hours per week, and have for the whole time. I have a GREAT time at Microsoft. I’m a veteran of Silicon Valley. Been creating mostly systems software since 1977. Microsoft is no different from most Silicon Valley companies –better hours than most startups, more driven than HP. I do work an occasional 50-55 hour week close to ship time.

Now, there are people that work here with completely different stories. But I am in no wise unique. I have lots of friends in basically the same position — 40 hour weeks.”

Thanks for the quote, Mike. I’ll try not to get you into trouble…”

February 17, 2002 interview

Contacting Microsoft

2/17/2002

If you’d like to beg Bill directly for a job, his email is billg@microsoft.com. If you’d actually like an answer some day, send your questions to askbill@microsoft.com.

February 16, 2002 tools

Welcome to Genghis!

Welcome to Genghis!

Welcome to Genghis

Genghis is a set of extensions built on top of .NET and integrated with WinForms to provide application-level services in the same flavor as the Microsoft Foundation Classes. Genghis gets its name as the functional heir to Attila, a similar set of functionality built on top of ATL.

Disclaimer

Most of the Genghis classes were built by different folks and while every effort was made to keep things consistent by choosing .NET and WinForms design techniques, everyone does things their own way.

This work is the work of the individuals involved and does not represent any contribution of their respective employers. You are under no obligation to use any of Genghis at any time, but if you do, you are required to abide by the License.

Installation

You can download the latest Genghis source code from here. The Genghis archive includes this page, the source code to the Genghis class library, a series of samples showing off the various classes and a pre-built, signed version of genghis.dll in the redist folder. Notice that some of the samples use the Genghis files directly instead of using the compiled Genghis assembly. Either usage is supported by Genghis (except where it drives the WinForms Designer nuts).

Source Code Control

Genghis source code control has been moved to the Genghis CodePlex workspace. Thanks to GotDotNet and Rob MacFadyen for hosting the previous versions.

Building Genghis

Genghis is written in C#. Building Genghis requires Visual C# or Visual Studio.NET. Visual Studio.NET solution and project files (*.sln and *.csproj) are provided to build Genghis and all the samples. You should be able to load any solution file into Visual C#/Visual Studio.NET and build the project for yourself.

A NAnt build script (Genghis.build) is also provided. It is used to make the snapshot for Genghis, and is not designed for general use. You may wish to use this file to simulate the snapshot build process; please be aware that you will not be able to properly sign the release mode Genghis DLL (the private key is not provided in this distribution).

For Visual Studio.NET related build issues, please contact the Off Topic Windows mailing list. This is where the Genghis contributors have their discussions, and most of them will be familiar with Visual Studio.NET builds of Genghis. If you have NAnt related build issues, you should contact Mike Marshall (the Genghis build master) directly.

Thanks to Brad Wilson for the NAnt build scripts for folks without VS.NET.

Bug Reports

Bugs will now be kept in the Bug Tracker section of the GDN Workspace.

Please do not send Chris Sells or any of the other contributors personal email complaining about Genghis. Also please do not post Genghis bug reports to any mailing list. A much better way to contribute to the life of Genghis is to submit the fix along with the bug report.

Submission Guidelines

  • Submissions should be in the Genghis namespace (I don’t think we’ll have to worry about collisions… : ).
  • Submissions should be single-file and stand-alone as much as possible. The goal is that Genghis can be built as a DLL and used as a whole or that bits of its source can be pulled into individual projects as needed ala atl.dll vs. atlwin.h.
  • All code should be commenting using C# doc comments so that docs can be generated via Tools->Generate Source Comments.
  • All source code files should include the copyright and license notice.
  • All code shall be set to use spaces, not tabs, and a vanilla coding style.
  • When hacking on existing code, thou shall conform to the existing coding standard of the file. Many coding standards are readable, but not when mixed.

The Genghis Group

This group is made up of official Genghis contributors:

Who Does What

If you’d got something you’d like to see contribute to Genghis, please let me know (multiple people are free to collaborate on a single feature).

Feature

Owner(s)

Progress

Screen Shot(s)

Command line parser

Chris Sells

included

screenshot

Completion combo

Chris Sells

included

screenshot

Control hosting status bar

Ethan Smith

included

screenshot

Cursor changer

Shawn Wildermuth

included

screenshot

Custom check state treeview

Chris Sells

included

screenshot

Custom XP theming controls

Matthew W. Adams et. al.

included

screenshot

File Search Engine

Mike Marshall

included

screenshot

FileDocument class (doc/dirty bit management)

Chris Sells

included

screenshot

FindReplaceDialog

Ramakrishna Vavilala

included

screenshot

FolderNameDialog

Chris Sells

included

screenshot

HandleCollector for the world

Ethan Brown

included

screenshot

Header group box control

Matthew Adams

included

screenshot

Image combo

Horst Veith

included

screenshot

More robust validation ala WebForms

Michael Weinhardt

included

screenshot

Most-Recently-Used (MRU) files support

Michael Weinhardt

included

screenshot

MSN Messenger-style popup window

Mike Marshall

included

screenshot

Multiple Top-Level Windows

Chris Sells

included

screenshot

Multiple-instance detection

Chris Sells

included

Path resolution b/w UNC, local (including SUBST, etc)

Ethan Brown

included

screenshot

Retrieving mapped drives

Ethan Brown

included

screenshot

Retrieving shares

Ethan Brown

included

screenshot

Screen Saver class

Shawn Van Ness

included

screenshot (sorta : )

Scrollable Picture Box

Husein Choroomi

included

screenshot

Sorting listview (including the little triangle thingy)

Horst Veith

included

screenshot

Splash Screen class

Peter Foreman

included

screenshot

Status Bar Extender

Chris Sells

included

screenshot

WebCommandLineHelper

Chris Sells

included

screenshot

Window serializer

Paul Bartrum

included

screenshot

Wizard framework

Shawn Wildermuth

included

screenshot

HtmlLinkLabel class Jeff Key included screenshot
User-resizable panel Ethan Brown included screenshot

Gradient Progress Bar

Mike Marshall

included

screenshot

Command updating

Paul Bartrum

sample

screenshot

Cool bars/Cool menus

Chris Burrows

sample

screenshot

Docking App Bar

Dean Cleaver

sample

screenshot

A real image list control

Matt Wilson (of Attila fame!)

pending

Advanced layout managers, e.g. grid/table

Matthew Adams

pending

Command routing

Paul Bartrum

pending

Dynamically docking/undocking windows

TBD

pending

href exe-safe serialization framework

Chris Sells

pending

Managed HTML display ala a C# port of Mozilla?

TBD

pending

Menu/toolbar editing ala Office or VS.NET

Paul Bartrum, Chris Burrows

pending

Outlook-style Bar

Richard Birkby

pending

SDI, MDI and Explorer-style application wizard

TBD

pending

Tab-based MDI implementation (ala VS.NET)

TBD

pending

Tear-off menus

Matt Wilson

pending

Note: Anything marked with sample means that there’s a sample included with Genghis that shows the current implementation of a feature but that it’s not done enough to be part of the official Genghis component. Mostly the hold-up is integration with the WinForms Designer.

Documentation

The Genghis documentation is composed of the C# documentation comments as part of the automated build. Check redist\Genghis.chm for the latest.

SimplePad

SimplePad is an MFC application that should serve as a simple baseline for what Genghis should enable to be built easily. We currently need a raw WinForms implementation to help guide the Genghis development efforts. After building it, use Help->Help Topics to see the list of features that the MFC SimplePad application provides straight out of the wizard (also duplicated here):

  • MDI application
  • Multiple documents
  • Multiple views per document that are updated as the document changes
  • Dirty” bit handling
  • Title bar that shows the document with the current focus along with a dirty indicator, i.e. the asterix.
  • File New, Open, Save, Save As, Exit and MRU
  • MDI Window menu
  • Separate icons for the application and the documents
  • Association of the icons with the documents in the shell
  • Dockable, floating toolbar
  • Print, Print Preview, Print Setup
  • Edit Undo, Cut, Copy and Paste.
  • View Toolbar and Status bar
  • Help Topics and About
  • Context-sensitive help
  • Status bar that updates when menu items or toolbar items are in focus”, as well as showing NUM, SCROLL and CAPS as these keys change. Since Microsoft has shown that no one looks at the status bar much, the auto-update as items come into focus is not a feature that needs to be duplicated in WinForms/Genghis.
  • Command line launching of the application based on the application’s file extension
  • Drag-n-drop from the file explorer
  • Double-click support from the file explorer (including routing open requests to a currently open application)

The current .NET implementation of SimplePad is now available as one of the Genghis samples. Thanks to Paul Bartrum and Chris Burrows for all their hard work on this!

History

  • 03/09/04: Release v0.5:
    • New HtmlLinkLabel class from Jeff Key that knows how to launch IE and EXEs directly w/o requiring you to handle the event
    • Much prettier images in SimplePad from Chris Burrows
    • Updated MRU code from Michael Weinhardt to match .NET event signature conventions and to fix a problem when using more than one MRU components on a single menu
    • Updated FileSearchEngine code from Mike Marshall to check for whole words at beginning and end of line correctly
    • Updated validation code from Michael Weinhardt with support for validating controls at a container level, e.g. validating controls on a tab instead of on an entire form
    • New gradient progress bar from Mike Marshall
    • Updated FileDocument from Chris Sells to match text of Windows Forms Programming to include more MFC-like features like a pluggable scheme for serialization handling, registration of document extension with the shell, and adding to recent docs, i.e. Start->Documents
    • Updated HandleCollector from Ethan Brown to work with .NET 1.0 and .NET 1.1
    • Performance enhancements from Ethan Brown in the MappedDrives and SystemShares classes
    • New user-resizable panel from Ethan Brown
    • Updated WebCommandLineHelper from Andrew Duncan to fix System.IO.FileLoadException in ieexec.exe
    • Updated AniForm from Mike Marshall to support stacking ala SharpReader and fix a terminal server-related bug
    • Updated cool menu sample from Chris Burrows with additional support for abstracting commands from click even handlers
  • 4/25/03: Release v0.4:
    • Everything tested under VS.NET 2002 & 2003 (except HandleCollector, which doesn’t work under VS.NET 2003)
    • Mike Marshall’s AniForm -an MSN Messanger-style popup window
    • Chris Burrows’ Image Index Editor - a UI Type Editor for use with ImageList index selection
    • Dean Cleaver’s .NET AppBar implementation (a C# port of original code from Jeffrey Richter)
    • Mike Marshall’s File Search Engine: a text file search implementation with behavior similar to dev studio’s Find In Files”
    • Matthew W. Adams’ et. al. Themed controls
    • Chris Sells’s InitialInstanceActivator. The InitialInstanceActivator makes sure that only one instance of an application is started and when another instance is started, the first instance is passed the command line arguments passed to the initial instance
    • Chris Sells’s MultiSdiApplicationContext class for allowing multiple top-level Windows Forms
    • Peter Stephens’ changes to the CommandlineParser that fix some bugs as well as add the ability to skip the first argument
    • Matt Berther’s additions to the CompletionComboBox to fire an event when the text typed does not match any items in the dropdown
    • Peter Foreman’s splash screen implementation
    • Chris Sells’s newly improved WebCommandLineHelper class which now works with .NET 1.0 and 1.1, includes URL decoding and requires no additional permissions (although it does require a server-side HTTP handler, included as the ConfigFileHandler class that maps requests for foo.exe?bar=quux.config to the foo.exe.config file).
    • Shawn Wildermuth’s WizardSheet updates
    • Chris Sells’s Status Bar Extender for mapping status messages to Windows Forms controls
    • Andre Van Der Merwe’s CommandLineParser changes as described below:
      • Added ValueDelimiters: enum for ValueUsageAttribute which lets the user specify which (combination) of delimiters (space, : or =) will be allowed
      • Added AllowOnOff: bool in FlagUsageAttribute to specify if a +/- suffixes can be used on the flag
      • Added EnvironmentDefaults: string in ParserUsageAttribute, allows the user to specify defaults in an environment variable (ala DIRCMD).
      • Modified the Long&Short help generation functions to
        • Format/pad flag/param names correctly regardless of length
        • Show [+|-] prefix (if applicable) for flags
        • Show [sp|:|=] delimiters (as applicable) for values
  • 08/18/02: Release v0.3:
    • Screen shots for everything.
    • CVS repository available, as provided by our rmTrack sponsor, along with extensive CVS docs from Brad Wilson.
    • MRU support from Michael Weinhardt, including both in-menu and sub-menu support.
    • A much more robust set of validation components from Michael Weinhardt (Michael’s been busy : ) modeled along the lines of the ASP.NET validation components, including required, regex, range and comparison validators.
    • FileDocument component from Chris Sells for document/dirty bit handling.
    • Wizard support from Shawn Wildermuth, including changing page groups on the fly!
    • Custom state treeview from Chris Sells so that you can set and show all three checkbox states.
    • A class to expose the WinForms HandleCollector from Ethan Brown so that you can put your own custom resources into it.
    • A Screen Saver class from Shawn Van Ness.
    • A bunch of file utility classes from Ethan Brown, including retrieving mapped drives, retrieving shares and path resolution b/w UNC, local (including SUBST, etc).
    • A cursor changer class that works with the using block by Shawn Wildermuth.
    • A WebCommandLineHelper class from Chris Sells to parse command line arguments from the URL used to launch href-exes.
    • Update to the FileNameDialog from Deepak Shenoy to include newish flags.
  • 6/10/02: Release v0.2:
    • Updated ListViewSorter to be declarative. Look for Designer support ASAP.
    • Generated new genghis.key and removed it from the distribution.
    • Brad Wilson, our new Build Master, contributed a Nant build.
    • Paul Bartrum and Chris Burrows contributed a mostly-complete .NET implementation of SimplePad, along with some sample command updating and cool menus implementations.
    • Paul Bartrum also provided a window serializer and a preference class.
    • Michael Weinhardt contributed an MRU sample.
    • I contributed a custom state treeview useful for things like tri-state checkboxes.
    • Minor bug fixes.
  • 4/3/02: Released v0.1.
  • 2/28/02: Set the license.
  • 2/16/02: Posted this page.

Sponsors

rmTrack provided the initial hosting space and administration support for Genghis bug tracking and source code control.

License

Copyright © 2002-2004 The Genghis Group

Th is software is provided as-is’, without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required, as shown here:

    Portions copyright © 2002-2004 The Genghis Group (http://www.genghisgroup.com/).
     
  2. No substantial portion of the source code of this library may be redistributed without the express written permission of the copyright holders, where substantial” is defined as enough code to be recognizably from this library.

License Note

This license based on the open source zlib/libpng license. The idea was to keep the license as simple as possible to encourage use of Genghis in free and commercial applications and libraries, but to keep the source code together and to give credit to the Genghis contributors for their efforts. While this license allows shipping Genghis in binary form, if shipping a Genghis variant is the sole purpose of your product, please contact The Genghis Group for a new license.

February 16, 2002 interview

Microsoft Interview Questions

2/16/2002 The following are actual questions from actual interviews conducted by Microsoft employees on the main campus. Microsoft Consultants are sometimes allowed to have a life, so questions asked of them during interviews don't really count and aren't listed.

The questions tend to follow some basic themes:

Riddles

  • Why is a manhole cover round?
  • How many cars are there in the USA? (A popular variant is How many gas stations are there in the USA?“)
  • How many manhole covers are there in the USA?
  • You’ve got someone working for you for seven days and a gold bar to pay them. The gold bar is segmented into seven connected pieces. You must give them a piece of gold at the end of every day. If you are only allowed to make two breaks in the gold bar, how do you pay your worker?
  • One train leaves Los Angeles at 15mph heading for New York. Another train leaves from New York at 20mph heading for Los Angeles on the same track. If a bird, flying at 25mph, leaves from Los Angeles at the same time as the train and flies back and forth between the two trains until they collide, how far will the bird have traveled?
  • Imagine a disk spinning like a record player turn table. Half of the disk is black and the other is white. Assume you have an unlimited number of color sensors. How many sensors would you have to place around the disk to determine the direction the disk is spinning? Where would they be placed?
  • Imagine an analog clock set to 12 o’clock. Note that the hour and minute hands overlap. How many times each day do both the hour and minute hands overlap? How would you determine the exact times of the day that this occurs?
  • You have two jars, 50 red marbles and 50 blue marbles. A jar will be picked at random, and then a marble will be picked from the jar. Placing all of the marbles in the jars, how can you maximize the chances of a red marble being picked? What are the exact odds of getting a red marble using your scheme?
  • Pairs of primes separated by a single number are called prime pairs. Examples are 17 and 19. Prove that the number between a prime pair is always divisible by 6 (assuming both numbers in the pair are greater than 6). Now prove that there are no prime triples.’
  • There is a room with a door (closed) and three light bulbs. Outside the room there are three switches, connected to the bulbs. You may manipulate the switches as you wish, but once you open the door you can’t change them. Identify each switch with its bulb.
  • Suppose you had 8 billiard balls, and one of them was slightly heavier, but the only way to tell was by putting it on a scale against another. What’s the fewest number of times you’d have to use the scale to find the heavier ball?
  • Imagine you are standing in front of a mirror, facing it. Raise your left hand. Raise your right hand. Look at your reflection. When you raise your left hand your reflection raises what appears to be his right hand. But when you tilt your head up, your reflection does too, and does not appear to tilt his/her head down. Why is it that the mirror appears to reverse left and right, but not up and down?
  • You have 4 jars of pills. Each pill is a certain weight, except for contaminated pills contained in one jar, where each pill is weight + 1. How could you tell which jar had the contaminated pills in just one measurement?
  • The SF Chronicle has a word game where all the letters are scrambled up and you have to figure out what the word is. Imagine that a scrambled word is 5 characters long:
    1. How many possible solutions are there?
    2. What if we know which 5 letters are being used?
    3. Develop an algorithm to solve the word.
  • There are 4 women who want to cross a bridge. They all begin on the same side. You have 17 minutes to get all of them across to the other side. It is night. There is one flashlight. A maximum of two people can cross at one time. Any party who crosses, either 1 or 2 people, must have the flashlight with them. The flashlight must be walked back and forth, it cannot be thrown, etc. Each woman walks at a different speed. A pair must walk together at the rate of the slower woman’s pace.

    Woman 1: 1 minute to cross
    Woman 2: 2 minutes to cross
    Woman 3: 5 minutes to cross
    Woman 4: 10 minutes to cross

    For example if Woman 1 and Woman 4 walk across first, 10 minutes have elapsed when they get to the other side of the bridge. If Woman 4 then returns with the flashlight, a total of 20 minutes have passed and you have failed the mission. What is the order required to get all women across in 17 minutes? Now, what’s the other way?

  • If you had an infinite supply of water and a 5 quart and 3 quart pail, how would you measure exactly 4 quarts?
  • You have a bucket of jelly beans. Some are red, some are blue, and some green. With your eyes closed, pick out 2 of a like color. How many do you have to grab to be sure you have 2 of the same?
  • If you have two buckets, one with red paint and the other with blue paint, and you take one cup from the blue bucket and poor it into the red bucket. Then you take one cup from the red bucket and poor it into the blue bucket. Which bucket has the highest ratio between red and blue? Prove it mathematically.

Algorithms

  • What’s the difference between a linked list and an array?
  • Implement a linked list. Why did you pick the method you did?
  • Implement an algorithm to sort a linked list. Why did you pick the method you did? Now do it in O(n) time.
  • Describe advantages and disadvantages of the various stock sorting algorithms.
  • Implement an algorithm to reverse a linked list. Now do it without recursion.
  • Implement an algorithm to insert a node into a circular linked list without traversing it.
  • Implement an algorithm to sort an array. Why did you pick the method you did?
  • Implement an algorithm to do wild card string matching.
  • Implement strstr() (or some other string library function).
  • Reverse a string. Optimize for speed. Optimize for space.
  • Reverse the words in a sentence, i.e. My name is Chris” becomes Chris is name My.” Optimize for speed. Optimize for space.
  • Find a substring. Optimize for speed. Optimize for space.
  • Compare two strings using O(n) time with constant space.
  • Suppose you have an array of 1001 integers. The integers are in random order, but you know each of the integers is between 1 and 1000 (inclusive). In addition, each number appears only once in the array, except for one number, which occurs twice. Assume that you can access each element of the array only once. Describe an algorithm to find the repeated number. If you used auxiliary storage in your algorithm, can you find an algorithm that does not require it?
  • Count the number of set bits in a number. Now optimize for speed. Now optimize for size.
  • Multiple by 8 without using multiplication or addition. Now do the same with 7.
  • Add numbers in base n (not any of the popular ones like 10, 16, 8 or 2  — I hear that Charles Simonyi, the inventor of Hungarian Notation, favors -2 when asking this question).
  • Write routines to read and write a bounded buffer.
  • Write routines to manage a heap using an existing array.
  • Implement an algorithm to take an array and return one with only unique elements in it.
  • Implement an algorithm that takes two strings as input, and returns the intersection of the two, with each letter represented at most once. Now speed it up. Now test it.
  • Implement an algorithm to print out all files below a given root node.
  • Given that you are receiving samples from an instrument at a constant rate, and you have constant storage space, how would you design a storage algorithm that would allow me to get a representative readout of data, no matter when I looked at it? In other words, representative of the behavior of the system to date.
  • How would you find a cycle in a linked list?
  • Give me an algorithm to shuffle a deck of cards, given that the cards are stored in an array of ints.
  • The following asm block performs a common math function, what is it?
    cwd xor ax, dx
    sub ax, dx
  • Imagine this scenario:
    I/O completion ports are communictaions ports which take handles to files, sockets, or any other I/O. When a Read or Write is submitted to them, they cache the data (if necessary), and attempt to take the request to completion. Upon error or completion, they call a user-supplied function to let the users application know that that particular request has completed. They work asynchronously, and can process an unlimited number of simultaneous requests.
    Design the implementation and thread models for I/O completion ports. Remember to take into account multi-processor machines.
  • Write a function that takes in a string parameter and checks to see whether or not it is an integer, and if it is then return the integer value.
  • Write a function to print all of the permutations of a string.
  • Implement malloc.
  • Write a function to print the Fibonacci numbers.
  • Write a function to copy two strings, A and B. The last few bytes of string A overlap the first few bytes of string B.
  • How would you write qsort?
  • How would you print out the data in a binary tree, level by level, starting at the top?

Applications

  • How can computer technology be integrated in an elevator system for a hundred story office building? How do you optimize for availability? How would variation of traffic over a typical work week or floor or time of day affect this?
  • How would you implement copy-protection on a control which can be embedded in a document and duplicated readily via the Internet?
  • Define a user interface for indenting selected text in a Word document. Consider selections ranging from a single sentence up through selections of several pages. Consider selections not currently visible or only partially visible. What are the states of the new UI controls? How will the user know what the controls are for and when to use them?
  • How would you redesign an ATM?
  • Suppose we wanted to run a microwave oven from the computer. What kind of software would you write to do this?
  • What is the difference between an Ethernet Address and an IP address?
  • How would you design a coffee-machine for an automobile.
  • If you could add any feature to Microsoft Word, what would it be?
  • How would you go about building a keyboard for 1-handed users?
  • How would you build an alarm clock for deaf people?

Thinkers

  • How are M&Ms made?
  • If you had a clock with lots of moving mechanical parts, you took it apart piece by piece without keeping track of the method of how it was disassembled, then you put it back together and discovered that 3 important parts were not included; how would you go about reassembling the clock?
  • If you had to learn a new computer language, how would you go about doing it?
  • You have been assigned to design Bill Gates bathroom. Naturally, cost is not a consideration. You may not speak to Bill.
  • What was the hardest question asked of you so far today?
  • If MS told you we were willing to invest $5 million in a start up of your choice, what business would you start? Why?
  • If you could gather all of the computer manufacturers in the world together into one room and then tell them one thing that they would be compelled to do, what would it be?
  • Explain a scenario for testing a salt shaker.
  • If you are going to receive an award in 5 years, what is it for and who is the audience?
  • How would you explain how to use Microsoft Excel to your grandma?
  • Why is it that when you turn on the hot water in any hotel, for example, the hot water comes pouring out almost instantaneously?
  • Why do you want to work at Microsoft?
  • Suppose you go home, enter your house/apartment, hit the light switch, and nothing happens - no light floods the room. What exactly, in order, are the steps you would take in determining what the problem was?
  • Interviewer hands you a black pen and says nothing but This pen is red.”
February 15, 2002 interview

I Don’t Provide The Answers

I’ve have several people ask for the right answers the these questions but I just can’t bring myself to publish them. It seems just too much like cheating to me. Instead, consider this page a study guide. However, if you’d like to know how M&M’s are made, that I can help you with. : )

February 8, 2002 fun

I Like Clocks

Ron Neely sends his favorites:

February 2, 2002 fun

A Little Slice of Time

A Little Slice of Time

Chris Sells
Feb 2, 2002 8:02pm

January 22, 2002 spout

A Visit with the Visual C++ Team

I spent a fun two days up at Microsoft last week at the Visual Studio  .NET C++ Authors Summit, wherein the Microsoft team shows us how cool VS.NET is for C++ and browbeat us to write a book on the topic. Since I’m already planning to write ATL Internals, 2/e with Kirk Fertitta, I couldn’t talk them out of the XBox I so richly deserve. On top of that, they tortured me by taking me to the Microsoft store where they have XBox games for only $10! Those bastards…

If you’re a C++ programmer, VS.NET/VC7 brings a lot to the table. And according to Nick Hodapp, a PM on the VC team at Microsoft, many, many of you are C++ programmers. Microsoft quoted some 3rd party studies that say that there are about 3M C++ programmers out there (compared to 5M VB programmers and a whole lot less Java programmers). From a 3rd party survey of VC++ customers, Microsoft found that 90% (!) of them will be doing the same or more VC++ work in the future (about 22 hours/week). They also found that about 75% of VC++ users are MFC programmers (which isn’t growing) and 35% of them are ATL programmers (and is growing). Given the number of ATL7 books shipping right now or in progress (ours and a few more), and the increase in the audience, that made Kirk, my Addison-Wesley editor and me very, very happy.

Here are some other interesting tidbits from that survey for you:

  • 68% of VC++ developers build client-server apps
  • 61% build desktop apps
  • 51% build peer-to-peer apps (This number slays me. What are these guys building?!?)
  • 36% build embedded/CE apps
  • 35% build NT services

While we were there, various members of the VC++ team attempted to rock our world in terms of the new and improved features VC7. Sometimes they succeeded. For example, Pranish Kumar told us how the ATL Server version of the Nile benchmark web application was 10% faster than the hand-turned ISAPI version in 1/4th the development time, which is why the Microsoft site uses it for some of their through-put challenged” areas. Also, Terry Leeper showed us how make mini-dumps for VC++ projects that you can send to the developer’s who persist in saying but it works on my machine…” He also showed us how you can pause threads during debugging, load symbols on demand, set breakpoints in DLLs that aren’t loaded at start-up (without that annoying dialog box) and just how much the new optimization features can speed up your code (they did an amazing demo with a recompiled Microsoft codedec that nearly doubled the frame rate with no code changes).

For those of you into ANSI compliance, Microsoft showed off an early internal build of their compiler that raises VCs over all compliance rating to among the highest in the industry. They are able to compile all of the popular 3rd party template libraries, e.g. Loki, Boost, Blitz++, POOMA and a complete STL.


← Newer Entries Older Entries →