跳至主要內容

3.2 面试前学什么


日常的技术学习固然要兼顾广度与深度,但是面试不会考察过于宽广的知识面。为了提高面试成功率,我们要针对常见面试问题进行重点学习。

1 八股文

古有八股取仕,现有八股取程序员。中国的任何技术岗位面试都存在八股文,这些面试题大多雷同,都有标准化的答案,更像是在考察记忆力而不是逻辑思维。以Java语言为例,面试题通常是:HashMap和HashTable的区别;Java线程的生命周期;JVM内存区域的构成等等。相比之下,欧美工程师面试比较重视算法和设计(系统设计或者面向对象设计),其实面试难度更大,对于面试官的要求也更高。

尽管八股文有这些弊端,为什么软件公司依然坚持这样出题?因为技术岗位供大于求,开发人员过剩了,通过考察八股文可以快速过滤掉一部分人。大环境不是我们能改变的,不管喜不喜欢,必须要学习八股文。

1.1 八股文题库

1.2 如何学习

八股文的涉及知识非常繁杂,只是用眼睛看看文档,记忆不会太深刻,这里推荐两种加深记忆的方式:

  • 1)手绘知识结构图:推荐大家在纸上画出当日所学的知识结构的树形图,只在树的节点上写上技术名词,其他的不必很详细。过几天后对着树形图的节点复习一遍,可以极大的提高学习效率。

以上图片来自网络
  • 2)执行示例代码:与编程语言有关的题目,最好在电脑上敲一边示例代码,保证执行成功。

2 算法

算法精通的程度是普通人和高手之间的分水岭,知名大厂的面试几乎都考算法题,重要性不言而喻。算法是个硬骨头,但也是一个可以训练的技能,遵循科学的方法,普通人也可以达到一定高度。如果仅仅为了面试的话,找到合适的题库勤奋练习即可。

2.1 算法题库

  • 1)力扣open in new window:力扣是最知名的刷题网站,也是一个IT技术职业化提升的平台,提供了完善的在线判题服务、学习工具、社区讨论及模拟面试功能。
  • 2)CodeTopopen in new window:CodeTop是基于牛客网、面经网、力扣整理的算法题库网站,并收集了字节跳动、腾讯、微软、美团、百度等多家大厂的面试题,涉及100多个部门。
  • 3)Leetcode.Wangopen in new window:这是一个分享刷题经验的博客,博主对每道题都给出了最优解,还有自己的解释,利用这个网站可以提高刷题效率。
  • 4)VisualGoopen in new window:一个算法可视化训练网站,采用动态图展示算法的执行逻辑。
  • 5)Halfrost Leetcodeopen in new window:Halfrost的Leetcode的刷算法题笔记,非常有参考价值。

2.2 如何选题

  • 1)由简入繁:初次接触算法题,哪怕是最简单的题目,可能也要几个小时才把代码调通,这时就会怀疑自己的智商了。其实只是熟练程度不够,与智商无关。为了避免太多的挫败感,选题要先简后难。国内大厂的算法考察上限不会超过力扣的中等难度,如果在20分钟内做好这种难度的题,基本可以自由行走在大厂的算法面试。

  • 2)分类刷题:持续地刷特定类别的题目,往往事半功倍。比如连续几天都只做链表题,然后再做二叉树题,这样可以更深入的理解这种数据结构和算法的变种,以后碰到类似的题便触类旁通。当训练到一定的程度,就可以随机刷题了,锻炼思维的应变能力。

2.3 如何解题

  • 1)看懂题目:有的题目已经列出了对应的数据结构和需要用到的算法,很容易知道问题的所在;有的题目却很隐晦,看不懂要做什么,这是因为我们还没习惯这种表达方式,此时应该跳过做下一题。就力扣来说,这样的题目不多。

  • 2)分析解法:在推导解法的时候,不要去想用什么代码、什么库、多少层循环。结合常用的数据结构知识,专注解题逻辑本身,不然很容易陷入死胡同。

  • 3)代码实现:将思路转换成算法很自然,但是转换成代码却有一定难度。一般来说,对编程语言越熟悉,就越快能用代码实现算法。这需要持久的训练,别无他法。

2.4 长期训练

刷题是个比较枯燥的过程,遇到无法解答的难题时很容易沮丧。如果始终无法解题,就要考虑降低难度,或者再去全面的复习特定的算法和数据结构。

上次编辑于: