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