5 Stimmen

Sind diese Interviewfragen zu schwierig für Anfänger?

Ich habe heute mit zwei Leuten ein Vorstellungsgespräch geführt und sie "getestet", um zu sehen, wie es um ihre Fähigkeiten bestellt ist. Beide sind Berufsanfänger, einer von ihnen ist sogar noch auf dem College. Keiner der beiden Bewerber sah etwas Falsches an dem folgenden Code.

Ich schon, sonst hätte ich diese Beispiele nicht ausgewählt. Glauben Sie, dass diese Fragen für Programmieranfänger zu hart sind?

Ich denke, ich sollte auch bemerken, dass keiner von ihnen viel Erfahrung mit C# hatte... aber ich glaube nicht, dass die Probleme mit diesen sprachabhängig sind.

//For the following functions, evaluate the code for quality and discuss.  E.g.
//E.g. could it be done more efficiently? could it cause bugs?        
public void Question1()
{
    int active = 0;

    CheckBox chkactive = (CheckBox)item.FindControl("chkactive");
    if (chkactive.Checked == true)
    {
        active = 1;
    }

    dmxdevice.Active = Convert.ToBoolean(active);
}

public void Question2(bool IsPostBack)
{
    if (!IsPostBack)
    {
        BindlistviewNotification();
    }

    if (lsvnotificationList.Items.Count == 0)
    {
        BindlistviewNotification();
    }
}

//Question 3
protected void lsvnotificationList_ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
   ListViewDataItem item = lsvnotificationList.Items[e.ItemIndex];
   string Email = ((TextBox)item.FindControl("txtEmailAddress")).Text;
   int id = Convert.ToInt32(((HiddenField)item.FindControl("hfID")).Value);

   ESLinq.ESLinqDataContext db = new ESLinq.ESLinqDataContext();
   var compare = from N in db.NotificationLists
                 where N.ID == id 
                 select N;
   if (compare.Count() > 0)
   {
       lblmessage.Text = "Record Already Exists";
   }
   else
   {
       ESLinq.NotificationList Notice = db.NotificationLists.Where(N => N.ID == id).Single();
       Notice.EmailAddress = Email;
       db.SubmitChanges();
   }
   lsvnotificationList.EditIndex = -1;
   BindlistviewNotification();
}

1voto

Adam Davis Punkte 89506

Das ist eine gute Frage, wenn Sie einen Wartungsprogrammierer oder -tester suchen.

Dies ist jedoch kein guter Test, um einen guten Programmierer zu erkennen. Ein guter Programmierer wird diesen Test sicherlich bestehen, aber viele Programmierer, die nicht gut sind, werden ihn auch bestehen.

Wenn Sie einen guten Programmierer wollen, müssen Sie einen Test definieren, den nur ein guter Programmierer bestehen kann. Ein guter Programmierer verfügt über ausgezeichnete Problemlösungsfähigkeiten und weiß, wie man Fragen stellt, um zum Kern eines Problems zu gelangen, bevor er mit der Arbeit beginnt - das spart sowohl ihm als auch Ihnen Zeit.

Ein guter Programmierer kann mit nur geringem Lernaufwand in vielen verschiedenen Sprachen programmieren, so dass Ihr "Code"-Test aus Pseudocode bestehen kann. Sagen Sie ihnen, dass sie ein Problem lösen sollen, und lassen Sie sie die Lösung in Pseudocode schreiben - was bedeutet, dass sie keinen Zugang zu all diesen raffinierten Bibliotheken haben. Ein guter Programmierer weiß, wie die Bibliotheken funktionieren und kann sie bei Bedarf neu erstellen.

Also... ja, Sie stellen im Wesentlichen Fragen zum Lehrbuchwissen - Aufgaben, die das Auswendiglernen und Sprachkenntnisse zeigen, aber nicht die Fähigkeiten, die zur Lösung eines Problems erforderlich sind.

-Adam

0voto

Zyphrax Punkte 17659

Okey, ich werde die C#-Fragen nicht beantworten. Wie ich hier sehe, haben Sie genug Bewerber, die sich in einem Vorstellungsgespräch mit Ihnen gut schlagen würden.

Ich denke, dass die Tests keinen guten Einblick in die Programmierkenntnisse einer Person geben. Werfen Sie einen Blick auf Joels Leitfaden für Vorstellungsgespräche:
http://www.joelonsoftware.com/articles/fog0000000073.html

Er spricht von zwei Dingen, wenn es um mögliche Kandidaten geht: sind sie klug UND erledigen sie den Job (das ist eine starke Kombination). Lassen Sie Ihre Kandidaten ein wenig über Projekte sprechen, die sie gemacht haben oder mit denen sie zu Hause herumspielen. Finden Sie heraus, ob sie sich für das Programmieren begeistern können. Ein wenig Erfahrung ist natürlich schön, aber verlangen Sie keine Tricks von ihnen.

0voto

jussij Punkte 10221

Frage 1

  boolean active = true;

Frage #2

  if ((!IsPostBack) || (lsvnotificationList.Items.Count == 0))   

Frage Nr. 3:

Schreiben Sie den Text komplett neu und fügen Sie Kommentare hinzu. Nach 30 Sekunden Lesen kann ich immer noch nicht erkennen, was der Code zu tun versucht.

0voto

Mark T Punkte 3374

Ich muss sagen, dass meine Antwort auf diese Probleme darin besteht, dass es ohne Kommentare (oder Dokumentation), die erklären, was der Code tun MUSS, wenig Grund gibt, sich den Code überhaupt anzusehen. Der Code tut EXAKT das, was er tut. Wenn Sie ihn ändern, um etwas anderes zu tun, selbst wenn Sie ihn ändern, um das Auslösen einer Ausnahme zu verhindern, können Sie ihn dazu bringen, etwas Unbeabsichtigtes zu tun und das gesamte Programm zu zerstören.

Das Problem bei allen drei Fragen ist, dass es keine Absicht gibt. Wenn Sie den Code ändern, gehen Sie davon aus, dass Sie die Absicht des ursprünglichen Programmierers kennen. Und diese Annahme wird oft falsch sein.

Und um die Frage zu beantworten: Ja, das ist für die meisten Nachwuchs-Programmierer zu schwierig, weil das Dokumentieren von Code nie gelehrt wird.

0voto

CodeRedick Punkte 7212

Ok, nachdem ich weit über meine Schlafenszeit hinaus aufgeblieben bin, um alle Antworten zu lesen und die meisten davon zu kommentieren...

Der allgemeine Konsens scheint zu sein, dass die Fragen nicht allzu schlecht sind, aber, insbesondere für Q3, durch die Verwendung von Pseudocode oder einer anderen Technik, um einige der sprachspezifischen Dinge zu verbergen, besser bedient werden könnten.

Ich denke, ich werde diese Fragen erst einmal nicht zu sehr gewichten.

(Natürlich ist ihr Mangel an SQL-Kenntnissen immer noch beunruhigend... und sei es nur, weil sie beide SQL in ihrem Lebenslauf hatten :( )

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X