面试题有点难

    今天到一个公司去面试,面试的技术人员不在,接待的美女就叫我填了一份个人信息表,拿了两套题给我,一套是初级,另一套是中级,叫我选择一套做,我傻兮兮的问:可不可以两套都做了?她说也可以,我满怀信心的开始做题,开始做初级的,前面选择题还比较简单的,然后是程序阅读题,嗯,跟学校期末考试题都差不多嘛,没多大难度嘛,只是有点云里雾里的而已。

    最后是写代码的题了,

    第一题:用一句Sql语句实现查找数据库里一个表的第31条至40条数据,已知表的主键Id为自增字段,但Id可能不连续?==!,这个好熟悉的题,应该不难嘛,但我为啥写不出来呢?我记得我写的是:

select skip 30 * from Tb_Name top 10

说实话有很久很久没写Sql语句了,用EF操作久了完全不知道Sql语句是咋回事了,正确的写法:

select top 10 * from (select top 40 from Tb_Name order by Id)a order by Id desc

    第二题:一列数规则如下:1,1,2,3,5,8,13,21,34。。。 。。。求第30位是多少,要求用递归算法实现?

    掰了很久。。。,不对啊,我应该写得出来的啊?再想想,这个题一点都不难,再想想。。。,MD,啥题嘛,做都做不来,作为一个技术性人才,我严重鄙视出这道题的人,算了,不做了,回去再练练。

我一直弄不懂的就是递归算法,以前开始学程序的时候,书上有一道经典的题:汉诺塔问题。可我一直没搞懂!

正确的写法:

    public class MainClass   
    {   
        public static void Main()     
        {   
            Console.WriteLine(Foo(30));   
        }   
  
        public static int Foo(int i)   
        {   
            if (i <= 0)   
                return 0;   
            else if(i > 0 && i <= 2)   
                return 1;   
            else return Foo(i -1) + Foo(i - 2);   
        }   
    }   

 

最后看了一眼中级题,不会,走了!

 

posted @ 2014-05-15 01:01  博伊卡  阅读(309)  评论(0编辑  收藏  举报