【面试篇】面试官会怎么提问项目?
在面试中,项目是最重要的一环,如果你有一个靠谱的项目,可能面试官会把 50%+ 的时间,都花在项目的拷打上,所以呢,我们这里单独花一章的篇幅来讲一讲项目提问。
做一个项目,可能会涉及到很多的配置啊,框架啊,反正各种乱七八糟的东西,但是在面试中,这些东西基本都不考察,比如你在项目中写了很多 CRUD 都接口,这些接口其实就是查一些数据库,然后就返回了,那这些其实也没啥好考察了,面试官也不会问你具体的实现代码。
那面试官主要考察什么呢?
在校招面试中,面试官主要通过抓关键字来进行考察,而这些关键词,则是你写在简历上的那些职责啊,亮点啊,以及项目背景涉及到的技术栈啊,当然,如果遇到一些面试官他在工作中做到过和你项目中类似的业务,那么考察情况,花样会多很多。
总体来说,对于一个项目,考察的内容可以分成如下几个层面
1、项目基本实现考察
面试官会针对你的项目,问你一些基础的问题,如果你当真做过项目,应该是能够回答的出来的,所以面试官对于这块的考察目的,其实之一就是考察你是否真的做过这个项目,主要确实有很多人并没有做过项目,却自己做过或者就是只看视频,没有实践过。
我举个例子,比如你在项目的技术栈中用到了 SpringBoot,那面试官可能就会问你:你在项目中用到过哪些 SpringBoot 注解呢?
如果你做过项目,应该是可以回答的出来的,而如果你没有动手做过,有很大概率就忘记了。
又比如你的项目中,会对用户密码进行加密,那面试官就会问你:介绍一下你是怎么给密码加密的。
总之,对于一个项目,第一层考察就是,针对项目中的一些实现方案,问问你具体是怎么实现的,至于你的实现是否是最优解,这并不是最重要的,你真正去想过,去做过,才是最重要的。
2、考察你对设计方案的思考
上面我们说了最基础的考察,那就是考察你是怎么实现的,对于很多诸如小公司或者银行国企之类面试比较简单的企业中,可能就这样问完之后就不会再追问了。
但是对于那些相对知名的私企中,面试官不仅要问你怎么实现的,还有问你为什么要这样实现。比如你在项目中用了某种算法来对密码进行加密,那面试官还会问你:你为啥选择这种算法呢?这种算法有哪些优缺点呢?你是否了解过其他的加密方式呢?
大家看到没有,此时的提问,难度就大多了,你会这样实现还不行,你还得知道 why,还得知道优缺点,还得要你横向对比过其他的方案。
其实这也很好理解,一般在工作中,特别是对于一些比较大型的项目,如果你的实现中存在一些 Bug,那么影响是巨大的,甚至整个部门都会被你的 Bug 给连累了。而且任何技术方案,都会有他的优缺点,我们必须知其所以然,才能减少项目中的 Bug,提高项目的健壮性。
所以呢,对于项目的准备,第二层准备就是要搞懂三个核心思考:
1、你为啥选择这样实现?
2、这样实现的优缺点?
3、你是否了解对比过其他方案的实现?
当然,要搞定这几个问题,需要你有不错的技术积累以及相对扎实的基础,否则很难搞定这些问题。
3、造火箭
如果你能够很好回答出第一层和第二层的提问,其实已经很优秀了,面试官也会有很大的概率给你过。
不过呢,我们都说工作拧螺丝,面试造火箭。如果你扛过了以上的问题,面试官接下来可能就会对你造火箭了,就是会问你很多拓展性问题,也就是我们常说的项目场景题或者系统设计题啥的。
比如你的项目用户量本来就不多,所以各方面实现都比较简单,那面试官可能要给你加一些问题,比如当你的用户量非常大,请求量非常大的时候,你应该怎么办?
又比如说,面试官还要问你各种万一,比如我们的项目本来就是在稳定运行的,一直没啥问题,但是面试官要问你:万一你的项目突然出了问题,你会怎么排查?
总之,面试官主要围绕几个方向来造火箭:
1、项目的用户量或者某方面的数据,突然很大,你该怎么办?你会怎么来设计?
2、项目中如果出现了万一,你会怎么办?或者怎么保证万无一失?
等等。以上是被问的相对多的两个。
对于这些问题,如果你没有扎实的基础以及曾经学习过类似的内容,其实回答起来还是挺不好回答的。
不过呢,你也不需要给出啥最优解,如果你在面试官的引导下,有一个合理的思考,通过面试官的提醒,给出了不错的解决方案,那么其实就很大概率是过关了。
因子对于很多东西,一是没有所谓的最优解;二是面试官也不奢求你能够一一答复出来,毕竟人的知识储备是有限的,不可能啥都懂,所以呢,你能够有一个合理的思考,就已经挺棒了。
总结
以上便是针对项目的三层考察,一般面知名中大厂,才会问第三层的内容。
作为候选人,第一层的内容你是必须要能够回答的出来的,否则可能就直接挂了,二对于第二层的内容,其实也有难度的,如果能够回答的出来,很大概率就过了;而对于第三层的内容,如果也能够回答出来,是大大加分吧,哪怕没有回答出来,也是有很大概率过面试的。
至于要如何准备好这些问题的回答,我觉得就是要好好把项目做一做,那你第一层就没啥问题了,而对于第二层,则需要自己多思考一下为什么要这样,以及多去搜索一些其他解决方案;第三层的话,则需要自己多看一些书,多看一些技术专栏吧,积累多了,那就能举一反三了,因为很多东西都是类似滴。