校招和社招有什么区别?不同时期重点不同!
PS:帅地写了个八股文小程序,点击可以去刷题
大家好,我是帅地。
今天,就来聊聊大家都很关心的问题:面试到底面什么?
算法面试
国内算法面试的风气,可谓是被字节带起来的,很多公司现在都要求面试者手写算法,像字节这种,更是每面都要手写一道,如果算法没做出来,就基本凉了一半。
那面算法,到底是出于什么目的呢?我觉得有以下三点:
1、最小成本筛查。算法是有标准答案的,会就是会,不会就是不会,通过这种方式可以筛掉一批人。
2、考察人是否聪明。有些公司会出一些需要灵机一动的题目,在短时间内能思考出来,那大概率可以证明这个人很聪明。
3、考察人的努力程度。有种说法,算法题能不能过,就看有没有刷到过,这个其实符合大多数人的情况,毕竟就短短十多二十分钟,想出一道自己完全没做过的题其实不易,所以从某种程度,也是一种工作量证明(POW)。
第一点非常适合大规模面试场景,比如业务发展迅速,团队海量招人期间,能快速过滤,减少成本。
第二、三点适用于校招,因为这部分面试者大多数都还处于什么都不会的时候,这时候聪明不聪明,努力不努力(卷不卷)很重要。
其实算法面试一直是一个有争议的话题,有些会认为99%的岗位都是工程岗位,算法面试有点不切实际,另一方面,算法面试确实也能大体达成如上一些目的。
如果简单来总结的话,针对新手、初级程序员,算法面试还是有必要的,但随着工程经验越来越丰富,算法面试则可以省去。
基础面试
所谓基础面试,就是操作系统、网络编程、数据结构这类基础知识。在计算机中,这些基础知识反而是最为晦涩复杂的。
校招、以及毕业三年内的,基础知识的考查都是重点,基础知识的强弱程度,能很大程度反映出程序员的地基稳不稳,地基稳的程序员通常也会走得更远。
基础面试没啥好说的,无论是面试官、学校、还是学生都能理解其必要程度,这里不做赘述。
组件面试
组件面试是指面相关方向的技术栈,比如消息队列、Redis、MySQL、K8s,ETCD等,这些在实际工作中,都是非常有用的技术。
这些技术聊的内容也很多,可以从使用、到应用场景、到底层实现,很容易考察出一个人对知识的掌握程度,以及是否有来之即战的能力。
这块也是我最喜欢的问题,社招面试预期是对这块非常清楚,校招的话,如果这些实战知识都很强,就算算法有点薄弱,也会给机会,毕竟谁不想要个入职就能抗能打的伙伴呢。
场景面试
顾名思义,就是聊实际的业务场景,比如:
- 电商场景中,账单模块你会怎么设计?
- 双十一活动,秒杀场景怎么设计?
- 一场明星直播,百万人同时挤进直播间,又该怎么设计?
从这些场景设计中,可以看出你过往的经历,是否对架构有深刻的把握,是否有领域抽象能力。
校招、社招都可能会有场景面试,不同的是校招一般是一些小场景,让你模拟回答,考察你的思维能力,比如让你设计一个贪吃蛇游戏。而社招则通常会根据你过往的项目经验,深度挖掘场景中的难点痛点。
我有一个习惯,就是每年无论跳槽不跳槽,都会找一些公司聊聊。我发现,在工作好几年之后,其实面试基本不会让我写代码,一些技术细节也不会深究,就是聊聊业务、场景,但是场景的细节会扣得特别的深。
不同时期重点不同
上面说的几种面试,其实在每个时期都可能混合出现,但是不同时期,重点肯定是不同的。
校招:基础面试 >= 算法面试,组件面试加分,场景面试随缘
社招5年内:基础面试 = 组件面试 > 场景面试 = 算法面试
社招5年以上:场景面试为主,其它随缘。
最后
这次给大家分享了面试面什么、为什么以及校招社招各阶段的侧重点,大家可以以此为参考,揣摩面试官问问题的目的,才能给出最好的反馈。
另外,所谓君子不器,如果你校招时就有很牛逼的项目经验,并且理解得非常深,利用得当,是不是就是降维打击呢?面试的本质是选拔人才到自己团队,谁不希望一个来之即战的伙伴呢。
-----------end---------- 帅地搞了个Java后端训练营,帮助大家更快更好学习,让你少走弯路,把时间都花在正确的方向上: 从0到1,Java后端体系课