Kernel and OS theory interview Questions

This question just popped into mind and has little relevance to my life,
but I’m still
curious (perhaps it could yield new avenues for me and others to study).

If you were looking to hire a developer and were a party to the
interview process,
what questions would you ask the interviewee regarding windows driver
development
along with OS theory questions?

Of course the basics regarding paged vs non-paged pools, IRQL’s, and
context. But what
else, and specifically…

I could careless about the type of driver (ndis, filesystem, wdm,
NT…). What are some of the
technical questions you guys have asked or been asked?

Perhaps something along these lines would make a great article for Peter
to Pontificate about.

Matt

P.S. - I really would like to hear something else than C vs C++.

If you don’t care about the driver type then I find these questions
worthless. Having interviewed a large number of folks for employers and
clients over the years, when someone asks me for this type of help I refuse,
since it has never helped, but commonly hurt.

A number of years ago Ed Dekker and I were interviewing candidates for job
where NDIS experience was needed. The HR department of the firm, decided to
screen for lots of NDIS as a minimal criterion, only problem was all the
candidates were NDIS 4 experts, and we needed NDIS 5, because the systems
were 8 way servers. I later learned some good people with a lot of MP
performance but lite on NDIS applied and were not even shown to us.

Now lets take your specific questions:

Paged versus Non-paged

I see a lot lately on who care about paged any more since memory is
cheap. Personally I do not subscribe to this concept, but saying someone is
a good or bad driver developer based on this is probably a bad idea.

IRQL

I took classes from OSR, I have taught classes based on the Dekker
and Newcomer book, and have worked with people who were taught by Oney and
Azuis. Guess what, all have subtle differences on what does IRQL mean.
Yes, you can ask questions like what can be done at PASSIVE, APC, DISPATCH
and DIRQL but you are quickly into driver specifics or otherwise this is a
question of the level of “Is water wet?”

Context

The importance of this is highly dependant on the driver class.
Folks who primarily deal with mini-ports seem a lot less interested in
context than those of us who deal with file systems. Is context relavent in
UMDF (I really don’t know).

For at least 5 years a number of senior driver types who inhabit this forum
and other places have chatted about guidelines for determining a good driver
wirter when we got together at things like WinHEC and DevCon. We limited
ourselves to WDM and even then could not find any thing that either was not
so simple that 30 days of study could pass it, or so specific and
controversial that no one would accept it.

This questions has the same problems as the “what makes a good programmer”
efforts of 30 to 40 years ago. We don’t try to do that now. Or the great
do you know object oriented programming stuff of 20 years ago, where “if you
programed commercially or college in C++ you obviously knew OO, otherwise
not” yea right!

I spend a lot of my consulting time with new customers explaining that one
size does not fit all, that there is no thing as a “Windows device driver
expert”, but instead there are mutiple types of drivers, and consultants and
developers are experts in some subset. Trying to come up with a general
set of questions will harm the industry not help it. We will see a
resugance of the situation of a few years ago, where off shore firms
advertised “We have a 1000 man years of Windows driver development
experience”, which translated into “we have 2000 developers who took a class
on windows drivers 6 months ago” Firms like this, and cheapo contractors
will now memorize a set of “general questions” and come off as experts.


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Website: http://www.windrvr.com
Blog: http://msmvps.com/blogs/WinDrvr
Remove StopSpam to reply

Matt:

This is a job that I get asked to do a lot, and really, really hate.
However, my advice is always to be sure to ask about KD knowledge, which
is easier these days, as it really only means WinDbg. While one has to
be careful to not get unreasonably specific, if a candidate doesn’t know
basic information about WinDbg, then I think it only reasonable to
assume that he or she doesn’t really know much, as a working assumption.
Everything else, especially these days with books like “Windows
Internals” can be faked to a reasonable degree.

Good luck,

mm

Matt wrote:

This question just popped into mind and has little relevance to my life,
but I’m still
curious (perhaps it could yield new avenues for me and others to study).

If you were looking to hire a developer and were a party to the
interview process,
what questions would you ask the interviewee regarding windows driver
development
along with OS theory questions?

Of course the basics regarding paged vs non-paged pools, IRQL’s, and
context. But what
else, and specifically…

I could careless about the type of driver (ndis, filesystem, wdm,
NT…). What are some of the
technical questions you guys have asked or been asked?

Perhaps something along these lines would make a great article for Peter
to Pontificate about.

Matt

P.S. - I really would like to hear something else than C vs C++.

Don makes a number of good points here, especially about how HR screens
out who you want. I have found them to dump good people for far sillier
reasons like “people skills.” I would also concur that general OS
questions are worthless.

mm

Don Burn wrote:

If you don’t care about the driver type then I find these questions
worthless. Having interviewed a large number of folks for employers and
clients over the years, when someone asks me for this type of help I refuse,
since it has never helped, but commonly hurt.

A number of years ago Ed Dekker and I were interviewing candidates for job
where NDIS experience was needed. The HR department of the firm, decided to
screen for lots of NDIS as a minimal criterion, only problem was all the
candidates were NDIS 4 experts, and we needed NDIS 5, because the systems
were 8 way servers. I later learned some good people with a lot of MP
performance but lite on NDIS applied and were not even shown to us.

Now lets take your specific questions:

Paged versus Non-paged

I see a lot lately on who care about paged any more since memory is
cheap. Personally I do not subscribe to this concept, but saying someone is
a good or bad driver developer based on this is probably a bad idea.

IRQL

I took classes from OSR, I have taught classes based on the Dekker
and Newcomer book, and have worked with people who were taught by Oney and
Azuis. Guess what, all have subtle differences on what does IRQL mean.
Yes, you can ask questions like what can be done at PASSIVE, APC, DISPATCH
and DIRQL but you are quickly into driver specifics or otherwise this is a
question of the level of “Is water wet?”

Context

The importance of this is highly dependant on the driver class.
Folks who primarily deal with mini-ports seem a lot less interested in
context than those of us who deal with file systems. Is context relavent in
UMDF (I really don’t know).

For at least 5 years a number of senior driver types who inhabit this forum
and other places have chatted about guidelines for determining a good driver
wirter when we got together at things like WinHEC and DevCon. We limited
ourselves to WDM and even then could not find any thing that either was not
so simple that 30 days of study could pass it, or so specific and
controversial that no one would accept it.

This questions has the same problems as the “what makes a good programmer”
efforts of 30 to 40 years ago. We don’t try to do that now. Or the great
do you know object oriented programming stuff of 20 years ago, where “if you
programed commercially or college in C++ you obviously knew OO, otherwise
not” yea right!

I spend a lot of my consulting time with new customers explaining that one
size does not fit all, that there is no thing as a “Windows device driver
expert”, but instead there are mutiple types of drivers, and consultants and
developers are experts in some subset. Trying to come up with a general
set of questions will harm the industry not help it. We will see a
resugance of the situation of a few years ago, where off shore firms
advertised “We have a 1000 man years of Windows driver development
experience”, which translated into “we have 2000 developers who took a class
on windows drivers 6 months ago” Firms like this, and cheapo contractors
will now memorize a set of “general questions” and come off as experts.

