写在前面
相信不少Java工程师的职业生涯中,尤其在早期,都或多或少经历过下面的场景:
-
公司规模小,项目没有任何技术挑战。每天重复着CRUD的工作,你也自黑为CRUD工程师。
-
工作于外包公司,不同的项目经常用不同的技术。这个技术还没搞明白呢,又得快速上手另一个技术了。你就像一块砖,哪里需要往哪里搬!
-
常年工作于传统公司,技术陈旧,害怕背锅,老大不想也不敢上新。就这样温水煮青蛙慢慢煮着。在这个过程中,你也和一些主流技术渐行渐远
正常情况下,你这样干着,好像也没啥。然而一旦因为种种原因,你准备跳槽,问题就来了!
跳槽面试,尤其是去互联网公司面试,你平时工作的内容将淋漓尽致的体现在面试中,并且被无限放大
浏览招聘网站,准备简历的时候,你突然发现自己技术栈严重脱节掉队,好像就会一些框架的使用。
这么多年的工作经验,好像就只比刚入行的小年轻多做了一些CRUD的项目,别的似乎就没了!
好不容易,你拿到了一些一线大厂的面试机会。面试现场,面试官针对一些高阶技术点进行连环炮式的提问,你一脸茫然。
每次去大厂面试,出来总是汗流浃背,被虐的很惨。
我们来看看,一个典型的一线互联网公司的面试现场:
面试官
你在系统里用过消息队列吗?候选人
用过的
面试官
那你说一下你们在项目里是怎么用消息队列的?候选人
我们有个订单系统,订单系统会每次下一个新的订单时,会发送时一条消息到ActiveMQ里面去
后台有个库存系统负责获取了消息然后更新库存。
(候选人回答完毕,自我感觉良好)
面试官
那你们为什么使用消息队列?
你的订单系统不发送消息到MQ,直接调用库存系统接口,咔嚓一下,库存不就更新了?候选人
额。。。(我没想过啊,老大让用就用了,只能硬着头皮胡扯了几句)
面试官当然听得出你的慌乱,气氛开始有点尴尬了
面试官
那你说说用消息队列都有什么优点和缺点?候选人
这个。。。(确实平时没怎么考虑过这个问题啊!继续胡言乱语)
面试官
kafka、activemq、rabbitmq、rocketmq都有什么区别?
(面试官语气已经有点严肃了!)候选人
我们就用过activemq,别的没用过。。。区别,也不太清楚
面试官
那你们是如何保证消息队列的高可用啊?候选人
这个。。。我平时就是简单走api调用一下,不太清楚消息队列怎么部署的
面试官
如何保证消息的可靠性传输啊?要是消息丢失了怎么办啊?候选人
我们没丢过消息啊。。。
面试官
那如何保证消息的顺序性?候选人
顺序性?什么意思?还要保证消息的顺序性?
面试官
如何解决消息队列的延时以及过期失效问题?
消息队列满了以后该怎么处理?
有几百万消息持续积压几小时,说说怎么解决?候选人
我平时暂时还没遇到过这些问题。。。
面试官
如果让你写一个消息队列,该如何进行架构设计?说一下你的思路!候选人
(汗流浃背)我还是走吧。。。。
以上就是互联网大厂一个典型的针对消息队列MQ的面试连环炮
虽略有夸张(候选人技术一般不至于low成那样),但却真实反映了不少Java工程师面试的痛点。
很多同学往往只知道MQ、缓存等技术的基本使用,对很多深层次的技术问题从没思考过,出去面试人家稍微问深入一点,就原形毕露
正是基于上述痛点,去年6月,我发布了一套针对Java工程师的面试课程:
《互联网Java工程师面试突击(第一季)》
我希望用一个短期突击的方式,帮助广大Java工程师快速梳理准备互联网公司的高频Java进阶面试知识点。
如今,差不多一年时间过去了!
随着课程在网络上快速传播,成千上万的同学快速夯实了Java进阶技术栈的知识体系。
这些同学通过系统的学习,对上例中这种某个技术点的面试连环炮,差不多都能hold住了
同时,我也在后台收到大量留言,不少同学反馈说他们以前面试,可能10家公司都拿不到1个offer,但是认真学完课程,现在能轻松拿好几个offer。
此外,有同学还将《Java面试突击第一季》课程整理成资料,发布到GitHub。
短短半年多,就有了24000多stars,成为2019年 GitHub 第二受欢迎的 Java 项目
GitHub的部分截图如下:
面试突击第一季不能解决的问题
然而,事情并没有想象的那么顺利。。。
有部分同学反映,虽然学习了第一季内容,技术确实提升不少,出去面试也能拿下不少offer,但似乎感觉还是缺了点什么。。。
这些同学在面试中可以抗住对于某个技术的普通连环炮,但是如果面试官再深入拷问,就回答不出来了。
举个例子:当面试官针对Dubbo的一些技术原理来个连环炮,可能觉得自己答的还不错,基本能抗住。
但是紧接着,一些厉害的 BAT 面试官可能会继续下一轮升级版的连环炮,炮火更加猛烈。
比如下面这个升级版的分布式10连炮:
-
你们的服务注册中心进行过选型调研吗?
-
能对比一下各种服务注册中心吗?
-
给我画一下你们的服务注册中心部署架构,生产环境下怎么保证高可用?
-
如果你们需要部署上万服务实例,现有服务注册中心能否抗住?如何优化?
-
如果网关需要抗每秒10万的高并发访问,你应该怎么对网关进行生产优化?
-
你们系统每天有多大访问量?
-
每个服务高峰QPS多少?
-
压测过服务最大QPS吗?
-
如果系统访问量比现在增加10倍,你们考虑过系统的扩容方案吗?
怎么样,这一通猛烈炮火下来,是不是有点头晕目眩,感觉吃不消。
为什么会出现这种情况?
答案很简单!因为考察的全是生产环境的实践经验以及生产优化经验,然而你并没有。
因此,很多同学还是跟BAT、京东、美团、滴滴等大厂失之交臂。
于是今年上半年,公众号后台收到最多的问题是:
老师,你啥时候出面试突击第二季啊!
针对上述问题,其实我也做了分析,即使在学习了《Java面试突击第一季》的基础上,大家在面试时仍然存在如下问题:
一、对各种技术在项目中如何落地,没任何概念
举个例子,比如分布式事务,很多人知道分布式事务的常见技术方案。但是这些方案:
-
在自己负责的系统里应该怎么落地?
-
技术该怎么选型?
-
更进一步,如果核心链路并发量暴增10倍,这套技术选型还能抗住么?
对这些进阶技术在项目中的落地经验,大部分Java工程师可能都一无所知
二、缺乏生产实践经验,仅仅知道原理,会简单使用
比如说网关技术,可能你们的系统里引入了网关。那可能刁钻的面试会问你:
-
网关在生产环境下对高并发、高性能的生产优化做过吗?
-
它到底应该怎么部署?
-
服务注册中心的性能瓶颈在哪里?
根据我多年的面试经验,很多同学对这些东西都不知道。一旦面试官针对这些内容发问,很多人就彻底蒙圈。
三、对一些技术的底层都不了解
最典型的一个问题,面试官从技术原理的角度拷问了Dubbo之后,很可能直接让你聊聊:
如果让你设计一个类似Dubbo的RPC框架,从网络通信、代理机制、负载均衡等各个环节考虑,该如何设计?
Spring Cloud也是同理,很多人都会使用,但是如果面试官让你深入聊底层各个组件的架构原理,大部分人就说不出来了。
如何解决这些痛点?
上述这些问题,都和生产实践结合紧密,涉及范围广,不是简单录制一个Java面试突击第二季就能搞定的。
经过反复考虑,我决定以专题为单元,设计 6 季 Java 进阶面试训练营
这六季将涵盖面试最热的六大技术专题:“分布式”、“微服务”、“海量数据”、“高性能”、“高并发”、“高可用”
我将带着大家重点解决下面两个问题,彻底解决面试痛点:
-
如何将各种高阶技术和架构落地到自己的项目里?
-
生产环境下的架构实践和优化到底什么样的?
现推出第一季:
《21天互联网Java进阶面试训练营》(分布式篇)
训练营亮点:
我用下面一张图,概括了训练营的几大亮点:
注:训练营详细目录大纲,请参见文末
课后作业(五星重要)
为啥把作业单独拎出来强调?因为它实在太重要了。
授之以鱼不如授之以渔!如果说我课上传授给你的是鱼,那么你学完后,能将这些技术,真正落地到自己手头的项目中,这才是渔的能力。
这个渔,是我真正想传授给你的东西!
而这个渔的能力,一定得通过大量的作业才能锻炼出来。
所以在每天的课程讲完后,都会布置一个作业,大家需要去思考:
-
如何将一个进阶技术融入自己的系统业务流程?
-
具体应该怎么设计技术方案?
-
如果你生产环境遇到技术挑战,应该怎么来处理和解决?
因此,你一定得做作业!一定得做作业!一定得做作业!重要的事说3遍!
在作业中暴露问题,然后通过讨论交流答疑,解决问题。这是最有效的学习路径!
下面是一些作业示例:
-
作业:你们公司的服务注册中心怎么技术选型的,生产环境中怎么优化?
-
作业:你们公司网关是怎么技术选型的,假设有高并发场景怎么优化?
-
作业:画出自己系统的生产部署架构图,梳理系统和服务的QPS及扩容方案
-
作业:你们公司核心链路是否有事务问题?分布式事务方案怎么调研选型?
这些作业你只要去做,就一定会有问题。而作业暴露出的问题,正是你面试中最缺乏的短板
而一旦你解决了这些短板,你就会掌握一项独特的能力。
那就是当很多人还停留在学习各种技术的理论知识的时候,你已经深度思考和总结了这些技术在自己的系统中如何落地,积累了架构经验和生产经验。
如果你具备了这项能力,即使面对刁钻的BAT面试官的深度拷问,你也绝对可以从容应对。
这立马会让你的面试表现提升几档,跟普通工程师拉开巨大差距!
作业答疑 & 交流讨论
课程布置了大量作业,大家完成作业时,对于技术如何在自己系统中落地,一定会产生各种问题。
不过别担心,我们提供了完备的答疑服务!我将邀请之前一批优秀同学,组成助教团队。
这些同学就职于阿里巴巴、蚂蚁金服、京东、滴滴、携程、VIPKID、每日优鲜等各大知名公司,担任资深工程师、技术专家以及架构师
在每天的学习过程以及完成作业的过程中产生的疑问,可以在专栏的评论区内提出,每天都会由我和助教团队一起对评论区中大家的疑问进行解答
通过学习、完成作业、提问以及获取答疑的过程,相信每个同学都能够掌握扎实的技术实践经验
同时能够非常清楚各种技术在自己的项目中到底应该如何落地,各种生产实践经验到底如何运用到自己的项目中
我会和助教们一起,入驻面试训练营的微信群,大家平时可以在微信群里,针对各种技术自由讨论,也可以讨论跳槽面试等各种问题,同时我和助教团队也会参与到大家日常的技术讨论中来
另外,每天我们都会挑选优秀的作业以及典型的提问,并且给出详细的点评,然后推送到微信群里供大家学习交流
终极服务:集齐六季、召唤神龙
学习从来都不是一件轻松的事儿,整个 6 季是一个漫长的过程,需要的是毅力和坚持。
为鼓励坚持学习的同学,对于学完全部 6 季的同学,将可以集齐六季,召唤神龙,获取以下的面试一条龙的终极VIP服务,具体如下:
-
简历指导:我将对你的简历进行一次360°的诊断,告诉你如何优化简历,才能从上千份简历中脱颖而出
-
内推渠道:我们聚集了阿里、京东、滴滴等各种一二线互联网公司的内推资源,只要你敢投,我们就敢推!
-
面经分享:我将邀请之前跟我学习课程,并且在我的指导下面试上阿里巴巴、蚂蚁金服、京东、滴滴、携程、VIPKID、每日优鲜,等一线互联网大厂的同学,进行直播分享,现身说法,跟大家交流经验!
-
模拟面试:还原真实面试现场,通过比真实面试更强的压力面,极限压榨你的潜力
-
实际面试中的问题答疑和指导:在你实际面试过程中被问到的各种自己不会的问题,都给你进行解答,全程保驾护航
-
面试真题大礼包 && 面试实用技巧
-
200+ 一线互联网公司高频面试真题(含详细指导和解析)
-
每一轮技术面中的面试技巧(全部结合真实面试案例),比如:
-
如何引导面试官到自己熟悉的领域?
-
遇到不会的问题,如何巧妙化险为夷?
-
如何在技术面中巧妙的掌握主动权?
-
面对面试官高压的连环炮,如何巧妙应对?
-
-
HR面的面试技巧,识别并拆解HR面试中的各种套路
-
-
offer选择指导、职业规划,让你的面试完美收尾
注:神龙是专为坚持学习完 6 季的同学准备的,只送不卖!
你的收获
如果你跟着我的步伐,充分掌握全部 6 季的内容,踏实完成所有作业,你的能力将会有质的飞跃。
你积累起来的深厚内力,加上最后这条终极神龙的强力加持。出去面试,可以横扫国内所有互联网公司
没有任何一家互联网公司的面试能难得倒你,包括 BAT 的面试
训练营入口
训练营将在公众号狸猫技术窝更新,如何进入:
1、扫描下方二维码,关注狸猫技术窝
2、点击菜单栏知识店铺,扫描弹出的二维码,即可进入狸猫技术窝的知识店铺
3、进入店铺后,右上角三个点 ... ,选择收藏,将店铺收藏至你的微信个人收藏夹,方便下次访问
训练营详细大纲
END
欢迎长按下图关注公众号
石杉的架构笔记
BAT架构经验倾囊相授