每年校招的季节总会有这种讨论,有人觉得考算法题没意义不如考实战考项目考 XX 。有人大学的时候做了很多个网站写了很多项目然而就是做不出这些“没有意义”的算法题拿不到 offer ,有人觉得太简单做算法题区分度不大。
先来看一下,在大公司来说,程序员日常的开发工作是怎么样的。就拿腾讯来说,比如你的职位是 qq 的后台开发,那么你的日常开发语言是 C++,你日常的工作是维护一大堆已经上线的用 c++写成的 cgi 和后台的逻辑 server ,有新需求的时候用 C++去开发新的逻辑 server 和 cgi 来实现这些功能。而这其中, cgi 有现成的库,逻辑 svr 也有现成的库,存储方面用公司内部开发的 CKV 或者其他组件,它们有专门的运维团队来维护,其他像发布数据统计日报等全部都有现成的组件。你只需要把产品的逻辑组织好填到框架中就行。
那么你工作之外接触的其他技术哪部分跟你工作中用到的东西有关系?你开发网站用的 php/python ?或者是做存储用的 redis 和 mysql ?甚至更时髦的 docker ?
事实就是,越成熟的大公司,内部有越多的内部组件内部系统,你在里面工作,你不需要担心应该采用什么数据库用什么语言什么发行版的 linux ,你只需要选择现有的组件设计好架构组织好代码就足够。
那么回到面试题目这个问题上,特别是校招面试上面,假如一个应届生非常聪明和刻苦,每天都是专研计算机课程的专业课程(算法、编译器、 os 、 etc.),里面的每个算法都倒背如流,甚至能在一场面试内写个 LR1 的 parser 算法出来,那么你问他一些实际项目是考察不出他的潜力的和实际的学习能力的。而对于一个没怎么学过算法,但是做了几十个外