New Thread - Pre Screening Questions for a C# developer


M

M.Siler

Let me clarify from my last post. I am not using these 4 questions as the
sole screening method. Currently in, the Tampa Bay area (Florida) there is
an extreme shortage of C# developers. We have utilized just about every
method known to man to find candidates, including employment firms (which I
do not like to use, but when you're back in against the proverbial wall).
With the employment firms they will send over just about anyone. So after
getting a lot of people that clearly don't have a skill set beyond ready C#
for dummies in the past week I wanted a way to hopefully screen them out
with a *VERBAL* 4 question test (no time or means to lookup the answers). I
wanted these questions to be black & white with one single answer and simple
enough that if someone has had some real world programming that they should
easily answer the questions.

I have revised the questions from my last post. Does anyone see any major
problems with these 4 questions?

1. Which method do you invoke on the SQLDataAdapter object to load your
dataset with data?
a) Update
b) Fill <-- correct
c) Gather
d) Load

2. When doing an Update, which method of the SqlCommand is best to use?
a) ExecuteQuery
b) ExecuteUpdate
c) ExecuteNonQuery <-- correct
d) ExecuteCommand

3. A class that can not be inherited is what type of class?
a) Sealed <-- correct
b) Static
c) Gather
d) Constru

4. What is the wild card character in the SQL "like" statement?
a) * (Asterisk)
b) % (Percent) <-- correct
c) $ (Dollar)
d) # (Pound)
 
Ad

Advertisements

B

Bruce Wood

I've been developing in C# for two years now, and I would fail your
test. The problem is that the questions lean to heavily on syntax
trivia. For example, I never bother filling my brain with which method
to call on a SqlDataAdapter to load data. When I want to know, I look
it up.

I think that given your situation you want more conceptual questions,
but still limited to C#. As such, question #3 is a pretty good one,
although "gather" and "constru" are odd choices. I would offer
"sealed", "static", "virtual", and "protected", all of which are valid
attributes for classes and methods, but only "sealed" is the right
answer. Anyone who understands inheritance at all will immediately
eliminate "virtual" and "protected" as reasonable choices. Those who
know C# at all will realize that "static" isn't it, leaving only
"sealed." Oh, and I would fix the question's grammar a bit to read "A
class _from which_ you cannot inherit is what type of class?"

The other questions are, for my tastes, far too specific and are the
kind of thing I would simply look up in help rather than memorizing. In
what areas does your company do work? (e.g. WinForms, WebForms,
producing libraries...?) Evidently you do database work using SQL, so a
SQL question seems in order, but I'd stay away from syntactic trivia
like method names.

Here's another possibility for you, if you do WinForms work (of which I
do quite a bit): "How would you make the controls on your form resize
along with the form, for example if the user changes the window size?"
a) Handle the Resize event of the form and change the controls' sizes
in the event handler.
b) Use the Dock and Anchor properties of the controls.
c) Put the controls in an autosize container, such as a Panel.
d) Use the AutoScale property of the Form to have the controls change
size with the enclosing Form.

Answers "c" and "d" are pure nonsense but would sound plausible to a
newbie. Answer "a" is one way to do it, but it's the most painful and
arduous way, which one would use only in the most complicated cases.
Anyone who has done a reasonable amount of work with WinForms will
immediately recognize Dock and Anchor. (Warning: this question applies
most clearly to .NET 1.1... .NET 2.0 introduces layout managers which
may affect the answer to this. However, even in .NET 2.0 "b" is still
the only reasonable answer in the group.) This question isn't about
syntax or property names (notice that I didn't offer a list of possible
property names). It's about what approach someone would take to solve a
problem: would they use events, set properties on the controls
themselves, or fall for one of two decoy answers?

If you're looking to "weed out" those who really don't know anything,
I'd stay away from syntax, because you may "weed out" those who know
what they're doing but have poor memories for minutiae.
 
M

Mythran

