小公司出身的程序员,面试咋这么难?!

小公司出身,被大厂竞争者 KO

以下是一个非常真实的案例,是一个大厂工程师和一个小公司工程师同时求职一个独角兽公司的职位的经历。

一个是985本科学历,出身互联网大厂,四五年经验的样子。技术积累非常扎实,而且参与开发的系统支撑过上亿用户量,有真正的高并发经验。

虽然说那个系统不是他主导设计的,他仅仅是一个资深工程师,负责带几个小弟设计和开发几个子系统。

但是他在这个过程中,全程观察到了大厂里的大规模系统,如何规划、设计、构建以及演进的,如何依托各种各样的技术解决线上很高的挑战。

另外一个同学,普通二本学历,同样五年左右的工作经验,一直都在小公司里工作。平时也还算是比较好学,学了一些技术,各种东西或多或少都了解,在小公司出身的工程师里,整体技术还算是比较好一些的。

这两个人同时去一个几十亿美金估值的独角兽公司去面试求职,大家猜猜,发生了什么事情?

同样的年龄,两个人的面试结果是天差地别。

第一位同学,顺利拿下独角兽的技术专家的职位以及一大笔期权,还能独立带团队。

第二位同学,居然连Offer都没拿到,人家甚至都不愿意给一个高级工程师的职位。

接下来我们从几个方面来分析一下这两种不同的同学,他们之间的差距到底在哪里。

学历:面试官的第一印象

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

面试官看简历以及面试的时候,第一观感有两个:一个是学历,一个是公司背景,这俩东西几乎就形成了每个面试官对面试者的第一印象。

上述两位同学,第一位同学是名校本科,第二位同学是一个不知名的普通二本。

很多人也许觉得学历这个东西是虚的,关键还是能力。对于这个我是部分认可。

确实我们也见到过,高学历的人他的技术能力、学习能力、人品态度甚至还远远不如一个大专学历的人。

但是也有很多情况下,高学历的同学他的技术底子更好,学习能力更强,更加聪明,后劲和潜力远远比普通学历的同学要好的多。

所以这个学历是不能一概而论的,不能说高学历的同学就一定很牛,也不能说低学历的同学就一定很差。要知道,高学历的同学里也有各方面不好的,低学历的同学里也有各方面极为出色和优秀的。

所以,我的观点一向是不唯学历论,我们在招人的时候,通常情况下都是要求名校本科/硕士学历的。

但是如果是特殊情况下,都会给普通学历的同学一个机会,让他来证明自己的极为优秀的潜力和能力,也可以破格招收。

但是这里有一个很关键的点,那就是从我们过往大量的经验而言,高学历的同学,他当初为了考上名校,往往付出了大量的努力。所以他的学习能力以及潜力,可能往往更好。

而一个普通学历的同学,当初考上了普通的大学,可能是自己没发挥好,但是很多情况下,确实是学习能力没达到那个水平。

所以说,如果拿到两份简历,一份简历是211/985名校本科,一份简历是不知名的本二学校,那么作为面试官,第一印象,其实会潜意识里觉得,这个211/985名校本科的同学,应该学历能力和潜力会好很多,心里会更加期望一些,也会更加认可一些。

那么在面试的时候,面试官内心的个人情感色彩,其实是相对来说对名校同学更加接收程度高一些的。

而对于普通学历的同学,可能就是没什么期待,也没什么负面情绪,就是面试的时候带着很平常的感情色彩来对待。

那么大家想,这个学历的差距,是不是在一开始甚至还没面试的时候,就已经让面试官有了不同的看待了?这就是学历给面试结果带来的第一个影响的地方。

另外,大家可以想象一下。假设两个人的技术水平、项目能力都是一样,但是岗位需求有限,就一个坑,你觉得会招谁?

那想都不用想,肯定是211/985学历的同学!这个就是学历的优势了,在其他方面假设面试结果都差不多的时候,你还是可能会因为学历问题,被竞争对手挤走,然后失去Offer,别人因为学历高,就可以拿到更多的Offer机会。

公司背景的差距:你的人生名片

