小议 - 来自《XX时代XX公司》的笔试编程题目

经过几天的雾霾,魔都终于放晴了。哥投了几天的简历,希望找到一份.NET开发方面的岗位。也收到了几个面试邀请。这不应Ge老师的要求,选了个良辰吉日,带着身份证,学位证怀揣着2B青年的梦想来这个XX公司面试。我答应Ge老师的电话邀请的一个重要原因是该公司位于北京广播电视大学学习中心。俺们是农村来的,但也听过北京广播电视大学的大名,做为二十六七仍单身的我,能有机会和广播电视大学的众美女工作在同一楼层,自然是求之不得,心情那个爽。

大概早上9点多,我进了9层906A室,一个漂亮的前台妹妹眼睛很亮,温柔的问:“您是来XX公司面色的吧?” 我说: "嗯". 又问简历带了吗?我说“没”,毕业证,学位证带了吗?我说学位证带了,毕业证如果你们要看,到时候再给你。她说好的。然后给了一张简历表,一张XX公司的笔试题目。共4道题目,对于年年拿奖学金的我来说,考考基础题当然是什么问题都没有。最后一题目是编程题,好久没写这些控制台程序了,看起来还是比较亲切。(题目是手写的,字很清秀,估计是XX公司觉得题量小,免得让人觉得忽悠忍,于是让一个可爱的妹妹后补上的。)

先把这题目分享给大家,大概是这样的:输入一个数n,然后将该数从1 ……n打印出来。格式如下:

然后我就分析呀,有点像等比公式,接着就按这个思路,求其行数,然后输出结果。看一下我分析的图:

有了思路,就来连连笔实现吧。

1. 用递归来求等比数列的通项公式 

 1         // 1. 分析数字,利用递归获取输入数的等比公式,然后求其行数
 2         public static int GetPowerValue(int n)
 3         {
 4             if (n < 0)
 5             {
 6                 return 0;
 7             }
 8             else if (n == 0)
 9             {
10                 return 1;
11             }
12             else if (n == 1)
13             {
14                 return 2;
15             }
16             else
17             {
18                 return 2 * GetPowerValue(n - 1);
19             }
20         }

2. 获取输出的行数

 1         // 2. 获取行数
 2         public static int GetColumn(int num)
 3         {
 4             int column;
 5             for (column = 0; column < num; column++)
 6             {
 7                 if (num >= GetPowerValue(column) && num < GetPowerValue(column + 1))
 8                 {
 9                     return (column+1);
10                 }
11             }
12             return -1; // 没有找到合适的行数,退出
13         }

3. 打印结果

 1        // 3. 打印结果
 2         public static void OutputTraingle(int num)
 3         {
 4             int column = GetColumn(num);
 5 
 6             if (column == -1)
 7             {
 8                 return; // 退出
 9             }
10 
11             for (int i = 1; i <= column; i++)
12             {
13 
14                 for (int j = GetPowerValue(i-1); j < GetPowerValue(i) && j<= num; j++)
15                 {
16                     Console.Write(j + " ");
17                 }
18                 Console.WriteLine();
19             }
20         }

4. 主程序

 1         static void Main(string[] args)
 2         {
 3             Console.WriteLine("\n===== Output traingle =====\n");
 4 
 5             Console.Write("Please enter the test number: ");
 6             int num = Convert.ToInt32(Console.ReadLine());
 7             
 8             OutputTraingle(num);
 9 
10             Console.ReadKey();
11         }

5. 测试结果

答完这张4道题目前后用了40~50分钟吧,然后把题给了漂亮的妹妹。妹妹说,我找面试官给你面试,让我先等一下。

大概过了5~6分钟,一个戴着眼睛,皮肤黑黑的类似阿三的男的过来了,他很不客气的板着个脸坐下了,然后指点示意让我坐下。一边埋头看我简历一边让我自我介绍一下,接下来我就自我介绍了,当然我可以肯定的是他让我自我介绍的目的,无非是好在这段时间内看我的简历,确切的说看我的工作经验。(这里要说一下:我目前从事的微软外包的开发测试工程师,工作经验主要是用C#写测试代码,涉及的技能有C#,SQL Server,因为工作中也涉及到UI方面的验证,所以对前台的JS, JQuery,Ajax都用得比较频繁,自己也是杨中科老师Asp.net网络视频爱好者,自我评价:这种人才到那找!) 他问我有没有纯开发经验,我说什么较“纯”,你Y的意思从项目启动到项目结束都走一遍,就较“纯”吗?我现在的老领导,在外包公司从事开发工作五、六年也没有把整个项目都走一遍。他算不算“纯”开发人员?!然后我很诚实的回答,没有。

然后那个阿三又说你期望工资是多少?我说XXK,他说你的期望离我们的要求还是有点高。然后我又说我目前的工资是XK,工作半年多涨(XX-X)K要求不是过分呀。最后确认了好几遍,我急了就问你们能给多少,那个鸟人说连你目前的工资都给不到。我X,你Y的忽悠我啊。让我上班时间跑你这面试!

后来哥就写了这篇笔记,一来是分享一下自己找工作的经历,二来是提醒那些所谓的面试官别把自己太当回事,出了你的窝,你已一样。嘚瑟个毛,鸟人!

 

posted @ 2014-03-13 16:52  东方不败00  阅读(657)  评论(1编辑  收藏  举报