前言
在被虐中成长,在面试中进步
指缝很宽,时间太瘦,悄悄从指缝间溜走。转眼之间三年的研究生生活即将结束,即使很是不舍,也终将要走向社会,开始另一段新的旅程。此刻,看着下一届师弟师妹开始忙碌地准备找实习,便开始追忆起过去一年找实习和工作的历程,那是一段艰辛而又成长颇多的经历。
过去一年找实习和工作的经历还是那幺清晰,每每想起,都彷如发生在昨日。面试官问的问题以及那些踩过的坑却都一一浮现眼前,久久不能忘怀。那无数日夜挑灯备战的艰辛,那焦虑不安等着面试电话的心情,那一次次被被拒后的失落和那收到一个个offer喜悦之情,那些我们经历的终将成为我们人生一笔宝贵的财富。而最重要的是,我们在面试过程中学会了成长,学会了改变。学习弥补那些我们不会的知识,加深理解那些我们浮于表面的原理,改变我们面试过程中出现的缺点和不足。那段时间,我们快速吸收了大量知识,又好像重新回到了当年的考研状态,但又感觉比考研还要艰辛,因为要准备的知识面太多、太广。亦如考研,朝看夕忘,每天沉浸在复习和备战中。书本和笔记一遍遍地翻看,算法一遍遍地刷,又一遍遍地准备那些自己不擅长的知识。闲暇时便又去收集各种招聘信息,看看招聘网站是否有新的找人消息,问问学长学姐还有没有内推的机会。就这样一步一步,我们在被虐中成长,在面试中进步。面试是一个非常好的学习机会,我们应当适当地利用好这次机会完成自己知识的一次飞跃。
1. 更加集中的学习
正如考研、期末考试一样,面试也是我们一次知识增长和爆发的时候。因为有了面试和找工作的压力,我们便能更加集中地将大把时间花在学习和复习上。将时间花在哪里,你的成就就在哪里,根据《刻意练习》中的刻意练习理论和《异类》中的10000小时定律,你在某个领域花的时间越多,你在该领域的成就越高。
我们在面试过程中加强了知识复习强度,而面试就是对这次知识准备的反馈过程,通过面试来找出自己的不足和了解自己知识的掌握程度。遇到不会的知识,我们便开始上网或翻阅书本,查缺补漏。通过反复的准备、面试、纠正的过程使得我们掌握了大量的面试技巧,同时也强化了对知识掌握程度。
2. 更加系统的知识体系
互联网面试不会问单一的知识(如:算法),而是一次综合性考察。因此我们在备战面试过程中各个知识点都需要准备,如计算机操作系统、计算机网络、数据库、算法、数据结构等。而知识之间不可能孤立存在,而是彼此存在联系。《高效学习》中提到,学习过程分为几个阶段:知识获取,理解,拓展(或者建立联系),纠错,应用,记忆,测试。我们根据面试要求从相关书籍中获取知识;理解一些知识和概念,及背后的原理(如什幺是面向对象);同时建立起与其他知识之间的联系,例如java虚拟机的垃圾回收算法是什幺,性能如何?优缺点是什幺?—-java虚拟机和算法数据结构的联系。java虚拟机如何做到跨平台,与计算机系统之间是怎样的关系等。通过面试过程纠正我们对知识的错误认知。通过反复纠正、记忆便掌握更加牢固。
面试中的问题都会将一些知识联系起来,比如MySql索引的数据结构是什幺?性能如何?不同索引之间的比较如何?这些都不是单纯的考察MySql知识,同时也在考察对数据库中B+树、hash的理解。
可以通过复习建立起各个知识之间的联系,并且我们能够花大量时间系统的学习各个方面的知识。通过这样一次复习后,我们拥有了更加系统的互联网知识体系,建立起各知识点之间的联系。
3. 弥补不足,提升自我
面试一个非常好的地方就是能够帮助自己,找出自己的不足,这些不足包括知识和沟通等方面。面试中遇到不会的问题便是我们成长最大、最快的地方。这些问题之前学习的时候是否认真考虑过?是否做项目时,某些问题是否有深入地分析过?用的框架是否知其然而知其所以然?总结面试中回答不足的问题,我们在复习过程中重点攻克,查缺补漏,进一步巩固之前的基础知识。虽然面试过程中有时候会被虐的体无完肤,虐得心力憔悴。但是,这也帮助我们找到自己知识的不足,便于弥补和提高。面试过程中最怕的不是被拒绝,而是不知道为什幺被拒绝。被拒绝后还不采取相应的措施去做出改变,那即便面再多也是徒然。
4. 更加深入地了解知识背后原理
通常我们掌握的知识,仅仅是这个知识,处于一种见树而不见森林的状态,对其别后的原理和联系都不甚了解。于是面试中一旦面试官深入问询时,自己便回答不上了。面试带来的好处就是让我们有更多的机会去反思和思考,让我们能够更加深入地去挖掘知识背后的原理,而不是简简单单地浮于表面的理解。面试中你会发现那些习以为常的知识背后隐藏着一个丰富多彩的知识世界,一花一世界,一叶一森林,这些知识背后总有那些需要了解的知识原理和知识间的联系。通过面试,我们加强对这些知识的理解和学习,通过深入分析背后的原理和建立起知识点的练习,使自己能够做到见树即见森林。
面试是一次知识提升的机会,面试中应该学会总结自己的不足,并针对不足之处深入研究、分析才能促进自己的成长。而不应该仅仅将面试准备当做应付考试一样准备,背背网上的一些所谓的”标准答案“。
缘分与心态
我们如此看重实习和工作,是因为进入BAT等互联网大型公司实习一方面能够给我们一个平台提高我们的实践能力、学习更多知识技能和拓展我们的视野,另一方面是能在未来找工作时为我们简历加分。而工作更不用说了,十几年的学习生涯也是为了毕业时找份好工作,为未来奠定一个好的开端。很多人常说第一份工作至关重要,往往决定了一个人未来的发展道路。是否决定一个人未来因个人而异,但是第一份工作还是非常关键,那是我们走入社会的第一步,会对自己个人的成长和视野的开拓产生重要影响。因为不同的公司的文化环境不同,组织结构不同和给个人提供的机会都有所不同。因此也很多人格外看重这份工作。
而不管是找实习还是找工作,我们都会面临一个问题,那就是面试。面试不仅是考验的是技术和知识,同时也是看缘分和心态。
找工作之前,有一点你必须清楚,就是找工作是一件看缘分的事情,不是你很牛逼,你就一定能进你想进的公司,都是有一个概率在那。比如相同的公司因为面试官不同问的知识点也可能不同,有时候问的刚好你都准备了,有时候偏偏问些你所不会的。如果你基础好,项目经验足,同时准备充分,那幺你拿到offer的概率就会比较高;相反,如果你准备不充分,基础也不好,那幺你拿到offer的概率就会比较低,但是你可以多投几家公司,这样拿到offer的几率就要大一点,因为你总有运气好的时候。所以,不要惧怕面试,刚开始失败了没什幺的,多投多尝试,面多了你就自然能成面霸了。得失心也不要太重,应该放宽心态,应为最后每个人都会有offer的。
基础备战
基础这东西,各个公司都很看重,尤其是BAT这种大公司,他们看中人的潜力,他们舍得花精力去培养,所以基础是重中之重。当你的基础好的发指的时候,你的其他东西都不重要了。
基础无外乎几部分:语言(C/C++或java),操作系统,TCP/IP,数据结构与算法,再加上你所熟悉的领域。当面试多了,你便会发现有很多是常见的问题和知识点,因此本书对那些常见的面试题进行收集和整理,并对一些题目做深入分析,希望能够帮助大家。大家如果觉得有所帮助,也可以给我打赏。
推荐复习书籍
复习的时候最好还是以书本为主,毕竟书本内容是成体系的,并且经过编辑和很多读者的验证,内容是准确的。本系列笔记可以作为复习和总结使用,快速复习各个面试要点。前提大家还是得去看相关的书籍和知识,理解相关内容,否则死记硬背一方面效率底下,另一方面当面试官问的比较深入的时候无法解答。
算法
- 《剑指offer》
Java
- 《java并发编程的艺术》 | 看完java并发编程方面的面试基本没问题,里面涉及java并发编程的底层实现原理等。
- 《深入理解java虚拟机》| 对java虚拟机有一个系统的了解,可以应对java虚拟机方面的面试
- 《Netty权威指南》 | 非常经典的java网络编程书籍,
- 《Java NIO》 | JAVA NIO 入门书籍
设计模式
- 《设计模式》 四人班 | 经典之作
- java_my_life的设计模式博客系列 | 比较通熟易懂
- 《大话设计模式》| 可以作为入门读物,看完面试也差不多了
组件或框架
- 《redis设计与实现》 | 对redis的原理做了详细的讲解,通熟易懂。推荐。
- 《spring源码深度解析》 | 了解spring的实现原理, 对spring实现机制有更深刻的了解。
分布式相关
- 《大型网站技术架构:核心原理与案例分析》
- 《大型网站系统与java中间件》