Java实习生(一) EXCEL处理几百万数据?你没事吧?

128 阅读3分钟

面试官:几百万数据为什么要放到excel里面呢?

刚下班,让我先说说今天发生的事情。我一下午面试了一个实习生,结果他竟然给我怼回去了。我只是想考察一下他解决问题的能力,问了个超级简单的问题,他居然答不上来,还骂了我。我真的被他气到不行,你们来评评理,这是怎么回事?

我看他的简历,写满了牛逼的经历,曾在大厂实习过,还搞过京东那些高并发和分布式解决方案。

面试官:先让你做个自我介绍吧。

实习生:他打了个招呼说:“面试官您好,我明年才毕业,但我想尝试一下贵公司的架构师职位。之前,我在几个大厂实习和工作过,深入研究了各种高并发解决方案。”

面试官:唉,稍微等一下。我可不喜欢听你吹牛逼,你都还没毕业,就想面试架构师,而且你说自己精通高并发解决方案,这么多高并发场景难道都是你在经历吗?这完全是空想。我是一个务实的人,你吹牛牛可不行。我问你一个实际问题,你如何实现一个包含500万条数据的excel表格的导入和导出?

(这小伙子,等我说完,眨巴着眼睛看了我一眼)

实习生:我不会。

(我轻蔑地看着他)

面试官:你不是自己说自己牛逼吗?怎么这种实际问题都不会呢?年轻人不懂分寸啊。

(他突然伸手拦住我,反问道)

实习生:那你告诉我,为什么要把这么多数据放到excel里面呢?

(其实我也不知道,那天我去面试别的公司的时候,别人问我,我也不会,所以才问他,但我又不能吃亏)

面试官:这不就是一个实际场景吗,为什么还要问为什么呢?

实习生:那你把这么多数据放在一个Sheet页里面吗?

面试官:当然是啊。

(小伙子突然笑了出来)

实习生:你知道为什么我不会吗?不是因为我真的不会,而是因为我不想回答这种无聊问题。首先,你都不知道excel 2007之后的版本,单个Sheet页最多只能放104万行数据。那你500万条数据放哪?就算把它们分开放在几个Sheet页,我要问的是,你这500万条数据是什么样的数据?文件有多大?你的服务器配置够吗?有没有并发量?这些都是需要考虑的问题。问题的关键不在于文件太大导致内存溢出,或者为了提高效率而采用批量插入,或者为了保证数据一致性而使用长事务。现在一些框架已经通过流式读取来避免这些问题,但这些都不是关键。关键在于,为什么要把几百万条数据放到excel里面呢?是为了查看吗?你能处理得过来吗?还是为了数据分析?这不是很蠢吗?还是为了数据迁移?那我就更不理解了,为什么不使用ATR的方案呢?有很多免费的选择啊,比如Datax、Consul,它们都支持异构数据同步,为什么不用呢?我也不推荐使用excel进行大量数据的导入导出。对于简单的数据,难道使用csv格式不好吗?文件大小小,而且导入导出效率比excel高得多。所以,问题在于选择合适的方案解决适合的问题,而不是嘴上憋住一个问题。

(说完,他站起身来,一把夺走了我的简历)

实习生:你这样的人还叫务实,真是可笑。

(然后他气呼呼地走了,我一个人在会议室发呆)

本文使用 文章同步助手 同步