为何很多有不少编程经验,技术能力不错的程序员,去心仪公司面试时却总是失败?至于失败的原因,可能很多人都没意识到过。
01想要通关面试,千万别让数据结构拖了后腿
很多公司,比如 BAT、Google、Facebook,甚至以技术作为支撑的中小型互联网公司,面试的时候都喜欢考数据结构、算法,让人现场写代码。
有些人虽然技术不错,但每次去面试都会“跪”在算法上,很是可惜。那你有没有想过,为什么这些大公司都喜欢考算法呢?
校招的时候,参加面试的学生通常没有实际项目经验,公司只能考察他们的基础知识是否牢固。社招就更不用说了,越是厉害的公司,越是注重考察数据结构与算法这类基础知识。相比短期能力,他们更看中你的长期潜力。
01稳固的基础知识,决定了你的高度
你是不是觉得数据结构和算法,跟操作系统、计算机网络一样,是脱离实际工作的知识?可能除了面试,这辈子也用不着?
可是你听说过技术过时,什么时候听说过算法过时,不仅没有过时,因为机器学习、大数据的要求,算法变得越来越重要了。
当然,也有很多人说,自己实际工作中根本用不到数据结构和算法。所以,就算不懂这块知识,只要 Java API、开发框架用得熟练,照样可以把代码写得“飞”起来。
你别忘了,我们学任何知识都是为了“用”的,是为了解决实际工作问题的,学习数据结构和算法自然也不例外。
02业务开发工程师,你真的愿意做一辈子 CRUD boy 吗?
如果你是一名业务开发工程师,你可能要说,我整天就是做数据库 CRUD(增删改查),哪里用得到数据结构和算法啊?
是的,对于大部分业务开发来说,我们平时可能更多的是利用已经封装好的现成的接口、类库来堆砌、翻译业务逻辑,很少需要自己实现数据结构和算法。
但是,不需要自己实现,并不代表什么都不需要了解。
我来举一个你非常熟悉的例子:如何实时地统计业务接口的 99% 响应时间?
你可能最先想到,每次查询时,从小到大排序所有的响应时间,如果总共有 1200 个数据,那第 1188 个数据就是 99% 的响应时间。很显然,每次用这个方法查询的话。
都要排序,效率是非常低的。但是,如果你知道“堆”这个数据结构,用两个堆可以非常高效地解决这个问题。
03不仅要关注功能的实现,还有关注代码质量
对编程还有追求?不想被行业淘汰?那就不要只会写凑合能用的代码!
我觉得,面试时的竞争其实就在细节。
这些细节包括:你用的算法是不是够优化,数据存取的效率是不是够高,内存是不是够节省等等。这些累积起来,决定了一个框架是不是优秀。所以,如果你还不懂数据结构和算法,不懂得如何提高代码的质量,还是抓紧时间补一补吧。
先来看一个java里一些主要容器的继承图:
03不仅要关注功能的实现,还有关注代码质量
对编程还有追求?不想被行业淘汰?那就不要只会写凑合能用的代码!
我觉得,面试时的竞争其实就在细节。
这些细节包括:你用的算法是不是够优化,数据存取的效率是不是够高,内存是不是够节省等等。这些累积起来,决定了一个框架是不是优秀。所以,如果你还不懂数据结构和算法,不懂得如何提高代码的质量,还是抓紧时间补一补吧。
先来看一个java里一些主要容器的继承图:
【你将收获到哪些】
1、提升编程效率与质量
熟练掌握数据结构原理,复杂项目中无需再发愁需求的实现原理。
2、优化能力提升
随着理解认知的加深,能发现工作中那些违背数据结构特性的代码,并拥有去优化修改的能力。
3、提高面试成功率
学习到50%以上互联网公司中数据结构方面的面试题纲领,提高面试通过率。