批判下微软的sql面试题
在网上有不少求解微软的几道sql面试题:
1. 1亿条记录写入时间是多少?
2. 如果在4亿条记录里面有完全重复的记录,该怎样剔重?
3. 如果只有10万条重复,你的算法大概是什么样的效率。
4. 从一张表删除10条记录,同时把这10条记录插入另外一张表中,该怎么做。
5. 关于A表3条记录,B表5条记录,左连接的最大最小数据数和内连接的最大最小数据数。
6. SQL Server 2008及2005与之前版本的区别及新功能新特性有什么?
不巧的是我也被问到过几道,后来在网上搜索时才发现有人在网上发问求解,下面也有跟帖解答,我好后悔啊,咋没搜一下呢……
好多人都说这几道题问的好有水平,但是我却是要“批判”下,主要是发泄下心中的不满,如果你不爽请跳过,我不打算跟谁挣什么,我也没那水平。
1. 1亿条记录写入时间是多少?
批:第一道就很坑爹,这时间谁知道啊,这跟太多因素有关了,不同的cpu,不同的内存,不同的os,不同的硬盘,结果肯定不一样啊。而且同一台服务器,相同的内存使用率,相同的cpu使用率,往相同的表插入相同的1亿笔记录(如果可以)谁能保证时间是一样的啊,这明显没有答案嘛,我说1天,10天谁又可以果断的跟我说是错的?
2. 如果在4亿条记录里面有完全重复的记录,该怎样剔重?
批:考的是row_number()吧?但是所有的数据库都支持这个函数吗?sql2000支持不?用临时表为什么不可以?我还想问4亿那么多,你sql server受的了吗,我想很少有用户有上亿的数据会选择sql server,至少要是我就不选。
3. 如果只有10万条重复,你的算法大概是什么样的效率。
批:这大概要分析过后才知道,谁知道正确的算法对应的效率是多少?偏差会是多少?请告诉我,不胜感谢。
4. 从一张表删除10条记录,同时把这10条记录插入另外一张表中,该怎么做。
批:是考output子句吧?我先插入再删除可以不?我用trigger可以不?为什么output就是正确答案?sql2000支持不?
5. 关于A表3条记录,B表5条记录,左连接的最大最小数据数和内连接的最大最小数据数。
批:我承认一看到这个题太想当然了,不过有几个会那么猥琐的在INNER(LEFT) JOIN xx ON 1=1 类似的语句,我答不好是我水平不行,同时也说明我不够猥琐。
6. SQL Server 2008及2005与之前版本的区别及新功能新特性有什么?
批:很简单我不知道。我记得刚毕业哪会有个面试官还问过我vs2003和vs2005有什么区别,我记得当时我给的答案是界面漂亮了。如果人家一开始就用的是sqlserver 2008,人家有必要去了解它和sqlserver 2005的区别吗?只要知道它现在功能不就完了?如果非要我答,我估计也只是说SSMS有智能提示了,SSAS和SSIS 一些操作界面变了,具体了就记不清楚了,我也没兴趣去记清楚。记得sql server 2008刚发布的时候讲得最多是FILESTREAM,我也没用过也没去了解,讲了,如果他再继续深入问下去反而不好。
好了,“批”完了。
第一次发首页,希望不要被批的太狠才是。