M.Siler said:
Let me clarify from my last post. I am not using these 4 questions as the
sole screening method. Currently in, the Tampa Bay area (Florida) there is
an extreme shortage of C# developers. We have utilized just about every
method known to man to find candidates, including employment firms (which
I do not like to use, but when you're back in against the proverbial
wall). With the employment firms they will send over just about anyone. So
after getting a lot of people that clearly don't have a skill set beyond
ready C# for dummies in the past week I wanted a way to hopefully screen
them out with a *VERBAL* 4 question test (no time or means to lookup the
answers). I wanted these questions to be black & white with one single
answer and simple enough that if someone has had some real world
programming that they should easily answer the questions.

I have revised the questions from my last post. Does anyone see any major
problems with these 4 questions?

1. Which method do you invoke on the SQLDataAdapter object to load your
dataset with data?
a) Update
b) Fill <-- correct
c) Gather
d) Load

2. When doing an Update, which method of the SqlCommand is best to use?
a) ExecuteQuery
b) ExecuteUpdate
c) ExecuteNonQuery <-- correct
d) ExecuteCommand

3. A class that can not be inherited is what type of class?
a) Sealed <-- correct
b) Static
c) Gather
d) Constru

4. What is the wild card character in the SQL "like" statement?
a) * (Asterisk)
b) % (Percent) <-- correct
c) $ (Dollar)
d) # (Pound)
Seems to me like you don't understand our point of view. You are asking us
if those are good questions for C# candidates. I only see 1 C# specific
question in those 4. That would be question #3. The first two are ADO.Net
specific while the last one has nothing to do with .Net at all. It's a SQL
question. So, if you must ask 4 C# related questions, ask something more
along the lines of C# only. Something that would really be C# specific.
Or, as I was given for my interview, a single sheet of paper with C# code
listed on it. Simple C# that is :) Nothing with any PInvoke stuff, or
other non-related code. Something that does a calculation, etc. For
example:

Optimize and Fix the following:

public function AddValues(ByVal int Value1, int Value2)
{
Value1 = Value1 + Value2;
}

Some answers would be like:

function should be a type, not the work 'function'.
No ByVal keyword in C#.
Value1 = Value1 + Value2 could be re-worked as Value1 += Value2;
There is no return from the function, therefore, there would be a
compilation error.

Simple, yet, any C# developer should be able to catch AT LEAST those 3
errors, and optimize to add using += instead (although, that is more of a
developer-choice, not a requirement). This is VERY BASIC and does not
expand upon their full knowledge...but it should help weed out most of those
non-C# developers who haven't even written basic apps or assemblies in C#.
Those that know javascript but not C# would tend to think that the
'function' keyword is correct, because it is in javascript :p

Anywho, that may or may not help ya :)

Mythran
 
V

vj

I suggest u make the candidates take the ProveIt test, a very good
measure..and detail screening... Check the website www.proveit.com. We used
to screen that for our company, and also I have heard take this test when
they attend job interviews

VJ
 
M

Matthew Brown

This sounds like a mix of ADO and SQL questions, rather than C#. Could
throw in more syntax questions, I guess... ("what are the three uses of
the keyword 'using'?"..)
 
G

Guest

Heh. I'd be more inclined to ask them something like,
"Please name and briefly describe the three pillars of OOP".

At my place, we get rid of 90% of them with that one.

Now, let's see -- uhh....

Cheers.

Peter
 
T

the.duckman

If your keen to get a c# programmer the way in which your wording some
of your multiple choce questions will inavertantly confuse some of
bi-lingual applicants.

Without boring you on lots of inane detals that I've lernt writting
tests for university students I would suggest the siplest way to have a
simple to understand multiple choice question is to make the answers
read like a sentance when appended to the question.

A word that modifies a noun is called:
a) an adverb
b) a conjunction
c) a verb
d) an adjective


Here is a good site on how to phrase your multiple choce question.
http://www.tlc.murdoch.edu.au/eddev/evaluation/mcq/mctests.html#constructing