除了学历之外,你给人的第一印象是公司背景。虽然说很多大厂出身的同学,也有那种能力平庸,技术不太好的情况,小公司出身的同学,反而也有那种技术能力强悍的人。

但还是那句话,大部分情况下,大厂出身的同学,相对技术能力都是比较好的,有保证。

而小公司出身的同学,很多情况下确实技术能力一般,也没做过什么有挑战的技术项目,整体而言比较普通。

所以一般在面试官来看,如果你是知名大厂出身,那么一般刚开始就会对你心里有好感,大家都愿意找知名公司的人进来加入自己,对方的技术和经验有保障。

但是如果你是小公司出身,面试官对你是没任何感情色彩的,不知道你到底怎么样,一切还是要看面试情况。

同样,我们再假设:如果两个人学历差不多,技术能力差不多,项目经验差不多,但是一个是出身大厂,一个是出身小公司,你会要谁?

当然还是会优先选择大厂的同学加入团队了,毕竟人家大厂出身,对大厂自身的一些技术体系见识也多一些,眼界更加开阔一些,哪怕冲着这一点也会让人家进来。

技术差距:硬核能力的欠缺

承接上文所述,接下来上面两位同学开始了几轮面试。

第一位同学的情况之前已经说过,平时非常注重技术积累,经常学习各种技术。

而且这位同学喜欢探索各种开源技术的源码,喜欢研究各种不同场景下技术挑战的解决方案,自己做了大量技术笔记,所以对Java领域完整的技术栈都有很深的积累。

同时,因为在大厂里开发系统,本身在各种技术挑战之下,是有足够的机会实践,将各种技术在项目里落地。

比如说真正用缓存技术来抗每秒几万的并发读请求,或者基于分库分表抗几十亿数据量的存储和查询。

既然如此,面试结果当然是显而易见了。

面试官一定会从并发编程、缓存、JVM、MQ、分布式、微服务、分库分表、NoSQL、高并发等各个环节开连环炮深入的发问,从各种技术的一些基本的原理,到他在项目里的各种结合业务是如何落地实践的,平时遇到哪些坑是怎么解决的,然后深入的一些技术的底层源码级别。

这个同学,都可以回答的非常的好,基本能完全Hold住面试官的各种问题。

但是第二位同学呢,那就差很多了,基本上面试的时候,面试官各种发问之下,确实发现这个人对各种技术都有一定的了解,比如说JUC、RocketMQ、Kafka、Dubbo、Redis等技术,或多或少都知道一些。

但是呢,如果往深了问,比如问他RocketMQ在项目里到底是怎么用的?为什么要用?不用行不行?抗了多大的并发?这些问题,他就没法说了。

为什么呢?因为在一些小公司里,可能对MQ用的很简单,甚至都没用,所以他的实践经验并不是很多,他只是业余时间自己学习过一些基本的使用和原理而已。

然后再往深了问,说能不能来聊聊源码之类的,那他更加是说不出来了,因为根本没能力去精读一个开源技术的源码。

所以最后在面试官的眼里,第一位同学,技术广度足够,技术深度扎实,实践经验也丰富。

第二位同学,技术广度差强人意,还算是知道一些,但是技术深度几乎没有,实践经验也几乎很少。明显第一位同学的技术能力要高出第二位同学一大截。

这就是两个人的硬核技术能力的差距,在面试的时候会直接影响面试官的考察。

架构能力的差距

在面试的过程中除了硬核技术能力之外,非常关键体现不同的人的层次和水平的,还有架构设计的能力的差距。

面试官会深入考察你在一个项目里扮演的是个什么角色,首先会摸清楚你们一个完整的大系统是多大规模,你在里面是负责了哪些东西,有没有带人,带人是做什么的。

接着会仔细考察你对自己系统的设计能力,什么样的业务场景,业务多复杂,技术挑战有多高。

然后你如何整体规划和设计你的系统,你如何分配子系统和任务给你带的一个团队,如何把控一个团队来推进一个大系统的开发。

