【项目篇】项目需要复习到什么程度?
在以前的校招面试中,可能项目并没有那么重要,而且问的也不是特别多,面试官更加关注你的基础,算法这些。
不过,在最近几年以及未来的面试趋势中,项目考察只会越来越多,而且面试官在问项目时,会问的特别细,这其中有一个原因就是:判断这个项目是否真的是你做的。
因为很多人的项目自己都没有做过,都是跟着简历模版写进简历里,自己代码一行也没有写过。对于这种情况,一旦被面试官识别,基本就挂了,哪怕你的基础特别好。
其一就是,在校招面试中,诚实非常重要,各大公司对诚信问题,基本零容忍,所以你欺骗了面试官,那你基本就凉了;其二就是,学编程,实践能力太重要了,你代码都没有去写过,那面试官对你的影响肯定很差。
我知道大部分人的项目都是跟着视频去做的,所以容易忘记,比如有些东西自己明明做过,但是缺忘记了自己是怎么写的,所以呢,去面试之前,我们要复习好项目,以免给自己挖坑,白白浪费了面试的机会,甚至留下了不好的面评。
一、项目复习最低保障
至少复习到啥程度就可以去面试?
答案是,你简历上写的内容,你至少要知道自己当时是怎么实现的。
比如说,你写了密码加密问题(大部分是MD5 + 盐值),那你的最低保障就是,你知道自己代码里是怎么实现,为什么要这样实现(比如面试官会这样问:说一说你的密码加密流程)。
这很好理解,如果你简历上写了这些内容,你自己都不知道怎么实现的话,那就很尴尬,绝对大大扣分,甚至直接挂了。
但是嘛,工作拧螺丝,面试造火箭,面试官会基于你的实现方案,会给你提各种各样的问题,比如你这个加密有啥缺点,有没有更好的方案,等等。
这些属于所谓的拓展题,你能掌握最好,但是你不会,也不会马上挂,最多扣分,不至于致命,相当于我写过这个项目,实现过这些功能,但是我不知道拓展题,不懂拓展题,是可以理解的。
所以你的最低保障就是,你自己简历上写的内容,你自己要知道是怎么实现的,当然,知道大概思路就行,不需要还去记住具体的代码,绝大部分都不会让你写代码来演示的。
二、项目拓展题怎么办?
拓展题的考察,是你对知识的灵活运用,比如问你为什么这么做?为什么选择这种方案?比如你为啥用 Redis 来缓存,你需要思考清楚,也就是知道自己为啥要这样做。
清楚了自己为啥这样做,那你其实已经及格了,之后面试官会跟你造火箭,至于怎么造,我们无法预知,所以也就无法去复习,但是我们只需要保证基础分不丢就好了。
至于拓展题能否拿到分,需要看你平时的积累了,因为项目考察的背后,其实就是对八股文的灵活运用,如果你理解的好,无论面试官怎么问,你都能给出自己的思考,虽然可能你的方案并非最优解。
而且说实话,最优解不是最重要的,最重要的是,你能在面试官的提示下,给出一个还算不错的方案。
那遇到这种拓展题,我们如果有精力的话,可以怎么去准备呢?
首先,面试官除非遇到的是自己熟悉的系统,否则他大概率也不会花很多时间去研究你的项目,基本大部分面试官都是根据关键词来问你各种,并且问的时候,大部分是基于下面这个模型:
1、技术实现原理 + 该技术的优缺点。
2、为啥选择这样一种方案来优化?优化之后快了多少?你是否测试过?
3、你是否还了解过其他方案?
比如对于下面这个项目书写的内容
那么关键词有:JWT,续签,AOP 切面,FastDFS 技术,分片续传,秒传,MD5,WebSocker,长链接,ConcurrentHashMap,RocketMQ,弹幕设计,Redis 缓存等。
基于这些关键词,如果有时间,要复习的比较好,你可以去了解关键词的原理 + 优缺点,优点就是你为何选择它,但是任何事情也有缺点,我们也要知道技术方案的缺点,有时候知道缺点比知道优点更加重要。
基于上面的简历案例,按照上面的模版,我们可以复习如下:
1、JWT 原理,续签原理=》它们优缺点
2、AOP切面原理
3、什么是 FastDFS?为啥用这玩意
4、续传原理,秒传原理=〉MD5加密原理,优缺点,用其他方式加密可以吗
5、为啥用 ConcurentHashMap, 为啥用 Websocket,优缺点
6、为啥选择 Rocketmq,,其他 MQ 可以吗?
7、怎么个异步存储法?具体怎么做的,会出现什么问题?可以怎么优化?
8、项目的难点是什么?
等等。
也就是说,你去面试之前,需要完成最低要求,但是从开始面试,到面试结束,还有很长的一段时间,在这段时间里,你需要不断去完善和补充项目。
当然,面试的时候,你也会发现面试官对于你项目的拷打,拷打来拷打去,都是那几个问题,你被拷打多了,也就知道面试官大概会问什么拓展题了,也就能提前准备来了。