New Thread - Pre Screening Questions for a C# developer

Discussion in 'Microsoft C# .NET' started by M.Siler, Mar 23, 2006.

  1. M.Siler

    M.Siler Guest

    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)
     
    M.Siler, Mar 23, 2006
    #1
    1. Advertisements

  2. M.Siler

    Jeff Guest

    Where do I apply?
     
    Jeff, Mar 23, 2006
    #2
    1. Advertisements

  3. M.Siler

    Bruce Wood Guest

    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.
     
    Bruce Wood, Mar 23, 2006
    #3
  4. M.Siler

    Mythran Guest

    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
     
    Mythran, Mar 23, 2006
    #4
  5. M.Siler

    vj Guest

    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
     
    vj, Mar 23, 2006
    #5
  6. 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'?"..)
     
    Matthew Brown, Mar 23, 2006
    #6
  7. M.Siler

    Guest 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
     
    Guest, Mar 24, 2006
    #7
  8. M.Siler

    Guest

    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
     
    , Mar 24, 2006
    #8
  9. M.Siler

    MuZZy Guest

    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
     
    MuZZy, Mar 24, 2006
    #9
  10. | 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.
     
    William Stacey [MVP], Mar 24, 2006
    #10
  11. 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.
     
    Kevin Spencer, Mar 24, 2006
    #11
  12. 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)



     
    Stoitcho Goutsev \(100\), Mar 24, 2006
    #12
  13. M.Siler

    vj Guest

    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

     
    vj, Mar 24, 2006
    #13
  14. M.Siler

    Bruce Wood Guest

    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#?
     
    Bruce Wood, Mar 24, 2006
    #14
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.