另外,面试官还会出一些你没经历过的系统设计题目,看看你在短时间内,随机应变,能否把一个陌生背景下的系统设计出来一个雏形。

通过这些,可以看出你在系统设计的时候,各个点的考虑是否合理,能否全局把控一个系统,能够把控多大的系统。

这类问题可以完美区分出来一个人的能力。你是到了技术专家的水平,可以带团队负责一个大系统呢?还是说只能带一两个小弟作为高级工程师负责一个大系统中的一两个子系统?通过这一系列的架构能力的拷问,就可以区分出来。

所以第一位同学,他本身就带了几个小弟,算是一个小的团队,而且负责了几个子系统,他可以很好的说出来自己负责的业务场景。

比如说像用户量、并发量、数据量、请求量、技术挑战、技术复杂度,如何规划和设计一个大系统的,如何给小兄弟分配任务的,怎么把控一个大系统不断推进和演进的。这些东西,他都可以说出来。

而第二位同学,就差很多了,他本身在小公司里最多就带过1个小弟一起负责某个子系统的开发,没独立把控过一个大的系统,而且做的系统也没太大的技术挑战,最后说出来的系统架构也很简单,没太多的技术挑战。

所以在这里,又是体现和区分出了两个人的能力的差距。

面试结果的分析

最后综合以上几点,我们先不考虑其他的因素,比如说软素质(沟通能力、表达能力、团队协作能力,等等)。

就上面几块分析,大家就可以看到了。第一位同学:学历更好、潜力更好、技术过硬,能带团队,在大厂把控过有技术挑战的大系统。

所以对于一个独角兽公司而言,在招聘技术专家的时候,是会选择这位同学发Offer的,因为他来了就可以带一个团队,把一个完整的系统抗起来,各种架构设计,团队管理,技术能力,都可以Hold住。

但是第二位同学,学历普通、潜力一般、技术平平没太大亮点,也没太好的架构能力和经验,又一直在各种小公司里干。

最后综合一考量,甚至可能会招聘一个两三年经验的大厂同学到独角兽公司团队给高级工程师的Offer,而不是要一个四五年经验的小公司出身的工程师,所以最后这位同学连独角兽公司的Offer都没拿到。

相信大家看完这篇文章,应该可以从各个层面了解到自己的一些欠缺和差距,以及在求职的时候,出身小公司的同学为什么屡屡受挫,好机会很少。

但是大家也不用因此泄气,小公司的工程师也是可以逆袭冲进BAT大厂的,只要大家坚持和努力,给自己定好明确的规划,一步一个脚印慢慢走,就一定可以做到,最难的,是你决定开始的那一步。

欢迎工作一到八年的Java工程师朋友们加入Java高级交流:854630135

本群提供免费的学习指导 架构资料 以及免费的解答

不懂得问题都可以在本群提出来 之后还会有直播平台和讲师直接交流噢

原文地址:https://blog.51cto.com/13954634/2365147

时间: 2024-10-11 06:31:01

小公司出身的程序员,面试咋这么难?!的相关文章

小公司PHP初级程序员面试小总结

最近换了工作城市来到了上海找工作,可能是我的背景和年限都不是很优秀这前前后后花了一个半月的时间,想想也是挺费劲的哈,还好我身上没有什么负担和贷款也没什么压力,但这段裸辞的经历过程也不是很自在和舒服.想想自己干PHP加上实习差不多有两年了.但是从这段时间找工作的经历过程来看很多公司是不愿意把你实习的经历算成工作年限的.也不知道是不是七月不好找的原因,个人感觉现在上海一两年工作经验并不是很好找,问了其中一个公司的HR告诉我每天都能收到很多一两年经验的简历,而三年经验的数量就会还好.而一些比较好的工作

《JAVA 程序员面试宝典(第四版)》读书笔记之前言