As for subject matter I belive there has already been several good
point made in this thread, Particulary bruce's comments.

-dm
 
Ad

Advertisements

M

MuZZy

I would rather test overall knowledge of OOP and C# and not too much
into specifics of particular classes. Like i am using C# for last 4
years and hold a senior developer position but i had to think before i
could answer to
2. When doing an Update, which method of the SqlCommand is best to use?
a) ExecuteQuery
b) ExecuteUpdate
c) ExecuteNonQuery <-- correct
d) ExecuteCommand

just because two years ago we created the data object and i never
touched low level Sql classes thereafter.

One of my usual questions when i interview candidates is:

object o = null;
if (o.Equals(null)) MessageBox.Show("null");
else MessageBox.Show("not null");

Question is what message will show.
Enormous number of people tend to answer that it will show 'null' :) In
realty it will of course give an exception because you can't call a
member function of "null".

Also, it's useful to draw a denormalized table (e.g. customer orders
which will contain all orders, customer info, prices, etc all in one
table) and to ask them to denormalize that table.

Another question is to ask them to design something like watch in terms
of OOP - this way you might get a good idea of that person't OOP skills.


So my advise - don't look too much into particular details as class
names, function names, sql syntax but rather look at the person's
analytical, algorythmical skills and ability to function under stress
and pressure.

Hope it helps,
MuZZy
 
W

William Stacey [MVP]

| Also, it's useful to draw a denormalized table (e.g. customer orders
| which will contain all orders, customer info, prices, etc all in one
| table) and to ask them to denormalize that table.

Naturally, that is a trick question as the table is already "denormalized".
I know that was just a typo. :)

| Another question is to ask them to design something like watch in terms
| of OOP - this way you might get a good idea of that person't OOP skills.

Good idea.

| So my advise - don't look too much into particular details as class
| names, function names, sql syntax but rather look at the person's
| analytical, algorythmical skills and ability to function under stress
| and pressure.

I agree. You could loose a lot of good talent as some of the best don't
think in terms of MSDN style answers, but in logic and debugging and design.
The test style questions can be found in Help in a few moments and we don't
need to pack our brains with that, we have Intellisense. The good stuff is
the knowing the stuff you can't learn from MSDN/Help.
 
K

Kevin Spencer

One other point I haven't seen in this thread yet: Multiple-choice questions
are convenient for scoring, but horrible for evaluating. The answer is
always in the list of possible answers; therefore, an analysis of the list
of possible answers will often yield the correct answer, without having to
know it beforehand. I did this quite a few times in my lifetime. IMHO, when
testing, it is not wise to provide the answer to the subject of the test,
regardless of how one tries to hide it.

--
HTH,

Kevin Spencer
Microsoft MVP
Professional Numbskull

Show me your certification without works,
and I'll show my certification
*by* my works.
 
S

Stoitcho Goutsev \(100\)

I've always hated multiple-choice questions where I have to provide only one
correct answer and there are more than one.
Unfortunately I've never seen multiple-choice test without it.

Look at the only C# question in the list
3. A class that can not be inherited is what type of class?
a) Sealed <-- correct
b) Static
c) Gather
d) Constru

a and b are correct. C# 2 supports static classes and they are sealed, thus
cannot be inhertited. Because of that I'd consider answer b as correct too.

The best interview I've ever had wasn't based on tests at all. It was - on
the web site there was a simple application that needed to be written.
Candidates can take all the time they want in the confort of their homes,
with all the sources of information they need. Writing this program in a way
that will guarantee you at least having an interview appointment is not an
easy task. It involves research for the company and figuring out what they
will be possibly looking to see in the code. Neath programming style with
just enough commenting and good object orientation - design patterns and so
on. It is just like writing a program to sell to somebody (including the
source code).

When you get the appointment you go to an interview and I'd say half of the
interview is going over the code you have writen and explaining your design
decisions. Believe me if one hasn't written the program him/her self that
will become clear after the first fiew questions.

