大家好。这篇文章给大家分享一下如何获得一个可以去参加面试的最小可行知识(Minimal Viable Knowledge)!我自己在就基本上靠文章中的策略在找实习的时候拿到了头条阿里的offer。所以,突击就完事了。包括以下这些部分:
计算机基础、Java基础、网络基础等等基础知识的突击方法
算法题的突击方法
项目的优化方法
最后的一个 Bonus。分享一个让面试官一开始就对你留下好印象的技巧。
注意喔,我这里不提供知识,只是给大家讲讲方法。
Java岗必备的基础知识
Java岗基础知识的复习,(网上应该有资源)。
这个里面涵盖了Java基础、Java多线程、Spring框架原理、数据库、计算机网络等等常问常考点。而且里面的质量是经过很多人亲身印证的,我自己也从头到尾全部听完了。帮助真的很大。
迫于时间关系,这个里面的内容不是很多,但是却有很多精华。同时较短的时间也很适合拿来突击。如果你有一定的Java基础但是对面试却没什么把握,花点时间看看这个,我觉得会给你一个全面的掌控。
当然,建议支持正版。
时长16小时16分钟,考虑到需要思考、整理知识,每天差不多可以看4个小时视频,4天搞定基础知识。如果你找不到相关的资源,或者觉得课程太贵的话,你可以直接借鉴它的目录,用这个目录来构建你自己的知识体系。然后利用网上公开的学习资料来填充,同样也可以收到很好的效果。但是要注意知识的取舍,还是尽量以视频的目录为准。
算法题
算法题,我的经验是,始终从今年(或者去年)问过的算法题出发。突击嘛,时间就是金钱。准备一个笔记本软件,无论什么都可以。然后找一个网络上的算法题的分类(我下面也给出了一个比较简单的分类),把所有你能看到的目标公司的面经中的题目,全部整理到不同的分类下面去。然后再保存一个按照公司分类题目的清单。刷就完事了。
做500道题不如做1道题500遍做100道题5遍。一定要反复做反复做,自己在宿舍里能做出来,跟面试时能做出来还差挺多的。
实话实说,算法题这个东西真的挺难突击的,但是公司面试真的会有它的模式,很多面试官的题库都是共享的。不是整个公司共享就是整个部门共享。应试就完事了。
分类:搜索、DP、图、二分法、BST、哈希表、贪心、链表、双指针、回溯、分治
项目
项目我觉得能突击不多,我这方面也没有突击的经验。如果现在还没有项目的话我也母鸡该咋弄了。但是如果你有一个项目,但是项目不是特别出彩,那你可以考虑进行嫁接。也就是对你自己的项目进行优化。
怎么去操作这个事情呢。这里有一份推荐一份视频,主要是针对有经验的程序员的,因此我们也不需要全部看完。你只需要从下面这几部分内容挑选一个点出来:
消息队列
分布式缓存(Redis)
分布式锁(Redis&ZK)
搜索引擎(ElasticSearch)
服务化(dubbo)
高可用(hystrix)
然后先去尝试着了解一下,看看自己能不能结合你自己原有的项目很快搭建一个概念模型出来。这个概念模型只要符合最小可行就可以了,前端可以做得丑陋一些,不必要的功能可以不要,只要基本的功能能够实现、程序能够正常跑起来就可以了。
这件事情做完之后,把上面这个视频里面的对应的内容好好看几遍,做到熟记于心,遇到问题不慌。
项目在面试中,其实只是一个切入点。对于应届生而言,面试官更多地是借项目考察你的Java相关的基础知识(包括语言本身和框架)。有的公司完全不问这些,只问算法,也说明了项目不算特别重要。因此相对应的,我们不要在项目上花费太多的时间,想着把它做到尽善尽美。更佳的策略是使用项目作为一个入口,让面试官看到你的项目中除了一个点以外,满是平庸。此时他只能问你那个似乎唯一的闪光点(或把你拒绝),而这个点,你重点布防、严阵以待。如果没问到,不亏,如果问到了,血赚。
Bonus
现在由于疫情的影响,应该都是电话面试或者网络面试了。而如果使用牛客网面试平台的话,里面会有一个“演示”功能。你可以把你自己的简历和项目的架构图在面试开始前就放在这个地方。能够更好地介绍自己,同时也更容易展开项目的相关话题。不要小看这个技巧,简简单单就达到了两个非常重要的目的:1)展示你很用心,让面试官觉得自己被重视了 2) 减轻面试官理解负担,让面试官觉得跟你交流是舒适的。
写在最后
我自己回想下来,我觉得最有价值的是两个思路:
敢于取舍:时间有限,必须决定哪些是重点知识,要重点准备。那些不重点的,或者少有被问到的,直接放弃。
更进一步:对于你自己取了的部分,就要深入挖掘,找到你和别人不同的理解。如果被问到,一定会回答得很好。而且能够看到别人看不到的地方,有比别人更深刻的认识。这些点,就是我们给面试官设下的埋伏。
整篇文章里面没有夹带任何的私货,都是我自己切身的经验和体会。不算很全面哈哈。能够有一点点帮助到大家就很好了。谢谢!