工作五年了一直在小的软件公司混,总感觉自己的专业知识没有太大的提升.当然了中间也换了一两家公司,面试的公司就很多家,总感觉正规的软件公司(无论大小)对于基础知识的考核都非常重视,而不管你说你之前服务过什么NB公司,做过什么样NB的项目,上来就先拿一份基础的题目来考核你看一下你的水平.一开始我是排斥的,总感觉考这些东西没有什么用,反正有的东西工作中不一定就用得到,只要自己能够做出东西来就可以了.问题来了怎么样子才算“做出东西”呢?这个问题总感觉很难从理论上来回答,就拿我这几年工作的事情来说吧,在这

一个程序员面试的毒鸡汤

人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡的. 我一听 呀?那我这岂不是就不优秀了吗,于是毅然决然和女朋友分了手. 人们都说,互联网寒冬来了,这个时候还在大面积招人的公司,必然是牛逼的公司.而这个时候勇敢跳槽的人,必然是牛逼的人. 于是2019年1月25日下午14:00,我开始了字节跳动的社招面试. 为了这天,我前一天排老长的队理了个利落的发型,胡子刮得一干二净.穿上崭新的新百伦999,连袜子都是崭新的NB,墨绿色工装裤配酒红色卫衣,外面再搭一件精致的黑色羽绒小坎肩,准

金九银十,浅谈关于java程序员面试的一些事项

本篇博文针对的是应届毕业生以及工作两三年左右的java程序员. 为什么要跳槽? 这是一个很广义的问题,每个人心中都有一份答案. 例如: 公司的待遇不好, 薪资涨幅不符合预期要求, 厌倦了出差的荒无天日的繁重工作, 公司的妹子太少, 领导太傲娇, 同事之间关系太逼格, 某某同学跳槽到某某公司之后涨到了多少多少钱, 某某同学的朋友的同事的三姑妈家的大儿子的好基友在某某高就, 等等辞职理由. 咱们就不多说了,还是谈谈怎么应付面试吧. 以下内容是我在面试中总结的一些经验,希望这些可以给各位带来帮助和启迪

《Java程序员面试笔试宝典》之字符串创建与存储的机制是什么

在Java语言中,字符串起着非常重要的作用,字符串的声明与初始化主要有如下两种情况:(1) 对于String s1=new String("abc")语句与String s2=new String("abc")语句,存在两个引用对象s1.s2,两个内容相同的字符串对象"abc",它们在内存中的地址是不同的.只要用到new总会生成新的对象. (2) 对于String s1 = "abc"语句与String s2 = "

程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦

程序员面试.算法研究.编程艺术.红黑树.数据挖掘5大系列集锦

《Java程序员面试宝典》学习笔记(基本语法部分)

这是我学习欧立奇<Java程序员面试宝典>第三版的笔记.这篇是基本语法部分. ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象. 在Java中,字符只以一种形式存在,那就是Unicode.在JVM内部一切都由Unicode表示,而输出到外部后(JVM和OS的交界处就是各种输入/输出流)转换为其他形式的编码. Java用了中间缓存变量的机制,所以,j=j++可换成如下写法: te

《Java程序员面试笔试宝典》终于在万众期待中出版啦~

<Java程序员面试笔试宝典>终于在万众期待中出版啦~它是知名畅销书<程序员面试笔试宝典>的姊妹篇,而定价只要48元哦,恰逢求职季节,希望本书的出版能够让更多的求职者能够走进理想的企业 在这里,众多知名企业面试官将为你撕开神秘的求职面纱: 在这里,各种求职达人将现身说法为你揭开求职谜团: 在这里,各种类型的企业招聘细节都会被展露无疑: 在这里,我们将为你抽丝剥茧,还原IT行业的真相: 在这里,我们将为你指点迷津,告诉你职场上的风风雨雨: 在这里,我们将为你点石成金,成为那盏指引你前

程序员面试笔试宝典学习记录(三)(数据库相关知识)

关系数据库系统与文件数据库系统的区别如下: (a)关系数据库系统的主要特征是数据的结构化,而文件数据库系统是数据的非结构化. (b)关系数据库系统中,用户看到的逻辑结构是二维表,而文件数据库系统中,基本元素是文件. (c)文件数据库系统可以实现多媒体文件管理,支持C/S工作模式. acid,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability). 数据查询:select sele