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

0voto

Während die Leute hier offensichtlich keine Probleme haben, diesen Code in ihrer Freizeit zu knacken, denke ich als jemand, der den gesamten Prozess der Arbeitssuche und des Vorstellungsgesprächs vor etwa einem Jahr frisch von der Uni durchlaufen hat, dass man sich daran erinnern sollte, wie stressig Fragen wie diese sein können. Ich verstehe, dass Sie nur nach dem Denkprozess gefragt haben, aber ich denke, Sie würden mehr aus den Leuten herausholen, wenn Sie solche Fragen zwanglos und im Gespräch stellen würden, nachdem Sie den Gesprächspartner beruhigt haben. Es mag sich wie eine Ausrede anhören, aber Fragen zu Code, der zwar technisch funktioniert, aber etwas gestutzt werden muss, können viel schwieriger sein als die Korrektur von Code, der sich nicht kompilieren lässt, weil die Leute davon ausgehen, dass die Beispiele nicht kompiliert werden können, und sich selbst an die Wand fahren, wenn sie versuchen, den Trick für Ihre Fragen herauszufinden. Manche Leute werden durch Interviewfragen nie gestresst, aber viele schon, sogar einige talentierte Programmierer, die Sie wahrscheinlich nicht ausschließen wollen, es sei denn, Sie bereiten sie auf eine Situation vor, in der sie mit einer geladenen Waffe am Kopf programmieren müssen.

Der Code selbst in Frage 3 scheint sehr C#-spezifisch zu sein. Ich weiß nur, dass als LINQ, weil jemand darauf hingewiesen, in den Antworten hier, aber kommen in als Java-Entwickler, würde ich nicht erkennen, dass überhaupt. Ich meine, erwarten Sie wirklich, dass Hochschulen eine Funktion lehren, die erst kürzlich in .net 3.5 eingeführt wurde?

Ich möchte auch darauf hinweisen, wie viele Leute hier über Frage 2 gestolpert sind, indem sie den Code gestrafft haben und dabei versehentlich das Verhalten des Codes verändert haben. Das sollte Ihnen eine Menge über die Schwierigkeit Ihrer Fragen sagen.

0voto

Amy B Punkte 104656

Niemand antwortet auf #3 mit einem Code. Das sollte zeigen, wie die Leute darüber denken. Normalerweise treffen Stackoverflowers diese Fragen mit dem Kopf voran.

Hier ist mein Versuch dazu. Ich musste die EventArgs auf msdn nachschlagen, um die Eigenschaften zu kennen. Ich kenne LINQ, weil ich es in den letzten 8 Monaten intensiv studiert habe. Ich habe nicht viel UI-Erfahrung, daher kann ich nicht sagen, ob der Aufruf zum Binden im Event-Handler schlecht ist (oder andere Dinge, die für einen UI-Programmierer offensichtlich wären).

protected void lsvnotificationList_ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
  string Email = e.NewValues["EmailAddress"].ToString();
  int id = Convert.ToInt32(e.NewValues["ID"]);

  using (ESLinq.ESLinqDataContext db = new ESLinq.ESLinqDataContext(connectionString))
  {
    List<NotificationList> compare = db.NotificationLists.Where(n => n.ID = id).ToList();

    if (!compare.Any())
    {
      lblmessage.Text = "Record Does Not Exist";
    }
    else
    {
      NotificationList Notice = compare.First();
      Notice.EmailAddress = Email;
      db.SubmitChanges();
    }
  }
  lsvnotificationList.EditIndex = -1;
  BindlistviewNotification();

}

0voto

ilitirit Punkte 15425

Ein flüchtiger Blick zeigt, dass der Rest des Codes unter einer schlechten Struktur und unnötigen Konditionalen usw. leidet. Daran ist an sich nichts "falsch", insbesondere wenn das Programm wie erwartet läuft. Vielleicht sollten Sie die Frage ändern?

Andererseits sieht das Casting nicht so aus, als ob es überhaupt korrekt durchgeführt wird, z. B. (cast)object.Method() vs (cast)(object.Method()) vs ((cast)object).Method(). Im ersten Fall ist das Problem nicht sprachunabhängig, sondern hängt von den Vorrangregeln ab.

Ich glaube nicht, dass es so schwer war, aber es kommt darauf an, was Sie testen wollten. IMO hätte ein kluger Kandidat eine Menge Fragen über die Funktion des Programms und die Struktur der Klassen stellen sollen, bevor er versucht, die Frage zu beantworten. z.B. Woher sollen sie wissen, ob "item" eine globale/member var ist, wenn sie nicht fragen? Woher wissen sie, welchen Typ er hat? Wissen sie überhaupt, ob die Klasse eine FindControl-Methode unterstützt? Was ist mit dem Rückgabetyp von FindControl?

Ich weiß allerdings nicht, wie viele Hochschulen Linq unterrichten, also sollten Sie diesen Teil vielleicht streichen.

0voto

the happy moron Punkte 473

Haftungsausschluss: Ich habe einen 4-Jahres-Abschluss und ein Jahr professionelle Java-Erfahrung.

Die ersten beiden Fragen sind recht einfach und wenn ein Kandidat keinen besseren Ansatz sieht, würde ich vermuten, dass er im Unterricht nicht aufgepasst hat ;-)

Die meisten der bisher vorgestellten Antworten auf die zweite Frage verändern das Verhalten der Funktion. Die Funktion könnte im ursprünglichen Code sehr wohl zweimal ausgewertet werden, obwohl ich nicht sagen kann, ob dies die Absicht der Funktion ist. Nebeneffekte sind wichtig.

Ich selbst würde die erste Funktion wahrscheinlich einzeilen.

Die Fragen sind ziemlich sprachunabhängig, aber nicht bibliotheksunabhängig, was meiner Meinung nach ebenso wichtig ist. Wenn Sie speziell nach .NET-Kenntnissen suchen, schön und gut, aber ohne Google könnte ich Ihnen nicht sagen, was ein ESLinq.DataContext ist, und meine Antwort auf die dritte Frage leidet entsprechend. So wie sie ist, ist sie für mich fast unverständlich.

Ich denke, man muss auch darauf achten, wie man die Fragen stellt. Es gibt nichts falsch über die ersten beiden Methoden an sich. Sie sind nur etwas ausführlicher, als sie sein sollten.

Ich würde ihnen einfach das Blatt vorlegen und fragen: "Was haltet ihr von diesem Code?" Machen Sie es offen, so dass die Diskussion nicht eingeschränkt wird, wenn sie die Fehlerbehandlung/Protokollierung/Kommentierung oder andere Dinge ansprechen wollen.

0voto

Jonathan Leffler Punkte 694013

Ich bin kein C#-Programmierer. In Q1 scheint es die nicht deklarierten Objekte dmxdevice und item zu geben, was mich verwirrt. Allerdings scheint der Rest des Codes sehr verworren zu sein. In Q2 ist lsvnotificationList nicht deklariert, und es ist mir nicht klar, warum ein Test mit ! und der andere mit == 0 abgekürzt wird -- aber die Tests könnten mit || kombiniert werden, so scheint es. In Q3 ist lsvnotificationList wiederum nicht selbstverständlich deklariert. Im Übrigen scheint es sich um eine Datenbankabfrage mit LINQ zu handeln. Ich würde zumindest erwarten, dass dies in eine Funktion integriert wird, die die versteckte Feld-ID transparenter validiert. Aber wenn Sie andere Ideen haben, nun... ich bin immer noch kein C#-Programmierer.

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