As you said leaving aside the obious ones (IRPs, IRQL, …) I would suggest
and depending of the seniority:

Is Windows is a real-time os? (if not how to design a RT extension?)
Locking, deadlocking issues (difference with single/smp/HT systems)
What is a windows subsystem? (Native vs Win32 ? why does it exist?) can lead
to discussion with Virtual machines.
Recursion removal strategy (why is it bad in drivers)
memory access optimization (tiling…)
C compilation steps.
Security (token, SID…)
Cache Manager/VM interactions.
Boot process description, Exec load process (what is the c-runtime,
pagefault handling),
Shared library (imports, rva…)
Give your debugging strategies/support.(Bsod debug howto)
Give 3 examples of filter drivers.
Give n links to internet/blog related sites.
Describe advanced Data structure implementation (B-tree, …), give O()
properties.

Should quickly give a grasp of the field by the candidate I guess, I have
plenty more.

Jerome.

“Matt” wrote in message news:xxxxx@ntdev…
> This question just popped into mind and has little relevance to my life,
> but I’m still
> curious (perhaps it could yield new avenues for me and others to study).
> -----------------------------
>
> If you were looking to hire a developer and were a party to the
> interview process,
> what questions would you ask the interviewee regarding windows driver
> development
> along with OS theory questions?
>
> Of course the basics regarding paged vs non-paged pools, IRQL’s, and
> context. But what
> else, and specifically…
>
> I could careless about the type of driver (ndis, filesystem, wdm,
> NT…). What are some of the
> technical questions you guys have asked or been asked?
>
> Perhaps something along these lines would make a great article for Peter
> to Pontificate about.
>
> Matt
>
> P.S. - I really would like to hear something else than C vs C++.
>
>
>
>
>

Don Burn wrote:

If you don’t care about the driver type then I find these questions
worthless. Having interviewed a large number of folks for employers and
clients over the years, when someone asks me for this type of help I refuse,
since it has never helped, but commonly hurt.

Sure I can concede that… I defiantly consider you a pro Don. When I
said I don’t care about the driver
type, I meant more to pick a category. In your below example, if you
were looking for an NDIS 5 candidate
vs an NDIS 4 one, what is the first thing you would ask them?

A number of years ago Ed Dekker and I were interviewing candidates for job
where NDIS experience was needed. The HR department of the firm, decided to
screen for lots of NDIS as a minimal criterion, only problem was all the
candidates were NDIS 4 experts, and we needed NDIS 5, because the systems
were 8 way servers. I later learned some good people with a lot of MP
performance but lite on NDIS applied and were not even shown to us.

Now lets take your specific questions:

Was kinda meaning to exclude these things for the reasons you mentioned,
perhaps I worded that part wrong.

Paged versus Non-paged

I see a lot lately on who care about paged any more since memory is
cheap. Personally I do not subscribe to this concept, but saying someone is
a good or bad driver developer based on this is probably a bad idea.

IRQL

I took classes from OSR, I have taught classes based on the Dekker
and Newcomer book, and have worked with people who were taught by Oney and
Azuis. Guess what, all have subtle differences on what does IRQL mean.
Yes, you can ask questions like what can be done at PASSIVE, APC, DISPATCH
and DIRQL but you are quickly into driver specifics or otherwise this is a
question of the level of “Is water wet?”

Context

The importance of this is highly dependant on the driver class.
Folks who primarily deal with mini-ports seem a lot less interested in
context than those of us who deal with file systems. Is context relavent in
UMDF (I really don’t know).

For at least 5 years a number of senior driver types who inhabit this forum
and other places have chatted about guidelines for determining a good driver
wirter when we got together at things like WinHEC and DevCon. We limited
ourselves to WDM and even then could not find any thing that either was not
so simple that 30 days of study could pass it, or so specific and
controversial that no one would accept it.

And a discussion on WDM coding standards would be great. Reading the
various arguments between you
and other guru’s on what is essential to know about this type of driver
would be great reading for the rest of us.

This questions has the same problems as the “what makes a good programmer”
efforts of 30 to 40 years ago. We don’t try to do that now. Or the great
do you know object oriented programming stuff of 20 years ago, where “if you
programed commercially or college in C++ you obviously knew OO, otherwise
not” yea right!

I spend a lot of my consulting time with new customers explaining that one
size does not fit all, that there is no thing as a “Windows device driver
expert”, but instead there are mutiple types of drivers, and consultants and
developers are experts in some subset. Trying to come up with a general
set of questions will harm the industry not help it. We will see a
resugance of the situation of a few years ago, where off shore firms
advertised “We have a 1000 man years of Windows driver development
experience”, which translated into “we have 2000 developers who took a class
on windows drivers 6 months ago” Firms like this, and cheapo contractors
will now memorize a set of “general questions” and come off as experts.

I apologize for such a broad question that could spark a great deal of
debate. I meant it more as a community
type question. If you were hiring someone to write ANY kernel code, what
would you ask first.

If you were hiring someone to write NDIS code, what would your first
questions be?

Your first file system questions would be?

Your first WDM questions would be about what?

a.) power management
b.) bus protocols
c.) ???

KMDF, what are the first few questions you would ask about that
architecture…

I know this is broad, and is a never ending question, just looking for a
little that could point me in
new areas to study.

In a sense, I’m not exactly looking for Cliff Notes here with answers,
just important points to
study myself regarding different kernel technologies.

Matt

Martin O’Brien wrote:

Thanks for your response. I understand it’s a crappy question, but this
is an excellent point that I didn’t think
of off the bat when composing the question.

If someone is to work with windows drivers, they better understand how
to use windbg…

Thanks,

Matt

Matt:

This is a job that I get asked to do a lot, and really, really hate.
However, my advice is always to be sure to ask about KD knowledge,
which is easier these days, as it really only means WinDbg. While one
has to be careful to not get unreasonably specific, if a candidate
doesn’t know basic information about WinDbg, then I think it only
reasonable to assume that he or she doesn’t really know much, as a
working assumption. Everything else, especially these days with books
like “Windows Internals” can be faked to a reasonable degree.

Good luck,

mm

Matt wrote:
> This question just popped into mind and has little relevance to my
> life, but I’m still
> curious (perhaps it could yield new avenues for me and others to study).
> -----------------------------
>
> If you were looking to hire a developer and were a party to the
> interview process,
> what questions would you ask the interviewee regarding windows driver
> development
> along with OS theory questions?
>
> Of course the basics regarding paged vs non-paged pools, IRQL’s, and
> context. But what
> else, and specifically…
>
> I could careless about the type of driver (ndis, filesystem, wdm,
> NT…). What are some of the
> technical questions you guys have asked or been asked?
>
> Perhaps something along these lines would make a great article for
> Peter to Pontificate about.
>
> Matt
>
> P.S. - I really would like to hear something else than C vs C++.
>
>
>
>
>


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Jerome,

As I stated in my earlier post, limiting things to non-driver
specific means problems, see comments inline:

