如果业界中不用高级算法和数据结构,那为什么还要学? - 博客 - 伯乐在线



如果业界中不用高级算法和数据结构,那为什么还要学? - 博客 - 伯乐在线

下面是来自 Jerason Banes 的回答,1.4 K+ 顶

恭喜你!我刚把你的简历扔到"不要"的那堆中去了,嘴里还碎碎念叨着,「为什么怎么会有你这样的小孩,业界出什么问题了,我为什么要重新训练每一个我招来的工程师」。你也很可能认为数据库很神奇,只要再丢一个索引到里面,就可以解决你的所有问题,对么?

我为什么要这样做?我是一个脾气暴躁的老头,喜欢随心所欲得给应聘者设置难题吗?

事实上,答案正好相反。如果你学习过,而且是一名接受过训练的工程师(注意我一直使用这个词),你会发现面试过程相当的简单。我经常问一些很简单的问题,例如「写一个FizzBuzz程序」,「JavaScript是函数化语言?」。电话面试中有几个超级难的问题,我并没有问。因为这些问题会吸引你学习,并为我工作。

如果我不是在设置难题,我到底是做什么的?

我正在设计一个系统,可以基于千兆兆(10的15次方)字节规模的数据提供分析结果。由于 Google 让每个人相信,他可以在全网查找他输入的东西,所以我也必须要在自己的网络应用程序中提供类似表现。

要做到这个,异常困难。我找了一下  EMC SAN 磁盘规格说明,上面都告诉我没有足够的吞吐量。虽然我可以寻求一些无限带宽的昂贵硬件,但是我不为 Google 工作的,我预算有限啊。我需要找到一个方法,利用一堆廉价货,让它们在一起来提供交互速度。一个超级强大的设备不能做到的,但一堆平行 IO 却可能实现。

我现在所要做的,就是要求我的工程师们对这些结构写查询代码……卧槽,刚才有个童鞋尝试把整个代码加载到内存中,结果把整个结构的栈搞挂掉了。我们回退了他的代码。他说这代码在他的测试环境上是可以工作的,他不理解为什么会这样。我摇摇头,把他拉到白板前,给他解释内存背后的原理,内存就像数据的蓄水池,容量是有限的。一个直管的通过量(数据流),只受限于时间(数据移动的速度),而不是容量。

他说他明白了,以后会避免犯类似的错误。嗯,他可能会避免,也可能还会犯错。有智力解决复杂计算机问题的人凤毛麟角。大部分人看上去有机会,但做到的只是极少数人。特别是这个世界还有很多愚蠢的想法,比如"为什么我要学习数据结构和算法"之类的?

我最终可能会炒掉那个工程师。这相当糟糕(译注:艰难的决定),因为在其它方面我还是很喜欢他的。他只是不适合这个工作。

你要知道,你对编程的理解,会体现在你自己选择的工作态度上。毕竟这些不是有趣的工作,赚的也不是很多。你做的事情也不是真正重要的。

如果你觉得作一个低工资的程序员也还好,你最终会改行去做其它的事情,那你不用去学算法和数据结构。如果计算机科学真的吸引你,你知道该做什么。


Read full article from 如果业界中不用高级算法和数据结构,那为什么还要学? - 博客 - 伯乐在线


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts