第244期 | 面试时刷的那些题,工作了真的会用到吗?
你好,这里是卖桃者说。今天跟你聊聊面试中刷题这件事。
这两天有个同学给我留言,说自己为了进大厂,花了很多时间和精力在刷题上,但刷多了之后有点怀疑人生,不知道刷的这些题在之后的工作中能不能用到,如果只是为面试而刷题是不是在浪费人生呢?
前一阵李玥老师在极客时间直播的时候正好聊到过这个话题。李玥是《消息队列高手课》专栏的作者,他的课程读者反响非常好,最近在极客时间又开了新的专栏《后端存储实战课》。
李玥老师怎么看呢?
首先,别管这些题是真有用,还是假有用,你想换一个更好的工作,去一个更大的平台,特别是那些大厂,就一定要做好两个准备:
- 真的有本事;
- 面试一定要认真准备。
刷题就是认真准备的一种。否则的话,很多东西你看起来知道、会用,但在面试的高压场景下,很可能大脑一片空白,啥都说不出来。面试的时候,你又没办法面向 Google 编程,是不是?
其实,很多人也隐约意识到刷题中接触的这些知识是有用的,比如算法、设计模式、编译原理、计算机组成原理等等,但什么时候自己能用上,能用上多少就不确定了,毕竟那是未来的事情。所以啊,很多人难免会对投入产出比有一些疑惑:我花了这么多时间、这么多精力来刷题,到底值不值。
我们先来看一下大厂会面试哪些内容,一般会包括项目经历、基础知识、智力测验、目标岗位相关的技术知识等。其中,我们说的刷题,一般指的是基础知识这部分。而基础知识又主要包括基础计算机技术的相关套路和踩坑经验。
先来看套路,面试里面有很多套路,或者说是固定的打法,就像现代搏击中的各种套路一样。它是在一个特定的、常用的场景下,解决你常见问题的方法。比如设计模式和算法。
有了这些模式和算法,可以让你在遇到特定的场景的时候,能快速解决特定问题。如果你不知道,当你遇到这些问题的时候,也能想出方法来解决,只是可能没有那么快、那么好用。
举个简单的例子,比如我们要做一个业务程序,需要存储数据,可能选择 MySQL、HBASE 或其他数据库。怎么选择技术方案,你的数据怎么保存,怎么查询更快,这些都取决于数据库的存储结构和索引方式,这里面就会涉及到设计模式和算法相关的知识。
所以呢,大厂考核的,你刷的面试题,都会包含很多数据结构、查找算法、时间复杂度等相关的内容。
这些内容,如果你抽象出来看,会觉得这不就是个数学题吗,跟我写代码没有什么关系,但是实际上,当你处理一些复杂场景的时候,就要思考这些问题了。比如,如何处理更大的数据量,如何更快的实现一个检索,如何推荐更相关的物品等等。
说起设计模式,有几十种,那你常用的有哪些,知道什么时候用、怎么用、为什么要用,以及用来解决什么问题吗?
懂得这些模式,你面对问题的时候,就能做到优雅快速的解决问题,这就是套路。这一类知识,你知道得越多,写代码的时候,质量就越高,写的也越快。
这是很多大厂愿意考的东西,也是你进了大厂后,在实际工作中会用到的东西。
再来看常识,其实就是一些踩坑经验。你踩过坑了,知道有这回事儿,下次就不会踩坑了。但你没踩坑之前,或者没听别人分享过类似经验,你是不知道的,那如果你将来遇到了这个坑,肯定会掉进去。
类似这样的东西,招聘方肯定是希望你知道的越多越好,那你入职以后开发系统,就不会用公司的成本来踩坑。
比如你使用 Java 语言编程,JVM,也就是 Java 虚拟机的机制你了解吗?年轻代、老年代是怎么回事,JVM 怎么做内存的垃圾回收,JVM 垃圾回收算法有几种,各有什么优缺点等等。
如果你一直写一些业务代码,数据量又不大,根本不会碰到这些问题,也就会觉得这玩意没什么用。但是,类似 Java 这样具备自动内存管理的编程语言,在并发高的时候,一定会遇到 GC 的问题。那你怎么样来尽量规避 GC 问题的出现?出了 GC,该怎么解决?这个就需要你掌握 JVM 的相关知识了。
MySQL 看起来简单吧,我们的专栏作者丁奇用了四十多讲来讲解这个最常用的数据库,SQL、索引、事务、高可用,每一个点能用好都不容易。
如果你只是泛泛的使用,未来一定会踩坑。很多时候,我们能走多远,取决于自己填坑的能力有多大。
另外还需要注意的是,大厂和小厂最大的区别,就是高并发和海量数据。数据量一大,开发和运维要面临的问题就都完全不一样了
创业公司,二十几个人、七八台服务器,就能撑起一个公司。但是大厂不是这样的,大家面临的挑战是不一样的,小公司人肉能解决的问题,到了大厂就得必须得自动化;之前单机能解决的问题,到了大厂,就必须要分布式。分布式的话那就涉及相关的能力和问题,大厂肯定不会说,你先来,来了我们再学,而是希望你们在之前就知道、就会。
因此,很多人面临的问题就是,我之前没有类似的经验,但我又想去大厂,咋办,只有学呗,而不得不承认,不管是在什么时候,做题,都是最好的学习方法之一。
所以回到标题,有没有用呢?还是有用的。最后留个小作业,介绍一下你的刷题和面试经验吧,那你刷的题,后来有没有用上呢?
卖桃者说,明天见。
(编辑:夏天)