“jchristatos” wrote in message news:xxxxx@ntdev…
> As you said leaving aside the obious ones (IRPs, IRQL, …) I would
> suggest
> and depending of the seniority:
>
> Is Windows is a real-time os? (if not how to design a RT extension?)

How real time are you talking? Yes it is not “hard real time” but depending
on the applicaiton it can be good enough to control for instance a refinery
(I have consulted for a firm that has done this). Design a real-time
extension sorry you need to know al lot of things that are inappropriate for
a say a storage mini-port expert.

> Locking, deadlocking issues (difference with single/smp/HT systems)

Again storage mini-ports for the most part do not need this, there are other
cases.

> What is a windows subsystem? (Native vs Win32 ? why does it exist?) can
> lead
> to discussion with Virtual machines.

What the h**k do virtual machine have to do with driver writing, sorry I
know at least one person who closeted himself and would not have a clue
about VM but was an expert in his category of drivers. Windows subsystems,
again if you are a mini-port or UMDF you probably don’t care, so how can we
question this.

> Recursion removal strategy (why is it bad in drivers)

Sorry, a UMDF driver does not care, nor a user mode printer driver. So you
can’t go there unless you say you are driver specific.

> memory access optimization (tiling…)

Again, UMDF or mini-ports and some other things do not care it is hidden
from them.

> C compilation steps.

Are you talking about BUILD or compiler / linker internals here? If BUILD
maybe but be careful, since this has changed from rev to rev, and things
like PreFast and SDV are not relavent to all drivers.

> Security (token, SID…)

Why, sorry this is specific to driver which can get at IRP’s

> Cache Manager/VM interactions.

I did not know that writing file systems which is where this is relavent was
required for all driver types.

> Boot process description, Exec load process (what is the c-runtime,
> pagefault handling),

Again, you can be a good driver writer and probably not care.

> Shared library (imports, rva…)

Are we talking compilers/linker or driver here? Most driver writers have no
reason to know this?

> Give your debugging strategies/support.(Bsod debug howto)

This is highly dependant on driver type, again user mode has differing
concens than kernel mode, which has differnces in the classes of driver.

> Give 3 examples of filter drivers.

Again, you are thinking WDM there are a heck of a lot of people who don’t
need to deal with filters.

> Give n links to internet/blog related sites.

Good one, I do ask this, unfortunately I use to see if people think certain
sites are good, so I can appologize and say I have a meeting that will make
the interview short (to get rid of the loser). You may have a different
view of those sites.

> Describe advanced Data structure implementation (B-tree, …), give O()
> properties.

THE LAST TIME A POTENTIAL CLIENT ASKED ME THIS CRAP, I POINTED OUT THAT WAS
WHAT REFERENCE BOOKS WERE FOR, AND WALKED OUT. I did consult for them in
the end, but upped my rates because they wasted my time with stupidity like
above.

>
> Should quickly give a grasp of the field by the candidate I guess, I have
> plenty more.
>

Sorry, what you are saying is these are relavent to your limited view of
device drivers, the world is a lot broaded. This discussion did lead to
one good question “What are some simple things that all driver writers no
matter what their specialty should know?” If they try to answer the
question with anything other than a description why this is impossible, then
you can probably say they are not an expert.


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Website: http://www.windrvr.com
Blog: http://msmvps.com/blogs/WinDrvr
Remove StopSpam to reply

jchristatos wrote:

Thank you, please don’t stop. Care to pick a specific type of driver?
What type of driver do you work with
most? If you had to hire someone to work with you directly, and you were
in the interview room, what
are the first questions you would ask?

What about self-taught vs university-feed? What are your views there?

Matt

As you said leaving aside the obious ones (IRPs, IRQL, …) I would suggest
and depending of the seniority:

Is Windows is a real-time os? (if not how to design a RT extension?)
Locking, deadlocking issues (difference with single/smp/HT systems)
What is a windows subsystem? (Native vs Win32 ? why does it exist?) can lead
to discussion with Virtual machines.
Recursion removal strategy (why is it bad in drivers)
memory access optimization (tiling…)
C compilation steps.
Security (token, SID…)
Cache Manager/VM interactions.
Boot process description, Exec load process (what is the c-runtime,
pagefault handling),
Shared library (imports, rva…)
Give your debugging strategies/support.(Bsod debug howto)
Give 3 examples of filter drivers.
Give n links to internet/blog related sites.
Describe advanced Data structure implementation (B-tree, …), give O()
properties.

Should quickly give a grasp of the field by the candidate I guess, I have
plenty more.

Jerome.

“Matt” wrote in message news:xxxxx@ntdev…
>
>> This question just popped into mind and has little relevance to my life,
>> but I’m still
>> curious (perhaps it could yield new avenues for me and others to study).
>> -----------------------------
>>
>> If you were looking to hire a developer and were a party to the
>> interview process,
>> what questions would you ask the interviewee regarding windows driver
>> development
>> along with OS theory questions?
>>
>> Of course the basics regarding paged vs non-paged pools, IRQL’s, and
>> context. But what
>> else, and specifically…
>>
>> I could careless about the type of driver (ndis, filesystem, wdm,
>> NT…). What are some of the
>> technical questions you guys have asked or been asked?
>>
>> Perhaps something along these lines would make a great article for Peter
>> to Pontificate about.
>>
>> Matt
>>
>> P.S. - I really would like to hear something else than C vs C++.
>>
>>
>>
>>
>>
>>
>
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
>
>

Glad to help out, Matt. I feel for you, because if you’re developing
this for HR or something like that, this, in my experience, is basically
a no win situation, and all you can do is take your best shot.
Fundamentally, you just can’t ascertain what someone knows about a
subject that takes years to learn in an interview, and if you try to do
so, you will end up “weeding out” some of the better candidates. That
being said, you’ve obviously got to do something. The reason I hate
asking about WinDbg least is that it is entry level knowledge, and it
amazes me how many people who maintain that they know what they are
talking about don’t know about ‘.sympath,’ for example. That’s the
level of stuff I ask about, unless they just ace it all, at which point
I’ll usually work my way up to things like context. Also, just to state
the obvious, the answers to questions MUST be correct and unambiguous,
and anything in written form is, in my opinion, a guaranteed disaster.
Back when I was a young consultant, I would say without any question
that I never took a ‘test’ that didn’t have at least a few questions
that were unclear, and at least a few answers that were totally
incorrect, and whether I was correct or not in this statement, which
sometimes I must not have been, made no difference, because it was
impossible to get anyone to listen, even in cases where I got everything
but a question or two correct, and even if they did, I seriously doubt I
as doing myself any favors, because no one likes to be embarrassed.

Good luck,

mm

Matt wrote:

Martin O’Brien wrote:

Thanks for your response. I understand it’s a crappy question, but this
is an excellent point that I didn’t think
of off the bat when composing the question.

If someone is to work with windows drivers, they better understand how
to use windbg…

Thanks,

Matt

> Matt:
>
> This is a job that I get asked to do a lot, and really, really hate.
> However, my advice is always to be sure to ask about KD knowledge,
> which is easier these days, as it really only means WinDbg. While one
> has to be careful to not get unreasonably specific, if a candidate
> doesn’t know basic information about WinDbg, then I think it only
> reasonable to assume that he or she doesn’t really know much, as a
> working assumption. Everything else, especially these days with books
> like “Windows Internals” can be faked to a reasonable degree.
>
> Good luck,
>
> mm
>
> Matt wrote:
>> This question just popped into mind and has little relevance to my
>> life, but I’m still
>> curious (perhaps it could yield new avenues for me and others to study).
>> -----------------------------
>>
>> If you were looking to hire a developer and were a party to the
>> interview process,
>> what questions would you ask the interviewee regarding windows driver
>> development
>> along with OS theory questions?
>>
>> Of course the basics regarding paged vs non-paged pools, IRQL’s, and
>> context. But what
>> else, and specifically…
>>
>> I could careless about the type of driver (ndis, filesystem, wdm,
>> NT…). What are some of the
>> technical questions you guys have asked or been asked?
>>
>> Perhaps something along these lines would make a great article for
>> Peter to Pontificate about.
>>
>> Matt
>>
>> P.S. - I really would like to hear something else than C vs C++.
>>
>>
>>
>>
>>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

“Matt” wrote in message news:xxxxx@ntdev…
>
> What about self-taught vs university-feed? What are your views there?
>

The question really is not self-taught versus university, it is driver
writer versus XXX expert where XXX can be USB, SCSI/FC, Networking, etc.
Most people come to driver writing as part of workjing on a specific
technology, such as being a network controller expert. Many of these people
came out of other OS’es and learned enougth to work in Windows for their
specialty, but not a lot more.

I know people who can do amazing levels of performance with a NIC through
NDIS programming, but are barely able to use WinDbg/KD! They debug most of
there stuff with a network analyzer and a PCI bus analyzer. By most
models, they are probably not a qualified Windows driver writer, but a
startup looked into hiring the person I know and discovered the firm that
currently employed him paid him the same as the VP of engineering! I told
them the price was cheap for what they were getting.

There are a lot fewer of us who came to driver writing as a general
profession. I was working on a PDP-11 research operating system when I
learned how to write device drivers. Then I used it ss a way to help pay
for grad school and my first car, being a “Will code PDP-11 device drivers
for food or money” guy. The world has become a lot more complex, now I tell
people if they want a network driver or a USB driver I can do it, but I am
not an expert.

The concept of the generic driver writer at most companies died in the early
1980’s. While there is a place for us, it is limited and not what you need
for day to day operations in most firms.


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Website: http://www.windrvr.com
Blog: http://msmvps.com/blogs/WinDrvr
Remove StopSpam to reply

Martin O’Brien wrote:

Nah, no need to feel for me… Kinda make a living sitting on my ass
doing nothing. I really started this thread looking
for new areas to study; my intention was, if I was going to start
playing with a different area of the kernel, what
should the primary things I study be? What areas should I focus on for
each type of driver.

Regardless of this thread kinda ‘blowing up’, I still think it has some
relevance for those of us not so well versed
in the kernel. I would still like to see people expand on it without
criticizing each other.

Matt

Glad to help out, Matt. I feel for you, because if you’re developing
this for HR or something like that, this, in my experience, is
basically a no win situation, and all you can do is take your best
shot. Fundamentally, you just can’t ascertain what someone knows about
a subject that takes years to learn in an interview, and if you try to
do so, you will end up “weeding out” some of the better candidates.
That being said, you’ve obviously got to do something. The reason I
hate asking about WinDbg least is that it is entry level knowledge,
and it amazes me how many people who maintain that they know what they
are talking about don’t know about ‘.sympath,’ for example. That’s
the level of stuff I ask about, unless they just ace it all, at which
point I’ll usually work my way up to things like context. Also, just
to state the obvious, the answers to questions MUST be correct and
unambiguous, and anything in written form is, in my opinion, a
guaranteed disaster. Back when I was a young consultant, I would say
without any question that I never took a ‘test’ that didn’t have at
least a few questions that were unclear, and at least a few answers
that were totally incorrect, and whether I was correct or not in this
statement, which sometimes I must not have been, made no difference,
because it was impossible to get anyone to listen, even in cases where
I got everything but a question or two correct, and even if they did,
I seriously doubt I as doing myself any favors, because no one likes
to be embarrassed.

Good luck,

mm

Matt wrote:
> Martin O’Brien wrote:
>
> Thanks for your response. I understand it’s a crappy question, but
> this is an excellent point that I didn’t think
> of off the bat when composing the question.
>
> If someone is to work with windows drivers, they better understand
> how to use windbg…
>
> Thanks,
>
> Matt
>
>> Matt:
>>
>> This is a job that I get asked to do a lot, and really, really hate.
>> However, my advice is always to be sure to ask about KD knowledge,
>> which is easier these days, as it really only means WinDbg. While
>> one has to be careful to not get unreasonably specific, if a
>> candidate doesn’t know basic information about WinDbg, then I think
>> it only reasonable to assume that he or she doesn’t really know
>> much, as a working assumption. Everything else, especially these
>> days with books like “Windows Internals” can be faked to a
>> reasonable degree.
>>
>> Good luck,
>>
>> mm
>>
>> Matt wrote:
>>> This question just popped into mind and has little relevance to my
>>> life, but I’m still
>>> curious (perhaps it could yield new avenues for me and others to
>>> study).
>>> -----------------------------
>>>
>>> If you were looking to hire a developer and were a party to the
>>> interview process,
>>> what questions would you ask the interviewee regarding windows
>>> driver development
>>> along with OS theory questions?
>>>
>>> Of course the basics regarding paged vs non-paged pools, IRQL’s,
>>> and context. But what
>>> else, and specifically…
>>>
>>> I could careless about the type of driver (ndis, filesystem, wdm,
>>> NT…). What are some of the
>>> technical questions you guys have asked or been asked?
>>>
>>> Perhaps something along these lines would make a great article for
>>> Peter to Pontificate about.
>>>
>>> Matt
>>>
>>> P.S. - I really would like to hear something else than C vs C++.
>>>
>>>
>>>
>>>
>>>
>>
>> —
>> NTDEV is sponsored by OSR
>>
>> For our schedule of WDF, WDM, debugging and other seminars visit:
>> http://www.osr.com/seminars
>>
>> To unsubscribe, visit the List Server section of OSR Online at
>> http://www.osronline.com/page.cfm?name=ListServer
>>
>
>


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

This is an easy one, dude. Learn KMDF. Take an OSR class to do so.
They’re excellent, but more importantly, saying “I’ve studied at OSR” is
worth money. I don’t know if this is what you’re asking or not, but if
you’re looking for specifics about how to better interview, there’s a
book out there full of answers to questions like “why are manhole covers
round?” and other really stupid shit like that; I don’t remember the
name. I find it just staggering how many people ask questions like
this, but it is what it is, and if you know the answers to these, I
guarantee you it will pay off, because people, unfortunately, put stock
in things like this, get VERY pissy if you just kind of the blow the
question off (unlike reusing to take a test, which most people will work
with), and they all get them from the same place, so it’s likely to
pay off as an investment of your time. It’s not pretty, but there it is.

I don’t know nor am I asking who you’re referring to when you talk about
‘criticizing,’ but, for what it is worth, this is a subject on which
some of us have very, very strong feelings, right or wrong, stemming
from a deep, deep hatred of this process. We are asked to do this all
the time, and each time, not matter how it went the last time, it goes
something like this:

  • we say there’s no good way to do it;

  • they still want something so we produce it;

  • they weed out more or less everyone worth talking to;

  • they either
    (a) feed us those that they fell have made the grade;
    (b) use what we gave them and fuck it up; or
    (c) just ignore everything that we gave them which we didn’t want to do
    in the first place.

  • when the person they hire gets exposed as an idiot with good people
    skills in a matter of months, if it takes that long, they try to blame
    it on us, first saying that we approved the process, and thenn saying we
    were uncooperative. Now one the one hand no one believes them about
    most anything they say, but on the other they complain so much more
    loudly and consistently than we do, that people just ask us to humor
    them by starting the process over.

It gets really, really old.

Good luck,

mm

Matt wrote:

Martin O’Brien wrote:

Nah, no need to feel for me… Kinda make a living sitting on my ass
doing nothing. I really started this thread looking
for new areas to study; my intention was, if I was going to start
playing with a different area of the kernel, what
should the primary things I study be? What areas should I focus on for
each type of driver.

Regardless of this thread kinda ‘blowing up’, I still think it has some
relevance for those of us not so well versed
in the kernel. I would still like to see people expand on it without
criticizing each other.

Matt

> Glad to help out, Matt. I feel for you, because if you’re developing
> this for HR or something like that, this, in my experience, is
> basically a no win situation, and all you can do is take your best
> shot. Fundamentally, you just can’t ascertain what someone knows about
> a subject that takes years to learn in an interview, and if you try to
> do so, you will end up “weeding out” some of the better candidates.
> That being said, you’ve obviously got to do something. The reason I
> hate asking about WinDbg least is that it is entry level knowledge,
> and it amazes me how many people who maintain that they know what they
> are talking about don’t know about ‘.sympath,’ for example. That’s
> the level of stuff I ask about, unless they just ace it all, at which
> point I’ll usually work my way up to things like context. Also, just
> to state the obvious, the answers to questions MUST be correct and
> unambiguous, and anything in written form is, in my opinion, a
> guaranteed disaster. Back when I was a young consultant, I would say
> without any question that I never took a ‘test’ that didn’t have at
> least a few questions that were unclear, and at least a few answers
> that were totally incorrect, and whether I was correct or not in this
> statement, which sometimes I must not have been, made no difference,
> because it was impossible to get anyone to listen, even in cases where
> I got everything but a question or two correct, and even if they did,
> I seriously doubt I as doing myself any favors, because no one likes
> to be embarrassed.
>
> Good luck,
>
> mm
>
>
> Matt wrote:
>> Martin O’Brien wrote:
>>
>> Thanks for your response. I understand it’s a crappy question, but
>> this is an excellent point that I didn’t think
>> of off the bat when composing the question.
>>
>> If someone is to work with windows drivers, they better understand
>> how to use windbg…
>>
>> Thanks,
>>
>> Matt
>>
>>> Matt:
>>>
>>> This is a job that I get asked to do a lot, and really, really hate.
>>> However, my advice is always to be sure to ask about KD knowledge,
>>> which is easier these days, as it really only means WinDbg. While
>>> one has to be careful to not get unreasonably specific, if a
>>> candidate doesn’t know basic information about WinDbg, then I think
>>> it only reasonable to assume that he or she doesn’t really know
>>> much, as a working assumption. Everything else, especially these
>>> days with books like “Windows Internals” can be faked to a
>>> reasonable degree.
>>>
>>> Good luck,
>>>
>>> mm
>>>
>>> Matt wrote:
>>>> This question just popped into mind and has little relevance to my
>>>> life, but I’m still
>>>> curious (perhaps it could yield new avenues for me and others to
>>>> study).
>>>> -----------------------------
>>>>
>>>> If you were looking to hire a developer and were a party to the
>>>> interview process,
>>>> what questions would you ask the interviewee regarding windows
>>>> driver development
>>>> along with OS theory questions?
>>>>
>>>> Of course the basics regarding paged vs non-paged pools, IRQL’s,
>>>> and context. But what
>>>> else, and specifically…
>>>>
>>>> I could careless about the type of driver (ndis, filesystem, wdm,
>>>> NT…). What are some of the
>>>> technical questions you guys have asked or been asked?
>>>>
>>>> Perhaps something along these lines would make a great article for
>>>> Peter to Pontificate about.
>>>>
>>>> Matt
>>>>
>>>> P.S. - I really would like to hear something else than C vs C++.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>> —
>>> NTDEV is sponsored by OSR
>>>
>>> For our schedule of WDF, WDM, debugging and other seminars visit:
>>> http://www.osr.com/seminars
>>>
>>> To unsubscribe, visit the List Server section of OSR Online at
>>> http://www.osronline.com/page.cfm?name=ListServer
>>>
>>
>>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

This is similar to what I would be looking for.

Every candidate can write code but only a small minority can
effectively debug and fix the problems in the code that they write
(how many times do we see people post on here the first time their
code doesn’t work). I would much rather talk to a candidate about
how they solved their most intransigent bug, what methods and tools
they used i.e. learning to understand what !analyze -v actually tells
them. And above all what they learned from the process, not just
about the behaviour of the o/s but themselves and their ability to code.

Triaging problems, logical thinking in the face of broken systems and
management pressure as well as formulating action plans to analyse,
fix and progress the project are very rare skills.

As you say, people can fake knowledge with a few buzzwords from the
books that are out there. The humility learned from 4 weeks tracking
down a bug can not be faked and is infinitely more valuable.

Mark.

At 14:22 09/03/2008, Martin O’Brien wrote:

Matt:

This is a job that I get asked to do a lot, and really, really hate.
However, my advice is always to be sure to ask about KD knowledge,
which is easier these days, as it really only means WinDbg. While
one has to be careful to not get unreasonably specific, if a
candidate doesn’t know basic information about WinDbg, then I think
it only reasonable to assume that he or she doesn’t really know
much, as a working assumption. Everything else, especially these
days with books like “Windows Internals” can be faked to a reasonable degree.

Good luck,

mm

Matt wrote:
>This question just popped into mind and has little relevance to my
>life, but I’m still
>curious (perhaps it could yield new avenues for me and others to study).
>-----------------------------
>If you were looking to hire a developer and were a party to the
>interview process,
>what questions would you ask the interviewee regarding windows
>driver development
>along with OS theory questions?
>Of course the basics regarding paged vs non-paged pools, IRQL’s,
>and context. But what
>else, and specifically…
>I could careless about the type of driver (ndis, filesystem, wdm,
>NT…). What are some of the
>technical questions you guys have asked or been asked?
>Perhaps something along these lines would make a great article for
>Peter to Pontificate about.
>Matt
>P.S. - I really would like to hear something else than C vs C++.
>
>

Very well said, Mark. Especially important is a word which I mean to
include but forgot to include: talk, as in have a conversation. That’s
the best you can I do, I think. Just start a conversation, and for the
most part let them go where they want to with it, because it will help
give you an idea of how they approach problems. Any form of written is
test will product horrendous results.

mm

Mark S. Edwards wrote:

This is similar to what I would be looking for.

Every candidate can write code but only a small minority can effectively
debug and fix the problems in the code that they write (how many times
do we see people post on here the first time their code doesn’t work).
I would much rather talk to a candidate about how they solved their most
intransigent bug, what methods and tools they used i.e. learning to
understand what !analyze -v actually tells them. And above all what
they learned from the process, not just about the behaviour of the o/s
but themselves and their ability to code.

Triaging problems, logical thinking in the face of broken systems and
management pressure as well as formulating action plans to analyse, fix
and progress the project are very rare skills.

As you say, people can fake knowledge with a few buzzwords from the
books that are out there. The humility learned from 4 weeks tracking
down a bug can not be faked and is infinitely more valuable.

Mark.

At 14:22 09/03/2008, Martin O’Brien wrote:
> Matt:
>
> This is a job that I get asked to do a lot, and really, really hate.
> However, my advice is always to be sure to ask about KD knowledge,
> which is easier these days, as it really only means WinDbg. While one
> has to be careful to not get unreasonably specific, if a candidate
> doesn’t know basic information about WinDbg, then I think it only
> reasonable to assume that he or she doesn’t really know much, as a
> working assumption. Everything else, especially these days with books
> like “Windows Internals” can be faked to a reasonable degree.
>
> Good luck,
>
> mm
>
> Matt wrote:
>> This question just popped into mind and has little relevance to my
>> life, but I’m still
>> curious (perhaps it could yield new avenues for me and others to study).
>> -----------------------------
>> If you were looking to hire a developer and were a party to the
>> interview process,
>> what questions would you ask the interviewee regarding windows driver
>> development
>> along with OS theory questions?
>> Of course the basics regarding paged vs non-paged pools, IRQL’s, and
>> context. But what
>> else, and specifically…
>> I could careless about the type of driver (ndis, filesystem, wdm,
>> NT…). What are some of the
>> technical questions you guys have asked or been asked?
>> Perhaps something along these lines would make a great article for
>> Peter to Pontificate about.
>> Matt
>> P.S. - I really would like to hear something else than C vs C++.
>>
>>

I, like others, have leaned to just stay out of the interview/hiring/review
process of my clients. In a mildly amusing way, it is a conflict of
interest. Also, after you have accumulated enough non-recruit agreements,
you just basically can’t help. More importantly, a consultant is generally
pretty keen to manage their reputation at all times. That generally means
we know people who *are* capable of delivering on the requirements of the
customer - but they are rarely going to be an applicant passing through the
HR hiring process. Endorsing an applicant is a dicey thing. If they fail,
it looks bad on you.

When I have been the hiring manager, however, I look for these key scoring
points (and instruct the other team members interviewing to plan similarly):

  1. Has the candidate *delivered* one or more production drivers.
    Prototypes, ripping-off samples from the internet, or knowing somebody who
    did do not count.

  2. Can they describe the architecture of the driver in complete (but
    high-level) terms. Can they answer questions about it as they explain it to
    you. It is fun at this point to ask a really dumb question and see how they
    react. If they don’t recognize it as a dumb question and politely explain
    why, then, well, they probably don’t know it was a really dumb question!

  3. Can they take you (the interviewer) through a *specific* challenge that
    they had to overcome to deliver the driver. 4. Can they answer a line of
    questioning that *you* initiate which takes them deep into some area of the
    driver or system the driver serves. Of course, you need to know what you
    are talking about to know if they know what they are talking about. Don’t
    ask dumb questions here. This is a place for them to see that you know what
    it is you are doing and will expect of them. Don’t try to prove that you
    know anything. But ask questions like you would when the project is three
    weeks late. Be like a three year old: Ask ‘why’ a lot.

  4. Evaluate if they passionate about the technology area. This is really
    key. I have never seen an NDIS driver worth the ferrous oxide required to
    store it on a floppy disk that was written by someone whom was not in some
    way, driven to understand every part of how NDIS and there driver must
    interact. This speaks in general (not just NDIS) to whether or not they
    will pursue educating themselves aggressively and ensuring (by doing so)
    that the driver quality will be high. Someone whom simply thinks ‘the
    problem is fixed’ when the bugcheck goes away is not who you want. You
    want the person who can explain all the way back to every crash-dump *why*
    the fix is correct.

  5. Most importantly - Can they communicate with you and/or other team
    members that they must interact with in a style, language, and detail level
    appropriate for the *other* team members. As Don pointed out - driver
    writers in companies are becoming rare. This tends to make them ‘islands’ of
    development capability. The ability for this person to bridge (no NDIS
    jokes please) to other disciplines in the project team without a huge
    impedance mis-match is often more critical than are they a dead-ringer for
    driver XYZ.

  6. This is the ‘flush’ question. “Do you use the Checked Build of the OS”.
    You can guess what you do for the two answers.

One guys opinion and maybe food for thought.
-dave

A really excellent point about a candidate being passionate. In the
end, this is more important to me than anything else, with the exception
of compatibility with coworkers, because this is really what it is all
about to me, everything I’ve said about HR notwithstanding, because most
irritatingly, they suck at this as well. In practice, finding someone
for any particular thing you seek is often not possible in a reasonable
time frame, but if a candidate has some idea of what’s going on, and he
or she is passionate about it, than he or she will probably be willing
to put in the time to compensate for the lack of particulars, and it
will work out. In the big picture, I will take someone with less
experience and knowledge but more enthusiasm over someone with more of
the former and less of the latter any day of the week, assuming that
they are also smart enough to pull it off. I ask about they tools the
use for this reason. I don’t care what the answers are, as long as
they have some clear feelings on the subject. If someone doesn’t care
what tools he or she uses, then it’s hard to imagine that that person
gets fired up about much of anything when it comes to the work they do.
This is the basic reason I distrust people who find memory management
a chore, et. c. It just doesn’t seem to me like they take any pride in
their craft. Probably due in part to my background in NLP, I used to
ask about commenting styles for this reason, but I have stopped doing
so, because the HR filter basically ensures that no one will get through
the door who does not endorse or at least pretend to endorse the “this
is an integer” style of commenting that makes me want to cry. The other
thing that I have stopped asking because no one seems to be willing to
let me do it is for a candidate to bring along or send something that
they have written (code, that is). I used to use it to gauge his or her
style and indirectly pride in what they do. I understand that this is
an unusual request, but it’s the reasoning behind the unwillingness to
do that aggravates me: it might not be a candidate’s own work. This is
true, but that’s not any different than the case for anything they put
on his or her resume if you’re not going to check it out, which most HR
people don’t, and even if it’s true, it still tells you what they think
is an example of important or good, which I think is useful.

