欢迎关注个人公众号:石杉的架构笔记(ID:shishan100)
周一至周五早8点半!精品技术文章准时送上!
精品学习资料获取通道,参见文末
目录
1、从一个求职案例引入
2 、学历差距:面试官的第一印象
3、公司背景差距:你的人生名片
4、技术差距:硬核能力的欠缺
5、架构能力的差距
6、面试结果的分析
“ 这篇文章,聊一个很多人感兴趣的话题,小公司的Java工程师和大厂Java工程师一起出去求职同一个职位时,前者的竞争力到底差在哪里呢?
搞明白这个事情,相信很多中小公司的同学可以对自己当前的情况以及跟大厂之间的差距有更加清晰的认识。从而可以更好的规划自己的职业发展路线,更好的去努力争取一步一步的缩小差距。
(1)从一个求职案例引入
以下是一个非常真实的案例,是一个大厂工程师和一个小公司工程师同时求职一个独角兽公司的职位的经历。
其中一个同学,211/985本科学历,出身互联网大厂,四五年经验的样子。技术积累非常扎实,而且参与开发的系统支撑过上亿用户量,有真正的高并发经验。
虽然说那个系统不是他主导设计的,他仅仅是一个资深工程师,负责带几个小弟设计和开发几个子系统。
但是呢,他在这个过程中,全程观察到了大厂里的大规模系统,如何规划、设计、构建以及演进的,如何依托各种各样的技术解决线上很高的挑战。
另外一个同学,普通二本学历,同样五年左右的工作经验,但是一直都在小公司里工作。平时也还算是比较好学,学了一些技术,各种东西或多或少都了解,在小公司出身的工程师里,整体技术还算是比较好一些的。
结果这两个人同时去一个几十亿美金估值的独角兽公司去面试求职,大家猜猜,发生了什么事情?
同样的年龄,两个人的面试结果是天差地别。
第一位同学,顺利拿下独角兽的技术专家的职位以及一大笔期权,还能独立带团队;
第二位同学,居然连offer都没拿到,人家甚至都不愿意给一个高级工程师的职位。
所以这篇文章就从几个方面来分析一下这两种不同的同学,他们之间的差距到底在哪里。
(2)学历差距:面试官的第一印象
其实首先面试官看简历以及面试的时候,对你的第一观感就是两个:一个是学历,一个是公司背景,这俩东西几乎就形成了每个面试官对你的第一印象。
比如说上述两位同学,第一位同学虽然也就是个本科学历,但起码是211/985的名校本科,而第二位同学就是一个不知名的普通二本。
很多人也许觉得学历这个东西是虚的,关键还是能力。对于这个我是部分认可。
确实有的时候我们也见到过,高学历的人他的技术能力、学习能力、人品态度甚至还远远不如一个大专学历的人。
但是也有很多情况下,高学历的同学他的技术底子更好,学习能力更强,更加聪明,后劲和潜力远远比普通学历的同学要好的多。
所以这个学历是不能一概而论的,不能说高学历的同学就一定很牛,也不能说低学历的同学就一定很差。要知道,高学历的同学里也有各方面不好的,低学历的同学里也有各方面极为出色和优秀的。
所以,我的观点一向是不唯学历论,我们在招人的时候,通常情况下都是要求名校本科/硕士学历的。
但是如果是特殊情况下,都会给普通学历的同学一个机会,让他来证明自己的极为优秀的潜力和能力,也可以破格招收。
但是这里有一个很关键的点,那就是从我们过往大量的经验而言,高学历的同学,他当初为了考上名校,往往付出了大量的努力。所以他的学习能力以及潜力,可能往往更好。
而一个普通学历的同学,当初考上了普通的大学,可能是自己没发挥好,但是很多情况下,确实是学习能力没达到那个水平。
所以说,如果拿到两份简历,一份简历是211/985名校本科,一份简历是不知名的本二学校,那么作为面试官,第一印象,其实会潜意识里觉得,这个211/985名校本科的同学,应该学历能力和潜力会好很多,心里会更加期望一些,也会更加认可一些。
那么在面试的时候,面试官内心的个人情感色彩,其实是相对来说对名校同学更加接收程度高一些的。
而对于普通学历的同学,可能就是没什么期待,也没什么负面情绪,就是面试的时候带着很平常的感情色彩来对待。
那么大家想,这个学历的差距,是不是在一开始甚至还没面试的时候,就已经让面试官有了不同的看待了?这就是学历给面试结果带来的第一个影响的地方。
另外,大家可以想象一下。假设两个人的技术水平、项目能力都是一样,但是岗位需求有限,就一个坑,你觉得会招谁?
那想都不用想,肯定是211/985学历的同学!这个就是学历的优势了,在其他方面假设面试结果都差不多的时候,你还是可能会因为学历问题,被竞争对手挤走,然后失去offer,别人因为学历高,就可以拿到更多的offer机会。
(3)公司背景的差距:你的人生名片
除了学历之外,你给人的第一印象,就是你的公司背景。这个其实非常简单,不用我多说,大家也知道。
虽然说很多大厂出身的同学,也有那种能力平庸,技术不太好的情况,小公司出身的同学,反而也有那种技术能力强悍的人。
但还是那句话,大部分情况下,大厂出身的同学,相对技术能力都是比较好的,有保证。
而小公司出身的同学,很多情况下确实技术能力一般,也没做过什么有挑战的技术项目,整体而言比较普通。
所以一般在面试官来看,如果你是知名大厂出身,那么一般刚开始就会对你心里有好感,大家都愿意找知名公司的人进来加入自己,对方的技术和经验有保障。
但是如果你是小公司出身,面试官对你是没任何感情色彩的,不知道你到底怎么样,一切还是要看面试情况。
同样,我们再假设:如果两个人学历差不多,技术能力差不多,项目经验差不多,但是一个是出身大厂,一个是出身小公司,你会要谁?
当然还是会优先选择大厂的同学加入团队了,毕竟人家大厂出身,对大厂自身的一些技术体系见识也多一些,眼界更加开阔一些,哪怕冲着这一点也会让人家进来。
(4)技术差距:硬核能力的欠缺
承接上文所述,接下来上面两位同学开始了几轮面试。
第一位同学的情况之前已经说过,平时非常注重技术积累,经常学习各种技术。
而且这位同学喜欢探索各种开源技术的源码,喜欢研究各种不同场景下技术挑战的解决方案,自己做了大量技术笔记,所以对Java领域完整的技术栈都有很深的积累。
同时,因为在大厂里开发系统,本身在各种技术挑战之下,是有足够的机会实践,将各种技术在项目里落地。
比如说真正用缓存技术来抗每秒几万的并发读请求,或者基于分库分表抗几十亿数据量的存储和查询。
既然如此,面试结果当然是显而易见了。
面试官一定会从并发编程、缓存、JVM、MQ、分布式、微服务、分库分表、NoSQL、高并发等各个环节开连环炮深入的发问,从各种技术的一些基本的原理,到他在项目里的各种结合业务是如何落地实践的,平时遇到哪些坑是怎么解决的,然后深入的一些技术的底层源码级别。
这个同学,都可以回答的非常的好,基本能完全hold住面试官的各种问题。
但是第二位同学呢,那就差很多了,基本上面试的时候,面试官各种发问之下,确实发现这个人对各种技术都有一定的了解,比如说JUC、RocketMQ、Kafka、Dubbo、Redis等技术,或多或少都知道一些。
但是呢,如果往深了问,比如问他RocketMQ在项目里到底是怎么用的?为什么要用?不用行不行?抗了多大的并发?这些问题,他就没法说了。
为什么呢?因为在一些小公司里,可能对MQ用的很简单,甚至都没用,所以他的实践经验并不是很多,他只是业余时间自己学习过一些基本的使用和原理而已。
然后再往深了问,说能不能来聊聊源码之类的,那他更加是说不出来了,因为根本没能力去精读一个开源技术的源码。
所以最后在面试官的眼里,第一位同学,技术广度足够,技术深度扎实,实践经验也丰富。
第二位同学,技术广度差强人意,还算是知道一些,但是技术深度几乎没有,实践经验也几乎很少。明显第一位同学的技术能力要高出第二位同学一大截。
这就是两个人的硬核技术能力的差距,在面试的时候会直接影响面试官的考察。
(5)架构能力的差距
在面试的过程中除了硬核技术能力之外,非常关键体现不同的人的层次和水平的,还有架构设计的能力的差距。
面试官会深入考察你在一个项目里扮演的是个什么角色,首先会摸清楚你们一个完整的大系统是多大规模,你在里面是负责了哪些东西,有没有带人,带人是做什么的。
接着会仔细考察你对自己系统的设计能力,什么样的业务场景,业务多复杂,技术挑战有多高。
然后你如何整体规划和设计你的系统,你如何分配子系统和任务给你带的一个团队,如何把控一个团队来推进一个大系统的开发。
另外,面试官还会出一些你没经历过的系统设计题目,看看你在短时间内,随机应变,能否把一个陌生背景下的系统设计出来一个雏形。
通过这些,可以看出你在系统设计的时候,各个点的考虑是否合理,能否全局把控一个系统,能够把控多大的系统。
这类问题可以完美区分出来一个人的能力。你是到了技术专家的水平,可以带团队负责一个大系统呢?还是说只能带一两个小弟作为高级工程师负责一个大系统中的一两个子系统?通过这一系列的架构能力的拷问,就可以区分出来。
所以第一位同学,他本身就带了几个小弟,算是一个小的团队,而且负责了几个子系统,他可以很好的说出来自己负责的业务场景。
比如说像用户量,并发量,数据量,请求量,技术挑战,技术复杂度,如何规划和设计一个大系统的,如何给小兄弟分配任务的,怎么把控一个大系统不断推进和演进的。这些东西,他都可以说出来。
而第二位同学,就差很多了,他本身在小公司里最多就带过1个小弟一起负责某个子系统的开发,没独立把控过一个大的系统,而且做的系统也没太大的技术挑战,最后说出来的系统架构也很简单,没太多的技术挑战。
所以在这里,又是体现和区分出了两个人的能力的差距。
(6)面试结果的分析
最后综合以上几点,我们先不考虑其他的因素,比如说软素质(沟通能力、表达能力、团队协作能力,等等)。
就上面几块分析,大家就可以看到了。第一位同学,学历更好,潜力更好,技术过硬,能带团队,在大厂把控过有技术挑战的大系统。
所以对于一个独角兽公司而言,在招聘技术专家的时候,是会选择这位同学发offer的,因为他来了就可以带一个团队,把一个完整的系统抗起来,各种架构设计,团队管理,技术能力,都可以hold住。
但是第二位同学,学历普通,潜力一般,技术平平没太大亮点,也没太好的架构能力和经验,又一直在各种小公司里干。
最后综合一考量,甚至可能会招聘一个两三年经验的大厂同学到独角兽公司团队给高级工程师的offer,而不是要一个四五年经验的小公司出身的工程师,所以最后这位同学连独角兽公司的offer都没拿到。
相信大家看完这篇文章,应该可以从各个层面了解到自己的一些欠缺和差距,以及在求职的时候,出身小公司的同学为什么屡屡受挫,好机会很少。
但是大家也不用因此泄气,小公司的工程师也是可以逆袭冲进BAT大厂的,只要大家坚持和努力,给自己定好明确的规划,一步一个脚印慢慢走,就一定可以做到,最难的,是你决定开始的那一步。
而关于如何规划准备,如何面试,可以参见笔者以前的一篇文章:
「非广告,纯干货」中小公司的Java工程师应该如何逆袭冲进BAT?。
(封面,图源网络,侵权删除)
扫描下方二维码,备注:“资料”,获取更多“秘制” 精品学习资料
一大波微服务、分布式、高并发、高可用的原创系列文章正在路上
欢迎扫描下方二维码,持续关注:
石杉的架构笔记(id:shishan100)
十余年BAT架构经验倾囊相授
推荐阅读:
1、拜托!面试请不要再问我Spring Cloud底层原理
2、【双11狂欢的背后】微服务注册中心如何承载大型系统的千万级访问?
3、【性能优化之道】每秒上万并发下的Spring Cloud参数优化实战
4、微服务架构如何保障双11狂欢下的99.99%高可用
5、兄弟,用大白话告诉你小白都能听懂的Hadoop架构原理
6、大规模集群下Hadoop NameNode如何承载每秒上千次的高并发访问
7、【性能优化的秘密】Hadoop如何将TB级大文件的上传性能优化上百倍
8、拜托,面试请不要再问我TCC分布式事务的实现原理!
9、【坑爹呀!】最终一致性分布式事务如何保障实际生产中99.99%高可用?
10、拜托,面试请不要再问我Redis分布式锁的实现原理!
11、【眼前一亮!】看Hadoop底层算法如何优雅的将大规模集群性能提升10倍以上?
12、亿级流量系统架构之如何支撑百亿级数据的存储与计算
13、亿级流量系统架构之如何设计高容错分布式计算系统
14、亿级流量系统架构之如何设计承载百亿流量的高性能架构
15、亿级流量系统架构之如何设计每秒十万查询的高并发架构
16、亿级流量系统架构之如何设计全链路99.99%高可用架构
17、七张图彻底讲清楚ZooKeeper分布式锁的实现原理
18、大白话聊聊Java并发面试问题之volatile到底是什么?
19、大白话聊聊Java并发面试问题之Java 8如何优化CAS性能?
20、大白话聊聊Java并发面试问题之谈谈你对AQS的理解?
21、大白话聊聊Java并发面试问题之公平锁与非公平锁是啥?
22、大白话聊聊Java并发面试问题之微服务注册中心的读写锁优化
23、互联网公司的面试官是如何360°无死角考察候选人的?(上篇)
24、互联网公司面试官是如何360°无死角考察候选人的?(下篇)
25、Java进阶面试系列之一:哥们,你们的系统架构中为什么要引入消息中间件?
26、【Java进阶面试系列之二】:哥们,那你说说系统架构引入消息中间件有什么缺点?
27、【行走的Offer收割机】记一位朋友斩获BAT技术专家Offer的面试经历
28、【Java进阶面试系列之三】哥们,消息中间件在你们项目里是如何落地的?
29、【Java进阶面试系列之四】扎心!线上服务宕机时,如何保证数据100%不丢失?
30、一次JVM FullGC的背后,竟隐藏着惊心动魄的线上生产事故!
31、【高并发优化实践】10倍请求压力来袭,你的系统会被击垮吗?
32、【Java进阶面试系列之五】消息中间件集群崩溃,如何保证百万生产数据不丢失?
33、亿级流量系统架构之如何在上万并发场景下设计可扩展架构(上)?
34、亿级流量系统架构之如何在上万并发场景下设计可扩展架构(中)?
35、亿级流量系统架构之如何在上万并发场景下设计可扩展架构(下)?
36、亿级流量架构第二弹:你的系统真的无懈可击吗?
37、亿级流量系统架构之如何保证百亿流量下的数据一致性(上)
38、亿级流量系统架构之如何保证百亿流量下的数据一致性(中)?
39、亿级流量系统架构之如何保证百亿流量下的数据一致性(下)?
40、互联网面试必杀:如何保证消息中间件全链路数据100%不丢失(1)
41、互联网面试必杀:如何保证消息中间件全链路数据100%不丢失(2)
42、面试大杀器:消息中间件如何实现消费吞吐量的百倍优化?
43、高并发场景下,如何保证生产者投递到消息中间件的消息不丢失?
44、兄弟,用大白话给你讲小白都能看懂的分布式系统容错架构
45、从团队自研的百万并发中间件系统的内核设计看Java并发性能优化
46、【非广告,纯干货】英语差的程序员如何才能无障碍阅读官方文档?
47、如果20万用户同时访问一个热点缓存,如何优化你的缓存架构?
48、【非广告,纯干货】中小公司的Java工程师应该如何逆袭冲进BAT?
49、拜托,面试请不要再问我分布式搜索引擎的架构原理!
50、【金三银四跳槽季】Java工程师如何在1个月内做好面试准备?
51、【offer收割机必备】我简历上的Java项目都好low,怎么办?
52、【offer去哪了】我一连面试了十个Java岗,统统石沉大海!
53、高阶Java开发必备:分布式系统的唯一id生成算法你了解吗?
54、支撑日活百万用户的高并发系统,应该如何设计其数据库架构?
55、尴尬了!Spring Cloud微服务注册中心Eureka 2.x停止维护了咋办?
56、【Java高阶必备】如何优化Spring Cloud微服务注册中心架构?
57、面试官:消息中间件如何实现每秒几十万的高并发写入?
58、【非广告,纯干货】三四十岁的大龄程序员,应该如何保持自己的职场竞争力?
59、【生产实践总结】支撑百万连接的系统应该如何设计其高并发架构?
作者:石杉的架构笔记
链接:https://juejin.im/post/5c6a9f25518825787e69e70a
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。