用惯了ORM,居然不会写分页SQL了

    最近准备找新工作,于是下午请了假,去上地软件园一家国内大型软件外包公司去面试架构师,从国贸到面试地点,坐地铁足足走了一个半小时,终于到了前台,联系了HR小姐,她声音都嘶哑了,然后叫了一位同事带我去一个小会议室等待技术面试官。

    面试官一进来,就跟我说,“刚才还在看你的PDF.NET框架,从网上下载了你的示例程序,我也是做ORM的,自己把NBear进行了深度改写,来,给我讲解下你的框架是怎么设计的...”。一听说都是搞ORM的,自然有共同语言了,我跟他说PDF.NET框架有3大特性:

1,数据表单控件;

2,ORM组件;

3,SQL-MAP组件;

然后给他详细说明了这几个东西的设计思想。

    说完了ORM,面试官对我的内存数据库很感兴趣,他说他们目前正在搞这个,想听听我的设计方案,刚好他也打开了我的《PDF.NET开发框架“内存数据库”架构设计 》这个页面,于是我就把内存数据库的原理跟他说了下,不过他更关心内存数据库支持分布式缓存和如何将数据写入数据库的问题,我强调说:内存数据库是一个整合的解决方案,目标是脱离RDBMS的限制,利用了.NET4.0的缓存管理,并封装了缓存接口,以便支持第3方缓存或者NoSQL数据库

    之后,又问了WCF方面的问题,是否使用Remoting,我说有了WCF本身已经封装了这个通讯方式了,WCF不仅可以使用HTTP,TCP,也可以使用SMTP作为通讯管道,并给他举例说了我们一个银行项目,采用邮件作为WCF的通讯管道,完成银行内网与我们公司局域网的信息交互问题(详细可以看《唯一不变的就是一直在变”--“数据”的华丽“变身术” 》)。

    其它又问了些SOA,MDA方面的问题,我也简要回答了,并举了例子,这里也就不复述了。

    最后,他问我PDF.NET框架的分页是怎么做的?我说框架会根据你输入的原始SQL语句,进行词法分析,自动组合成当前页的SQL语句(详细可以看《基于SQL词法分析的多种数据库自动分页方案 》),你已经下载了源码,可以看看。他说我不看了,我这里有一个数据库,你写给我看看。

    一听说还要这种方式来面试,心里就有点不舒服,另外用别人的笔记本键盘,非常不习惯,更加剧了我的焦躁情绪,头脑一片空白,不知道该怎么写了,但还是按耐住情绪,试着敲了一行SQL,结果还执行不过,这个场面,相当的尴尬,相当的难堪......

    楼主不是PDF.NET开发框架的作者么?ORM框架的编写者,居然不会写分页的SQL?会不会是李鬼?

    我的简历上写着自己有这个框架,的确为自己的在其它公司的面试增色不少,至今已经拿到4个Offer(建国路、国贸、望京、上地)了,没想到反而因为这个在这里遭遇滑铁卢,真是成也萧何,败也萧何阿,很是为自己暴汗一个!

    说实话,自从有了这个框架,真的很少写SQL了,那个分页SQL方案都是2006年的事情了,时间长了的确不记得了,于是我就直接说,时间很长了,自己不会了。

    看着我尴尬的样子,面试官又准备让我现场写个10进制转3进制的程序,但这个时候我毫无心情,直接拒绝了。

    下面的面试过程已经没啥意思了,我主动放弃了他的继续面试,于是我们又聊了些工作生活中的问题,他说他现在女儿都11个月了,但陪伴女儿的时间1个月都没有,虽然全家人都在北京,这让我很是震惊,这面试官要么是个工作狂,要么就是被外包公司变态的工作制度逼迫的,心里更加滋生了对软件外包工作的厌恶感,看来至少对我来说,外包不是适合的,之前本着"只要出价高哪怕做外包"的想法去面了几家外包公司,现在这个想法已经灰飞烟灭了!

    回到家,都已经8点半了,吃了饭,陪儿子玩了一小时,然后给他洗脸换衣服,给他讲了一小会儿故事,就让他妈妈哄他睡觉了,突然觉得,有时间陪儿子,是多么幸福的事情!

    之后,我打开电脑,在自己的Northwind数据库上,花了不到1分钟写出了那个分页SQL,不是今天面试官说的In,Not IN分页方式,也不是通常的双OrderBy方式,这是使用于千万级别数据分页的SQL语句:

--orderid 1:1028 10:10257 20:10267 30:10277
--查询第20-30条
select top 10 * from Orders where OrderID> 
(select max(OrderID) from 
  (select top 20 OrderID from Orders order by OrderID ASC ) t0
)
order by OrderID ASC

PDF.NET开发框架对于SQLSERVER中,有整形主键字段的表,采取的就是这个高效分页方案。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏安恒信息

携程曝重大安全漏洞 客户信用卡信息或遭泄露

3月22日,乌云平台连续披露了两个携程网安全漏洞,漏洞发现者称由于携程开启了用户支付服务借口的调试功能,导致携程安全支付日志可被任意还可读取,日志...

30780
来自专栏漏斗社区

专属|Spectre漏洞诞生新变体

又到了熬夜看球喝啤酒的快乐日子了!昨晚,有多少小伙们跟斗哥一样,顶着黑眼圈看完了世界杯首场比赛!

14640
来自专栏知无涯

Ubuntu 15.10 中文桌面版/服务器正式版下载 - 华丽免费易于入门的 Linux 操作系统

710100
来自专栏编程一生

架构师之路--从业务角度谈缓存的选型

20550
来自专栏区块链

啥?Metasploit里面也有菜刀

利用msf破解一句话木马 0x01 前言 本文为智者楚轩原创文章 事情要从下午说起,同学突然叫我说,xxx,我扫到一个老师在电脑上自己搭建的服务器,上面有他c盘...

43570
来自专栏星汉技术

计算机基础(二)

26080
来自专栏工科狗和生物喵

总算搞定了域名(好吧,我一开始忘了)

正文之前 我是从大二下学期开始入程序员这个坑的。那个时候恰逢遇到了我计算机方面的启蒙学长,然后他带着我走了一段很长的路,其中就包括网站建设这个方面。我前端后端都...

773130
来自专栏闰土大叔

代码里注释写太多,会挨打吗?

前几天,有个同行朋友在我的微信上留言,问我项目代码里注释写太多会挨打吗?顺手还给我甩了一张截图,上面密密麻麻的全是手工注释。

59440
来自专栏猿湿Xoong

怎么用TWRP刷LineageOS拯救我的Android手机?

1.1K40
来自专栏智能大石头

MF前传——探索者二号简介

    因为探索者一号供不应求,远超预期,并且我们自己设计制造的成本太高,所以没有再次生产。而是选择较高性价比的第三方STM32开发板作为MF学习板,是为探索者...

10600

扫码关注云+社区

领取腾讯云代金券