日期:2014-05-17  浏览次数:20798 次

我出的一道面试题,95%的人写不出,大家看看是否太难
不得不说,招人很难,我接手公司招聘工作一年多了,但几乎招不到人,有4/5的人对面试邀请爽约,而剩下的1/5的人中又大多数发觉很不合适,好不容易觉得合适,最后还不来。我为了面试最初一共出了6道题目,后来感觉有点多,删掉了4道,后来还是觉得有点多,又删掉了一道,只剩这道题,大家别笑,在开始做题前我都在应聘者旁边图文声色俱全耐心讲解了如何解答:什么是链表?如何插入?如何删除?笔试者其实只需要按照我说的写一点代码即可,可事实上真正能完成这道题目的人我只遇到一个,大多数都交了白卷(时间大约20分钟),好吧,我把这道题目原原本本贴在这里,一个字不变:

----题目开始----

实现一个链表,要求各个节点的Name都不重复,若试图增加重复节点,就抛出异常,填写下面的Append方法和Remove方法的代码。


class Node
{
    public string Name{get;set;}
    public int Score{get;set;}
    public Node Next{get;set;}
}

class Link
{
    public Node Head {
        get{return m_nodeHead;}
    }
        
    public void Append(string strName, int iScore)
    {
        //Add a node: implement your code here 















    }

    public void Remove(string strName)
    {
        //Delete a node: implement your code here 












    }

    private Node m_nodeHead = new Node(){
        Name="_HeadNode",
        Score=0,
        Next=null};
}


----题目结束----

大家结合我前面说的情况,认为题目难度如何?也许你觉得代码风格上有点奇怪,是的,我曾经是Windows C++程序员,后来将Windows C++编程的风格带入.net开发中来,用得也挺好的。
笔试

------解决方案--------------------
搞.net的人至少90%都只能算是代码工人。
根本没学过或者没用心的学过基础课程。
所以造成了.net名声越来越臭
------解决方案--------------------
    我们当然学习数据结构,但是我觉得你应该考虑你们公司现在的需求,你要求应聘者做这样的题目,如果只是为了考验他们的数据结构学的好不好,我觉得没有必要;如果你们需求需要用到这些,那可以,这样的题目也不是很难,几乎是很简单的关于单链表的操作。
    现在的问题是大学里面学习了很多的关于数据结构的东西,但是参加工作之后很多的都没有用到。这些基本的东西也就似乎给忘记了,但是大体的思路还是记得的,你这道题很具体的要求应聘者写代码,似乎真的难住他们了。
    比如我前段时间就学习了单链表的东西,但是现在让我做这道题,我有思路,代码似乎真的写不出了。不过我可以参考文档什么写出来。很多的东西不是一定要熟记于胸的,知道思路查些文档就解决了。
------解决方案--------------------
坦白来讲,楼主这个题目出的挺好的,没有故意难为别人的意思。但是如果有人确实不知道链表是什么,你也可以向他解释一下,因为知道叫什么倒不重要,关键是得能写出代码。
------解决方案--------------------
引用:
不知LZ是做哪方面的
.net的List,Dictionary都已经封装好了,为啥非要把C++的东西搬过来

我觉得楼主主要是想考察一下面试者的基本功,因为这个题无非就是写两个循环而已。很多求职者说的天花乱坠,但是确实只会拖控件,所以用这个题可以稍微过滤一下。
------解决方案--------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NodeTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Link link = new Link();