mm

David R. Cattley wrote:

I, like others, have leaned to just stay out of the interview/hiring/review
process of my clients. In a mildly amusing way, it is a conflict of
interest. Also, after you have accumulated enough non-recruit agreements,
you just basically can’t help. More importantly, a consultant is generally
pretty keen to manage their reputation at all times. That generally means
we know people who *are* capable of delivering on the requirements of the
customer - but they are rarely going to be an applicant passing through the
HR hiring process. Endorsing an applicant is a dicey thing. If they fail,
it looks bad on you.

When I have been the hiring manager, however, I look for these key scoring
points (and instruct the other team members interviewing to plan similarly):

  1. Has the candidate *delivered* one or more production drivers.
    Prototypes, ripping-off samples from the internet, or knowing somebody who
    did do not count.

  2. Can they describe the architecture of the driver in complete (but
    high-level) terms. Can they answer questions about it as they explain it to
    you. It is fun at this point to ask a really dumb question and see how they
    react. If they don’t recognize it as a dumb question and politely explain
    why, then, well, they probably don’t know it was a really dumb question!

  3. Can they take you (the interviewer) through a *specific* challenge that
    they had to overcome to deliver the driver. 4. Can they answer a line of
    questioning that *you* initiate which takes them deep into some area of the
    driver or system the driver serves. Of course, you need to know what you
    are talking about to know if they know what they are talking about. Don’t
    ask dumb questions here. This is a place for them to see that you know what
    it is you are doing and will expect of them. Don’t try to prove that you
    know anything. But ask questions like you would when the project is three
    weeks late. Be like a three year old: Ask ‘why’ a lot.

  4. Evaluate if they passionate about the technology area. This is really
    key. I have never seen an NDIS driver worth the ferrous oxide required to
    store it on a floppy disk that was written by someone whom was not in some
    way, driven to understand every part of how NDIS and there driver must
    interact. This speaks in general (not just NDIS) to whether or not they
    will pursue educating themselves aggressively and ensuring (by doing so)
    that the driver quality will be high. Someone whom simply thinks ‘the
    problem is fixed’ when the bugcheck goes away is not who you want. You
    want the person who can explain all the way back to every crash-dump *why*
    the fix is correct.

  5. Most importantly - Can they communicate with you and/or other team
    members that they must interact with in a style, language, and detail level
    appropriate for the *other* team members. As Don pointed out - driver
    writers in companies are becoming rare. This tends to make them ‘islands’ of
    development capability. The ability for this person to bridge (no NDIS
    jokes please) to other disciplines in the project team without a huge
    impedance mis-match is often more critical than are they a dead-ringer for
    driver XYZ.

  6. This is the ‘flush’ question. “Do you use the Checked Build of the OS”.
    You can guess what you do for the two answers.

One guys opinion and maybe food for thought.
-dave

One really good question (IMHO) that I always ask is “What happens during a
page fault?”. It is a completely open ended question yet it gives the person
a chance to show a lot of areas of knowledge. If they are a kernel dev they
will typically have a completely different answer than a file system guy -
but you can really get a good grasp of what they know from questions like
this. Another favorite of mine in this same spirit is “What happens when an
exception occurs in a program?”. I have found that people tend to loosen up
because it is not a specific question like “implement strcmp()” - it is more
of a platform to show what you know. BTW - my favorite question is this:

Is there a bug in this routine:

void
DerefP(
void
)
{
*p;
};

I have had hour long discussions over this code. It opens the door to
discussions of synchronization, compilation portability, coding style,
performance and on and on. This question is particularly good for finding
out if people really grasp asynchrony and multithreading. It also is telling
if a person has been exposed to software that directly talks to hardware. I
have been the 3rd or 4th interviewer in an interview loop where the
candidate had “done horribly” in the previous interviews where they were
having him implement red-black trees on the whiteboard, and then come in and
bowl me over with the answers to these kinds of questions. However I must
admit, the first time I asked the DerefP question to a candidate in an
interview - the response was: “This is the dumbest interview question I have
ever been asked.”. :slight_smile:

“Matt” wrote in message news:xxxxx@ntdev…
> This question just popped into mind and has little relevance to my life,
> but I’m still
> curious (perhaps it could yield new avenues for me and others to study).
> -----------------------------
>
> If you were looking to hire a developer and were a party to the interview
> process,
> what questions would you ask the interviewee regarding windows driver
> development
> along with OS theory questions?
>
> Of course the basics regarding paged vs non-paged pools, IRQL’s, and
> context. But what
> else, and specifically…
>
> I could careless about the type of driver (ndis, filesystem, wdm, NT…).
> What are some of the
> technical questions you guys have asked or been asked?
>
> Perhaps something along these lines would make a great article for Peter
> to Pontificate about.
>
> Matt
>
> P.S. - I really would like to hear something else than C vs C++.
>
>
>
>
>

I agree with David and Martin, some other good questions are:

  1. How do you approach developing a driver? Note: there are a lot of
    correct answers here, and it partially depends on the type of driver, but
    the question is always valid.

  2. How do you plan testing a driver? As above the answers vary it is more
    important to see that they can think about it.

  3. What do you do for diagnostics for a driver and what would you like to
    do? Again, the question is more of to understand that the candidate
    understands the problem and has thought about it, than a specific answer.

What you don’t need is a 50 question multiple choice test, the people who
advocate such things in the system software world have proven themselves as
being useless in the industry. If someone suggests such a test, or
certification policy fire them. If a consulting firm says all of our
consultants have passed test X, then assume they know nothing other than
the answers to the test (if at that with the rampant cheating that
certification tests have). If a firm asks you have you passed test X as
part of an interview, assume they don’t know enough to interview correctly.
Such tests prove more the incompetance of their advocates than the ability
of the people who take them.


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Website: http://www.windrvr.com
Blog: http://msmvps.com/blogs/WinDrvr
Remove StopSpam to reply

“Martin O’Brien” wrote in message
news:xxxxx@ntdev…
>A really excellent point about a candidate being passionate. In the end,
>this is more important to me than anything else, with the exception of
>compatibility with coworkers, because this is really what it is all about
>to me, everything I’ve said about HR notwithstanding, because most
>irritatingly, they suck at this as well. In practice, finding someone for
>any particular thing you seek is often not possible in a reasonable time
>frame, but if a candidate has some idea of what’s going on, and he or she
>is passionate about it, than he or she will probably be willing to put in
>the time to compensate for the lack of particulars, and it will work out.
>In the big picture, I will take someone with less experience and knowledge
>but more enthusiasm over someone with more of the former and less of the
>latter any day of the week, assuming that they are also smart enough to
>pull it off. I ask about they tools the use for this reason. I don’t care
>what the answers are, as long as they have some clear feelings on the
>subject. If someone doesn’t care what tools he or she uses, then it’s hard
>to imagine that that person gets fired up about much of anything when it
>comes to the work they do. This is the basic reason I distrust people who
>find memory management a chore, et. c. It just doesn’t seem to me like
>they take any pride in their craft. Probably due in part to my background
>in NLP, I used to ask about commenting styles for this reason, but I have
>stopped doing so, because the HR filter basically ensures that no one will
>get through the door who does not endorse or at least pretend to endorse
>the “this is an integer” style of commenting that makes me want to cry.
>The other thing that I have stopped asking because no one seems to be
>willing to let me do it is for a candidate to bring along or send something
>that they have written (code, that is). I used to use it to gauge his or
>her style and indirectly pride in what they do. I understand that this is
>an unusual request, but it’s the reasoning behind the unwillingness to do
>that aggravates me: it might not be a candidate’s own work. This is true,
>but that’s not any different than the case for anything they put on his or
>her resume if you’re not going to check it out, which most HR people don’t,
>and even if it’s true, it still tells you what they think is an example of
>important or good, which I think is useful.
>
>
> mm
>
>
>
> David R. Cattley wrote:
>> I, like others, have leaned to just stay out of the
>> interview/hiring/review
>> process of my clients. In a mildly amusing way, it is a conflict of
>> interest. Also, after you have accumulated enough non-recruit
>> agreements,
>> you just basically can’t help. More importantly, a consultant is
>> generally
>> pretty keen to manage their reputation at all times. That generally
>> means
>> we know people who are capable of delivering on the requirements of the
>> customer - but they are rarely going to be an applicant passing through
>> the
>> HR hiring process. Endorsing an applicant is a dicey thing. If they
>> fail,
>> it looks bad on you.
>>
>> When I have been the hiring manager, however, I look for these key
>> scoring
>> points (and instruct the other team members interviewing to plan
>> similarly):
>>
>> 1. Has the candidate delivered one or more production drivers.
>> Prototypes, ripping-off samples from the internet, or knowing somebody
>> who
>> did do not count.
>>
>> 2. Can they describe the architecture of the driver in complete (but
>> high-level) terms. Can they answer questions about it as they explain it
>> to
>> you. It is fun at this point to ask a really dumb question and see how
>> they
>> react. If they don’t recognize it as a dumb question and politely
>> explain
>> why, then, well, they probably don’t know it was a really dumb question!
>>
>> 3. Can they take you (the interviewer) through a specific challenge
>> that
>> they had to overcome to deliver the driver. 4. Can they answer a line
>> of
>> questioning that you initiate which takes them deep into some area of
>> the
>> driver or system the driver serves. Of course, you need to know what you
>> are talking about to know if they know what they are talking about.
>> Don’t
>> ask dumb questions here. This is a place for them to see that you know
>> what
>> it is you are doing and will expect of them. Don’t try to prove that you
>> know anything. But ask questions like you would when the project is
>> three
>> weeks late. Be like a three year old: Ask ‘why’ a lot.
>>
>> 5. Evaluate if they passionate about the technology area. This is
>> really
>> key. I have never seen an NDIS driver worth the ferrous oxide required
>> to
>> store it on a floppy disk that was written by someone whom was not in
>> some
>> way, driven to understand every part of how NDIS and there driver must
>> interact. This speaks in general (not just NDIS) to whether or not they
>> will pursue educating themselves aggressively and ensuring (by doing so)
>> that the driver quality will be high. Someone whom simply thinks ‘the
>> problem is fixed’ when the bugcheck goes away is not who you want. You
>> want the person who can explain all the way back to every crash-dump
>> why
>> the fix is correct.
>>
>> 6. Most importantly - Can they communicate with you and/or other team
>> members that they must interact with in a style, language, and detail
>> level
>> appropriate for the other team members. As Don pointed out - driver
>> writers in companies are becoming rare. This tends to make them ‘islands’
>> of
>> development capability. The ability for this person to bridge (no NDIS
>> jokes please) to other disciplines in the project team without a huge
>> impedance mis-match is often more critical than are they a dead-ringer
>> for
>> driver XYZ.
>>
>> 7. This is the ‘flush’ question. “Do you use the Checked Build of the
>> OS”.
>> You can guess what you do for the two answers.
>>
>> One guys opinion and maybe food for thought.
>> -dave
>>
>>
>>
>>
>>
>

Jon:

[If you’re not the author of the author (I can’t recall) of the blog on
memory/cpu barriers that Peter just recommended, my apologies and please
ignore this].

First let me say that I thought it was excellent. In it, you ask if
anyone would be interested in learning more about ‘volatile,’ et. c.,
and I just wanted to let you know that I would. I created an account to
post a comment, and it dumped me out to home page, and I didn’t feel
like finding Peter’s post again to find your blog, so I didn’t actually
do it yet. I’m very lazy sometimes, so I thought I would take this
opportunity that presented itself to tell you.

Thanks,

mm

the_el_vez wrote:

One really good question (IMHO) that I always ask is “What happens during a
page fault?”. It is a completely open ended question yet it gives the
person
a chance to show a lot of areas of knowledge. If they are a kernel dev they
will typically have a completely different answer than a file system guy -
but you can really get a good grasp of what they know from questions like
this. Another favorite of mine in this same spirit is “What happens when an
exception occurs in a program?”. I have found that people tend to loosen up
because it is not a specific question like “implement strcmp()” - it is
more
of a platform to show what you know. BTW - my favorite question is this:

Is there a bug in this routine:

void
DerefP(
void
)
{
*p;
};

I have had hour long discussions over this code. It opens the door to
discussions of synchronization, compilation portability, coding style,
performance and on and on. This question is particularly good for finding
out if people really grasp asynchrony and multithreading. It also is
telling
if a person has been exposed to software that directly talks to hardware. I
have been the 3rd or 4th interviewer in an interview loop where the
candidate had “done horribly” in the previous interviews where they were
having him implement red-black trees on the whiteboard, and then come in
and
bowl me over with the answers to these kinds of questions. However I must
admit, the first time I asked the DerefP question to a candidate in an
interview - the response was: “This is the dumbest interview question I
have
ever been asked.”. :slight_smile:

“Matt” wrote in message news:xxxxx@ntdev…
>> This question just popped into mind and has little relevance to my
>> life, but I’m still
>> curious (perhaps it could yield new avenues for me and others to study).
>> -----------------------------
>>
>> If you were looking to hire a developer and were a party to the
>> interview process,
>> what questions would you ask the interviewee regarding windows driver
>> development
>> along with OS theory questions?
>>
>> Of course the basics regarding paged vs non-paged pools, IRQL’s, and
>> context. But what
>> else, and specifically…
>>
>> I could careless about the type of driver (ndis, filesystem, wdm,
>> NT…). What are some of the
>> technical questions you guys have asked or been asked?
>>
>> Perhaps something along these lines would make a great article for
>> Peter to Pontificate about.
>>
>> Matt
>>
>> P.S. - I really would like to hear something else than C vs C++.
>>
>>
>>
>>
>>
>
>