现在程序员找工作,算法题面试必不可少。要说数据结构 + 算法的知识,或者题目,在实际工作中能用到多少,我确实是绝大多数时候都用不上。

一些简单的数据结构,平时一直在用,几乎都是基本操作。一直在用,也就非常熟悉,如果要考算法题,也没有什么区分度。

相对复杂的数据结构,比如图,偶尔面对一些特定的问题,确实能用得上。比如,在一门课上做数据可视化,确实需要用到图算法。但是无外乎也就是比较经典的案例,比如遍历图,权重图,最短路径。然而,现在很多算法题都会在这些题目上面加各种变种,增加一些不必要的难度。说白了也就是为了区分度。卷啊卷啊,越卷越难。

数据结构与算法,熟悉最常见的那几个,熟悉最基本的接口定义,最典型的应用,就够了。按照数组链表栈队列树图字符串的大致顺序,等到了 Dijkstra,KMP 什么的,就可以停了。

当然如果是真的有兴趣,深入钻研当然没问题。但是,为了刷题,是真没太大必要。

所以,对我自己来说,刷算法题的意义就是为了找工作。然而,这样的话,确实很难有动力。

积累实际的项目经验,明显更加重要。

所以,如果公司面试是 take home project,还比较合理。

做出一道题的感觉确实不错,但是远没有完成一个项目,可以让更多的人用上感觉好。

而且平时和工作内容是完全不同的侧重。如果又要考算法又要准备工作经验,很难应付过来。