The interview process was the first good impression regarding the company
and I'm still working with these guys.


--

Stoitcho Goutsev (100)



Kevin Spencer said:
One other point I haven't seen in this thread yet: Multiple-choice
questions are convenient for scoring, but horrible for evaluating. The
answer is always in the list of possible answers; therefore, an analysis
of the list of possible answers will often yield the correct answer,
without having to know it beforehand. I did this quite a few times in my
lifetime. IMHO, when testing, it is not wise to provide the answer to the
subject of the test, regardless of how one tries to hide it.

--
HTH,

Kevin Spencer
Microsoft MVP
Professional Numbskull

Show me your certification without works,
and I'll show my certification
*by* my works.
 
V

vj

I totally disagree with Multiple choices question are not a best judge..
They are useful, specially if you time it and say your speed matters. Also
it can be very tricky if you closely match all options or even give more
than correct answer to say is All above correct or something...

VJ

Stoitcho Goutsev (100) said:
I've always hated multiple-choice questions where I have to provide only
one correct answer and there are more than one.
Unfortunately I've never seen multiple-choice test without it.

Look at the only C# question in the list
3. A class that can not be inherited is what type of class?
a) Sealed <-- correct
b) Static
c) Gather
d) Constru

a and b are correct. C# 2 supports static classes and they are sealed,
thus cannot be inhertited. Because of that I'd consider answer b as
correct too.

The best interview I've ever had wasn't based on tests at all. It was - on
the web site there was a simple application that needed to be written.
Candidates can take all the time they want in the confort of their homes,
with all the sources of information they need. Writing this program in a
way that will guarantee you at least having an interview appointment is
not an easy task. It involves research for the company and figuring out
what they will be possibly looking to see in the code. Neath programming
style with just enough commenting and good object orientation - design
patterns and so on. It is just like writing a program to sell to somebody
(including the source code).

When you get the appointment you go to an interview and I'd say half of
the interview is going over the code you have writen and explaining your
design decisions. Believe me if one hasn't written the program him/her
self that will become clear after the first fiew questions.

The interview process was the first good impression regarding the company
and I'm still working with these guys.


--

Stoitcho Goutsev (100)
 
Ad

Advertisements

B

Bruce Wood

Yes, multiple choice is not the best way to judge competence, but
remember what the OP requires (hey... remember requirements? :) ). The
OP wants some quick questions that can be asked over the phone in order
to weed out the people who have no idea what's going on, because the
labour market is tight and they're getting a lot of applicants who are
just throwing their hat in the ring to see if they'll get lucky, but
they're not C# programmers.

The original purpose was not to determine whether to hire. The original
purpose was to determine whether to bother with an interview in the
first place, to not waste time on VBA script programmers who claim that
they're C# gurus.

Given that requirement, multiple choice questions aren't a bad idea,
although I also like Stoicho's Web test idea, if that's an option for
the OP. Yes, there would be a few cheaters (how many questions would we
get here asking how to solve the problem? :) ) But at least in the
face-to-face interview you would know right away if the guy wrote the
program or if he were just bluffing.

However, in the absence of a Web questionnaire, the OP needs a few
quick questions that could be asked over the phone to separate people
who have some clue about C# from the script kiddies who crammed a C#
book last night. Of course it won't be 100% foolproof, but the
questions should eliminate the majority of those who have just done a
quick cram. The rest can be weeded out during the actual interview.

We could fix up the "can't inherit" question by eliminating "static"
from the list, perhaps replacing it with "override":

"A class from which you cannot inherit is: a) sealed, b) overriden, c)
virtual, d) protected."

Anyone who gets that wrong has no clue at all. There's also my WinForms
question, but that only counts if they're looking for WinForms
programmers. Can anyone else think of one or two questions that any C#
programmer should know cold, but which would be confusing to someone
who didn't know C#?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Top