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();
}

5voto

Jason Baker Punkte 180981

Als Neuling würde ich erwarten, dass sich die Arbeitgeber mehr für meine Gedankengänge interessieren, als dafür, ob die Antwort "richtig" ist oder nicht. Ich könnte mir einige Antworten auf diese Fragen ausdenken, aber sie wären wahrscheinlich nicht richtig :)

In diesem Sinne denke ich, dass Sie mit diesen Fragen auskommen können, aber Sie sollten auf jeden Fall etwas liberaler sein, was die "richtige" Antwort betrifft.

Solange diese Bedingungen klar sind, halte ich es für eine schlechte Sache, ein leeres Blatt ohne Gedanken zu bekommen. Das bedeutet, dass sie entweder wirklich denken, dass der Code perfekt ist (was, wie wir wissen, fast nie der Fall ist), oder dass sie zu schüchtern sind, um ihre Gedanken mitzuteilen (was ebenfalls eine schlechte Sache ist).

5voto

FlySwat Punkte 165766

Ich denke nicht, dass 1 und 2 zu schwierig sind, #3 erfordert ein anständiges Verständnis darüber, wie Datenbindung und LINQ in .NET funktioniert, so dass es für eine Person auf Einstiegsebene etwas schwierig sein kann. Ich denke, dies sind ziemlich gute Fragen für Junior-Level-Entwickler, die einige .NET-Erfahrung haben.

Hier meine Notizen dazu:

Frage 1:

  • Eine ganze Zahl als Booleschen Wert verwenden
  • Keine Nullprüfung bei findControl
  • Übertriebene Ausführlichkeit

Meine Revision:

public void Question1()
{    
    CheckBox chkactive = item.FindControl("chkactive") as CheckBox;
    if (chkActive != null)    
       dmxdevice.Active = chkActive.Checked;
    else
       dmxdevice.Active = false;
}

Frage 2:

  • Übertriebene Ausführlichkeit
  • Die Datenbindung erfolgt zweimal, wenn es sich nicht um ein Postback handelt und es keine zu bindenden Elemente gibt.

Meine Revision:

public void Question2(bool IsPostBack)
{
    if (!IsPostBack || lsnotificationList.Items.Count == 0)
    {
        BindlistviewNotification();
    }
}

Frage 3:

  • Ersetzen Sie indizierte loopup mit immer e.Item.DataItem;
  • Nullchecks zu findControl-Aufrufen hinzufügen.
  • Wechseln Sie zu TryParse und fügen Sie einen Standard-id-Wert hinzu.
  • Bessere Fehlerbehandlung hinzugefügt
  • Dokumentieren Sie einige wichtige architektonische Fragen, warum fragen Sie die Datenbank vom Frontend aus ab? Diese LINQ-Abfragen könnten auch optimiert werden.
  • Warum wird nicht nach Duplikaten innerhalb der Listenelemente-Sammlung gesucht, und warum werden nicht alle Aktualisierungen später mit einer einzigen Übermittlung zusammengefasst?

4voto

Aaron Fischer Punkte 20373

Sie fragten also jemanden, der keine Kenntnisse in c#, .net, asp.net oder linq hat? Ich würde nicht erwarten, dass etwas auf dem Papier?

2voto

Jim Burger Punkte 4319

Ich kann Ihnen nur raten, darauf zu achten, dass Ihre Testfragen tatsächlich kompilierbar sind.

Ich denke, der Wert der FizzBuzz-Fragen liegt darin, zu sehen, WIE jemand Ihre Probleme löst.

Zu sehen, wie sie die Lösung in die IDE laden, sie kompilieren, den Code mit einem Step-Through-Debugger durchgehen, Tests für das offensichtlich beabsichtigte Verhalten schreiben und dann den Code so umgestalten, dass er korrekter/wartbarer ist, ist wertvoller als zu wissen, dass sie Code lesen und verstehen können.

1voto

Justin R. Punkte 22615

Was haben Sie sich von diesem Gespräch erhofft? Müssen Ihre Mitarbeiter Code ohne Debugger oder ähnliches debuggen? Stellen Sie jemanden ein, der nur Wartungsprogrammierung machen wird?

Meiner Meinung nach geben diese Fragen wenig Aufschluss über die Fähigkeiten der Bewerber.

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