当前位置:  开发笔记 > 编程语言 > 正文

这些面试问题对初学者来说太具挑战性了吗?

如何解决《这些面试问题对初学者来说太具挑战性了吗?》经验,为你挑选了7个好方法。

所以我今天只采访了两个人,并给他们"测试",看看他们的技能是什么样的.两人都是入门级申请人,其中一人实际上还在上大学.申请人都没有看到以下代码有任何问题.

我这么做,显然或者我不会选择那些例子. 你觉得这些问题对于新手程序员来说太苛刻吗?

我想我也应该注意到他们都没有多少经验与C#...但我不认为这些问题与语言有关.

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

itsmatt.. 35

我通常不会在某个职位的面试中抛出代码并说"出了什么问题?",主要是因为我不相信它真的让我觉得是最好的候选人.面试有时会有压力,有点压倒性,编码员并不总是在他们的A级比赛中.

关于这些问题,说实话,我认为如果我不知道C#,我就会遇到问题3的问题.问题#2也有点时髦.是的,我得到你想要的东西,但是如果想法是BindlistviewNotification()应该被调用两次呢?目前尚不清楚,有人可能认为没有足够的信息.问题1很容易清理,但我不相信它甚至证明了没有C#背景的入门级开发人员的任何东西.

我想我宁愿通过他们如何解决问题(用伪代码或他们熟悉的任何语言)来讨论我并从中评估它们.但是,只是个人意见.



1> itsmatt..:

我通常不会在某个职位的面试中抛出代码并说"出了什么问题?",主要是因为我不相信它真的让我觉得是最好的候选人.面试有时会有压力,有点压倒性,编码员并不总是在他们的A级比赛中.

关于这些问题,说实话,我认为如果我不知道C#,我就会遇到问题3的问题.问题#2也有点时髦.是的,我得到你想要的东西,但是如果想法是BindlistviewNotification()应该被调用两次呢?目前尚不清楚,有人可能认为没有足够的信息.问题1很容易清理,但我不相信它甚至证明了没有C#背景的入门级开发人员的任何东西.

我想我宁愿通过他们如何解决问题(用伪代码或他们熟悉的任何语言)来讨论我并从中评估它们.但是,只是个人意见.



2> Ed S...:

我是一名初级程序员,所以我可以尝试一下:

    "活跃"是不必要的:

    CheckBox chkactive = (CheckBox)item.FindControl("chkactive");
    dmxdevice.Active = chkactive.Checked
    

    您应该使用安全转换来强制转换为CheckBox对象.当然,你应该能够通过变量名找到复选框:

    CheckBox chkactive = item.FindControl("chkactive") as CheckBox;
    

    第二个功能可能更简洁:

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

只有时间为这两个人,工作是呼唤!

编辑:我刚刚意识到我没有回答你的问题.我认为这根本不复杂.我无论如何都不是专家,我可以很容易地看到这里效率低下的问题.但我认为这一般是错误的做法.在我看来,这些语言特定的测试并不是很有用.试着了解他们如何攻击和解决问题.任何能够通过测试的人都能轻松掌握一门语言,并从错误中吸取教训.



3> Tony BenBrah..:

我认为你正在测试错误的东西.你显然正在寻找一个C#程序员,而不是一个才华横溢的程序员(不是说你不能成为一个才华横溢的C#程序员).例如,这些人可能是伟大的C++程序员.C#可以学习,智能不可以.我更喜欢在面试中询问代码,而不是用特定语言呈现代码(例如:用任何语言实现ArrayList和LinkedList).
当我今年早些时候在寻找3位程序员时,主要在C#,Java,PL/SQL,Javascript和Delphi中工作,我寻找C/C++程序员,并没有失望.任何人都可以学习Java,并不是每个人都有良好的架构感,数据结构和对新的复杂问题的把握.C++很难,所以它可以作为一个很好的过滤器.如果我在这个Java代码中找到了查找错误,我就会丢失它们.
顺便说一句,我是团队负责人,已经编程了20年,有几十个按时和按预算开发的大型项目,我不知道第2或第3个问题出了什么问题,只是熟悉C#,当然不是Linq,不是我无法学习它......我在几分钟后想出来了,但不会指望最近的毕业生能够掌握它,问题3中的所有LINQ代码都是分散注意力,隐藏真正的问题.



4> Orion Edward..:

你觉得这些问题对于新手程序员来说太苛刻吗?

是的,IMO他们太苛刻了.

申请人都没有看到以下代码有任何问题.

    虽然有很多"可能的问题",比如没有检查空指针,转换等,但似乎没有任何"实际问题".(例如:给出合理的输入,程序看起来会实际运行).
    我猜想新手程序员会挂断电话.

    由于LINQ是相当新的,并广泛使用还没有,它会去的方式在你的新手之首.

    什么是ESLinqDataContext?如果人们不知道你的对象是什么或它的行为如何,那么他们如何知道它是否被正确使用?

    评估代码的质量和讨论

你只是从学习类似于你面前的代码的合理经验中学到了很多东西,比如无效的强制转换异常(更不用说能够判断和评论'代码质量')了.

也许我误解了,但对我来说,根据定义,"入门级"的位置并没有对先前经验的期望,因此根据需要经验的标准对它们进行评级似乎不公平.



5> Kyle Cronin..:

我不是C#程序员,所以我不知道BindlistviewNotification做了什么,但改变了

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

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

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

改变功能!如果IsPostBack为false,则执行foo.如果lsvnotificationList.Items.Count == 0则再次执行foo .修改后的代码只会执行一次 foo .

您可以争辩说BindlistviewNotification可以多次执行而没有副作用,或者IsPostBack永远不会是false并且lsvnotificationList.Items.Count同时等于0,但这些是依赖于语言和依赖于实现的问题,无法使用给定的代码解决片段.

此外,如果这是一个"应该"在面试中被捕获的错误,那么这根本不是语言不可知的.没有什么可以告诉我这应该是一个错误.



6> Jason Baker..:

作为一个新手,我希望雇主更关心我的思维过程,而不是答案是否"正确".我可以想出这些问题的一些答案,但它们可能不对.:)

所以说,我认为你可以解决这些问题,但你应该对"正确"的答案更加自由.

只要这些条件明确,我认为得到一张没有任何想法的空白表是一件坏事.这意味着他们要么真正认为代码是完美的(我们知道这几乎不是真的),要么太羞怯以分享他们的想法(这也是一件坏事).



7> FlySwat..:

我不认为1和2太难了,#3需要对数据绑定和LINQ如何在.NET中工作有一个很好的理解,所以对入门级人员来说可能有些困难.我认为这些对于具有一定.NET经验的初级开发人员来说是相当不错的问题.

对于它的价值,我的笔记:

问题1:

使用整数作为布尔值

对findControl没有空检查

冗长的冗长

我的修订版:

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

冗长的冗长

如果不是回发,则数据绑定将发生两次,并且没有要绑定的项目.

我的修订版:

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

用获取e.Item.DataItem替换索引的循环;

将nullchecks添加到findControl调用.

切换到TryParse并添加默认的id值.

添加了更好的错误处理

记录一些主要的架构问题,为什么要从前端查询数据库?那些LINQ查询也可以进行优化.

为什么不检查列表项集合中的重复项,为什么不在以后通过单个提交批处理所有更新?

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有