I agree with that approach to questions - it's what we do. Tests are
open to so much interpretation that there is often no right or wrong
answer, so when we ask them the point is not what the "right" answer is
supposed to be, but how someone approaches them.
Would you be more impressed with a .NET programmer that sat down and:
a) Coded a string reverse algorithm from scratch?
or
b) Did something like:
List<char> something = new List<char>("abcdefghijklmnopqrstuvwxyz");
something.Reverse();
I believe I'd prefer the b) over the a) as it relates to the
"reinventing the wheel" question, but others might be more impressed
with the ability to code something on the spot.
Phil Wilson
-----Original Message-----
From: Discussion of advanced .NET topics.
[mailto:[EMAIL PROTECTED] On Behalf Of Mike Andrews
Sent: Friday, September 21, 2007 8:15 AM
To: [email protected]
Subject: Re: [ADVANCED-DOTNET] interview test.....
As with any of these kinds of discussions, it's very polarized and I
agree
with some against these kinds of tests.
I do regard them as silly.
I've had one once where I would had to write out SQL on paper to
demonstrate
my knowledge of sql coding. To me this is quite inane.
In the "real world" of programming I will not be using paper to write
SQL,
nor will I not have access to parsers to help me make sure my code is
accurate.
I've also had some where I would have to hand write code on paper in VB.
I
really want to know what purpose any of this serves?
I would much rather someone ask me some technical questions to which I
can
answer from my knowledge than have me write down some "silly" algorithm
that
I wouldn't normally do in "real life" anyway.
For instance how about these framework-style questions:
1) Can you tell me the difference between "by reference" and "by value"
for
method parameters?
2) What does the params keyword do in a method?
3) What is a class? What is an interface? What's the difference
between a
Class and Object?
4) What is generic convergence?
5) How can you use generics to reference "your" class type in the class
itself?
6) What is threading?
7) How can you implement a background thread?
8) What is a listener?
9) What is remoting?
10) What is a monitor? What's C#'s generic way of using the Monitor
class? What is VB's generic way of using the Monitor class?
11) How do you implement asynchronous programming in .NET?
12) What does a Using statement do? (requires two answers)
13) What does the default C# keyword do? How can you use it?
14) Is multiple inheritance implemented in the Framework?
15) What is polymorphism? Encapsulation?
16) How do you create an event in C#? In VB?
17) What is a delegate and for what is it used?
18) What are the benefits of Generics over non-generic programming?
Limitations?
19) What is a dictionary? How do you use it?
20) Does the graphics object need to be disposed in the Paint event of
a
control?
I think someone that's able to answer these types of questions
satisfactorily might demonstrate the ability to think and reason and
really work on the task at hand over someone who can reverse a string.
I suppose it all boils down to personal preference though.
I don't believe that a test asking me to reverse a string in place or
whatever is a true test of my abilities as a programmer. If someone can
answer those for me, I'll know right away that they have studied the
Framework and have taken the time to learn over someone who can pull
some
"generic" algorithm out to fit the particular test.
On 9/21/07, Frans Bouma <[EMAIL PROTECTED]> wrote:
>
> > On Fri, 21 Sep 2007 15:40:24 +0200, Frans Bouma <[EMAIL PROTECTED]>
> wrote:
> > >> Well, if it's for a junior programmer they might not have a lot
of
> design
> > >> experience, so asking them to solve a coding problem working it
out
> in
> front
> > >> of you, and thinking out loud, will reveal a lot about how they
> think. So
> I
> > >> wouldn't call this "stupid" (in fact I think that's uncalled
for).
> > >
> > > The tests are IMHO stupid because they:
> > >1) could make you not pick the one you should because the daily
work
> the
> hire
> > >will do is different than writing little routines which are already
in
> the
> > >framework
>
> does the question get harder if a method doesn't exist in the
framework?
>
> I think your employee will write code ON TOP OF the framework,
not
> the
> framework code itself or tiny routines already there. So code working
with
> the
> framework is often different than code which should be in the
framework or
> a
> tiny routine.
>
> (your example was in fact *not* an example or reversing a string in
place)
>
> Indeed. I didn't do it in place. But it's not possible to do it
in
> place, as in C# strings are immutable. :) Did you think of that btw?
>
> So I failed your test and you would not hire me. See how silly
this
> is? :)
>
> > >2) could make you pick the wrong person because you think his
string
> reversal
> > >goo was excellent while he'll fail miserably designing some classes
or
> writing
> > >some basic OO code.
> >
> > the point is if he *cannot* write the function......if he cannot
reverse
> a
> > simple string then what does that tell us?
>
> that he can't reverse a string. Though I don't think the person
> would
> draw a complete blank stare, so there will be thoughts of solutions.
THOSE
> will tell you more. I'm with Per, you should talk about various .net
> elements
> instead.
>
> > Again it would seem to be the claim there is no correlation between
> > programming and the application of basic algorithms.
>
> programming is about writing algorithms, not about typing code.
So
> I
> don't think I can agree with your conclusion that I would claim what
you
> say I
> claim. All I say is that if you test a person if s/he can cook up a
given
> algorithm that it would tell anything. I say: no that doesn't say
> anything.
>
> FB
>
> ===================================
> This list is hosted by DevelopMentor(r) http://www.develop.com
>
> View archives and manage your subscription(s) at
> http://discuss.develop.com
>
===================================
This list is hosted by DevelopMentor(r) http://www.develop.com
View archives and manage your subscription(s) at
http://discuss.develop.com
===================================
This list is hosted by DevelopMentorĀ® http://www.develop.com
View archives and manage your subscription(s) at http://discuss.develop.com