本文主要介绍一些准备后端面试的建议,供师弟师妹参考。这里主要涉及到技术上的准备,至于简历怎么写、非技术问题、面试技巧这些问题则不在讨论的范围。
编程语言
- 每年都会有Java vs C++的纷争,确实Java C++后端的岗位比较多,但是就我了解到还是有不少公司不在意这一点,Go Python也不是不行。选什么语言还是应该基于自身考虑,如果想去国企/银行,Java确实会比较多。但是另一方面,Java赛道也比较卷,八股文特别多。这个还是需要自己权衡利弊。
- 针对自己选择的后端语言,熟悉基础语法,然后背八股文,可以参考网上的八股文,要深入熟悉一些比较重要的原理。在时间有限的条件下,针对面试,不太建议看视频和系统看书。
- 会写代码 != 面试能过。语言相关的问题还是比较固定的,出于面试的目的,我建议直接过一下基础,然后多看看八股,花时间去了解高频问题,而不是系统的学习(仅针对面试)。
算法
- 不建议一天随机一道题,感觉没什么作用,最好是一段时间内集中做某个类型的题目。比如说按照动态规划、dfs、bfs...不同的分类刷题,并且最好总结出自己的框架。
- 刷算法题的重点是学会各种通用的框架、解法,而不是从零开始想出这些解法。比如说,如果从来没有做过滑动窗口的题目,那很难想出对应的解法,可能需要耗费很多的时间精力。所以,建议在刚开始刷题的时候可以以学习为主,不要一道题思考大半个小时,重点是学会大部分的思想和套路。
- 面试过程手撕算法题环节特别重要。面试手撕一般不会很难,但是一般要自己写输入输出、测试用例,如果没撕出来大概率直接进人才库了。(感觉出得比较多的题库:面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台、牛客网在线编程算法篇面试必刷TOP101 (nowcoder.com)、剑指offer)
- 针对面试算法题,需要练习写ACM模式的代码,自己处理输入输入,自己建链表、树、图等。
计算机网络
- 建议看图解网络介绍 | 小林coding (xiaolincoding.com),我面试中遇到的网络问题几乎所有都能在这里找到。
- 上面的【图解网络介绍 | 小林coding】内容比较多,建议先花比较长时间系统过一遍(考虑到还需要准备其它八股,建议第一次看差不多花一个月),然后整理出自己的笔记,根据实际的面试经验标记出每个题目的频率。到后面熟悉之后,每周就花一两个小时看一看高频问题即可。
数据库
- 针对写sql,建议刷一刷牛客上的sql题库,基本的会写就可以。
- 针对sql原理,建议看看图解MySQL介绍 | 小林coding (xiaolincoding.com)、数据库基础知识总结 | JavaGuide这些八股文,基本的原理要了解。
操作系统
- 操作系统问的比较少,问题也基本是那几个,不建议从头开始系统学习。不过,操作系统的问题都比较难理解,需要针对问题,尽可能理解透彻,我一般有问题是在网上搜出很多个答案,相互印证,促进理解。
- 印象中的重点问题:进程线程 进程间通信 锁 虚拟内存等等,面试官的问题一般会越问越深入。
其它
- 面向面试做准备,面试时间有限,熟悉八股文很重要。
- 需要安排好每一个部分的准备时间,算法和计算机网络的优先级较高。
- 这里没有讨论到项目,因为每个人的项目都不太一样,我个人是把科研项目整理成比较工程的项目经历。
- 设计模式、Linux相关的也经常被问到。
- Redis、MQ、Http框架、RPC框架、分布式这些可以作为扩展了解一下。
- 熟悉某一块源码是加分项。
最后,祝早日收获合适满意的offer ^_^