20160909阿里校招数据研发工程师笔试总结

9.9晚上有幸参加了阿里的数据研发工程师在线笔试,开阔了我的视野,也给我一个很大的提醒,学艺不精,权当是一次学习了吧。不管怎么样,非常感谢该团队。

因考试要求不可泄露相关信息,故在此只能将题目的大致要求表达出来,大家YY一下就知道了:

一共有3道编程题:

1、题目建议使用Hive,但本人没学过,故使用MSSQL解答。
考察SQL的开窗 分区 排序
下面举一个相关例子:
1>准备工作:


USE db_TestSample
GO

IF OBJECT_ID('dbo.T_PARTITION','U') IS NOT NULL
DROP TABLE dbo.T_PARTITION;
GO

--CREATE TABLE
CREATE TABLE dbo.T_PARTITION
(
    ID INT IDENTITY(1,1)
    ,DEPARTMENT NVARCHAR(20)
    ,DATA INT
);
GO

--INSERT DATA
INSERT INTO dbo.T_PARTITION( DEPARTMENT, DATA )
SELECT N'P1',0
UNION ALL
SELECT N'P1',1
UNION ALL
SELECT N'P1',2
UNION ALL
SELECT N'P2',2
UNION ALL
SELECT N'P2',4
UNION ALL
SELECT N'P2',1
UNION ALL
SELECT N'P3',2
UNION ALL
SELECT N'P3',5
UNION ALL
SELECT N'P3',1
UNION ALL
SELECT N'P3',2
UNION ALL
SELECT N'P4',2
UNION ALL
SELECT N'P4',10
UNION ALL
SELECT N'P4',13;
GO

--SELECT *
SELECT * FROM dbo.T_PARTITION;

查询结果:
20160909阿里校招数据研发工程师笔试总结_第1张图片

2>查询的SQL:

--PARTITION
SELECT *
FROM
(SELECT ROW_NUMBER() OVER(PARTITION BY TP.DEPARTMENT ORDER BY TP.ID) AS RN
      ,TP.ID
      ,TP.DEPARTMENT
      ,TP.DATA
FROM dbo.T_PARTITION AS TP
) AS T
WHERE T.RN <=2;

查询结果:
20160909阿里校招数据研发工程师笔试总结_第2张图片

2、算法考察:提取 替换

C#版本为:

using System;
using System.Text;

namespace MyAnswer
{
     public static class Answer
    {

         //返回inp中含有的*的个数,并将字符串中的*放在最前面且保持原字符串中非*字符的顺序
         public static int GetCount ( ref string inp )
         {
             int ret = 0;
             int count = ret;
             StringBuilder strBuilder  = new StringBuilder ( );

             for ( int i = 0 ; i < inp.Length ; i++ )
             {
                 if ( inp [ i ] == '*' )
                 {
                     count++;
                     strBuilder.Append ( '*' );
                 }
             }
             strBuilder.Append ( inp.Replace ( "*" , string.Empty ) );
             inp = strBuilder.ToString ( );

             ret = count;
             return ret;
         }
     }
}

输入:123**4
返回:2
处理后字符串:**1234

3、MapReduce算法简述:给定一个数据关系,要求简述其算法过程。
本人才疏学浅,没有学过MapReduce,所以简单写了一些,在此就不班门弄斧了。

总结完毕,留作纪念与警示,也希望对大家有用,谢谢您的阅读。

你可能感兴趣的:(mssql)