工程师们在准备跳槽时候常需要准备八股文和算法(很遗憾,算法不在本书的讨论范围之内)。那么,我们常说的八股文又是什么呢?一般来说,对于 C++ 工程师来说,所谓的八股文通常包含以下几个部分:
- C++ 基础知识
- C++ 底层实现原理
- 设计模式
更高阶的可能还会涉及性能调优和内存管理的内容,关于这部分内容,本章后续章节也会涉及。
作为一名从业十余年的工程师,期间也曾作为候选人和面试官参与大大小小的面试不下百场。简单来说,面试的流程一般分为几个部分:
- 电话面试(初面筛选:项目经验 + 八股文)
- 现场面试 (复试:项目经验 + 算法 + 八股文)
- 终面 (manager + HR: 行为测试 + offer 谈判)
其中,现场面试可能因公司而异,有的公司1-2轮,有的公司持续一天,多达 5-6 轮,平均一轮大概40 - 60分钟。可以毫不夸张地说,面试不仅仅考察候选人的智力水平,更是体力和心理抗压能力的多重考验。
如果成功通过终面,那么恭喜你,offer 已经到手!剩下的就是背调和离职手续的办理了。
可以看出,整个面试过程中除了算法和过往经验以外,最重要的还是对这门语言的熟悉和掌握程度,即常说的八股文。俗话说,兵欲善其事,必先利其器。网上曾流行过一个段子,“一年精通 C++, 五年熟悉 C++,十年略懂 C++”。每次我看到这句话不免会会心一笑,这事情多少年轻时候都干过。现在想来,C++ 确实因为学习曲线比较大、易学难用,劝退了不少人,入门级放弃。加之 C++ 11 以来,每三年一更新的节奏,现如今的 modern C++ 相较于之前的 C with class 时代的 C++ 98 来说变化还是比较大的。可喜的是,我们看到了 C++ 也在成长,但对于 C++ 程序员来说,确实也是不小的挑战,需要跟紧脚步,不断学习,努力提高。
本书的定位是初级进阶读物,面向的读者为有一定 C/C++ 编程经验的工程师。如果你是编程新手小白,建议参考本书的《C++ 学习路线图》,在深入阅读本书前,请先尝试学习基本的 C/C++ 编程知识,请记住:欲速则不达。
本书的创作初衷是帮助工程师应对面试中的相关 C++ 知识点 [1] 尽管书中涉及的知识点不可能面面俱到,但我还是希望能够通过本书,把自己作为多年面试官和一线开发的经验与大家分享和交流,希望能对您接下来的面试有所帮助。 [2] 尽管目的有些功利,但希望能借由本书减小初级和中级水平 C++ 程序员的技能水平差异,如果您是一位经验丰富的工程师,那就权当查缺补漏了。
由于涉及的知识点很多,但并不是对每一个知识点都讲的很透很深,本书只当是抛砖引玉。学了这么多,也不意味着锤子在手,看哪都是钉子,需要敲打一下。请记住 C++ 的设计原则:不要强迫程序员去做那些机器能做得更好的事,并且简单的事简单做,以及零成本抽象的哲学。
由于时间比较仓促,加之个人能力和水平有限,一些错漏在所难免,还希望各位读者和同行多多海涵、不吝斧正。
最后 Study hard, practice more and good luck! :)
My goal as a trainer and a contractor (seems to be) to work me out of a job. I want everyone to:
- Learn how to experiment for themselves
- Not just believe me, but test it
- Learn how the language works
- Stop making the same mistakes of the last generation