品味《编程之美》 - cychai的专栏 - 博客频道 - CSDN.NET



早就在CSDN上看到孟岩推荐的《编程之美--微软技术面试心得》这本书,当从吴�手中接过来,看完序言,我就被吸引住了。

         开篇的《面试杂谈》用一个小故事让我对微软、对面试有了更深的了解。面试并不一定是用难题、偏题、怪题来考到对方,笔试和面试考察的都是自己在编程、解决问题、与人合作等方面的全面能力。

         网上经常流传着一些诸如"井盖为什么是圆的"、"海盗分金币"的微软的面试问题,现在再回想这些问题的时候,才明白它其实是更深层次地去引导发现问题,去分析问题和解决问题。

《编程之美》集中展示了高水平编程面试题目,它不仅仅授之以鱼,更是授之以渔。对每个问题都以启发性方式进行了权威详细的解答,并给出多种方法。和其他的讲述算法和数据结构的书籍不同,它不是讲解一些计算机和程序设计的理论知识,而是通过分析讲解实际生活中的一些问题,将其抽象为计算机程序设计问题,并找到最优算法。这种学以致用、举一反三的态度正是一个优秀的程序员所必备的。

在来微软之前,跟着老师一起做了企业的门户网站,总感觉做网站就是拖拖控件、使用提供的类,"实现"要求的功能,觉得大学里的数据结构、算法并不是那么重要。看到《编程之美》的实际的问题,想想当林春面试的时候,给我讲语言、运行时、SDK,当需要在数据量相当大的时候如何读取所需的数据,进行查询……我才明白在解决实际问题时,只有在可接受的时间或空间约束条件下的实现才是真正的"实现",这时就充分体现出基础的重要性,这些都是建立在良好的程序基础和逻辑分析基础上的,而微软的面试也必考C语言,我想或许也是基于此。

在刚看到"让CPU占用曲线听你指挥"的题目后,看完要求,本能的反应就是先Google一下,这是一种方法,但是对于学习而言,这并不是一种最好的方法。应该首先分析一下问题的所在,这也是这本书教给我,印象最为深刻的。关键不在于答案,而在于思考问题的方法。这时就使用到了"操作系统"这门课的内容,反映到程序中,不就是进程的相关知识吗?但是如何去实现,那就要查阅相关的文档,在第二种解法中,我们就可以看到使用.net framework performanceCounter对象,方便的得到当前CPU的使用率,这样的学习方法,更全面的了解一个对象,以后遇到此类问题也都会有一个思路了。

在"构造数独"的问题当中,更多的使用数据结构中的内容,设计什么样的数据结构存储数独游戏中的各种元素?如何得到可行解?真的感觉"书到用时方恨少",在学校学习数据结构的内容的时候,仅仅停留在一知半解的基础上,根本就没有做到活学活用,更别说用来解决问题了。

Learn how to learn, 是我最需要的。知识本身是没有价值的,只有把知识用来解决问题才能创造价值。

书中对题目的剖析,通俗的文字,巧妙的思路,简明的算法,严谨的数学分析,让我充分感受到"编程之美",也知道了自己距离真正的优秀的程序员还有很大的差距,正如沈向洋博士在序言所说"程序虽然难写,却很美妙","编程很辛苦,但是很有趣",Nothing replaces hard work唯有不懈的努力,才能尽情享受编程带来的快乐,享受思考的快乐。


Read full article from 品味《编程之美》 - cychai的专栏 - 博客频道 - CSDN.NET


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