一、需求背景
1. 人过而立,举头望家老,低头见千金。另有家庭历史遗留债务,急需一份高于目前收入的工作;
2. 工作经验M(M > 5)年&&技术经验N(2 <= N <=3)年&&自己属于需求驱动型码农 => 需要一个能接触到新知识技能以及对已知知识域需要深度挖掘的平台;
PS: 需求驱动型码农
工作中需要的才会去不惜一切快速掌握
3. 当前工作单位数据传统型企业大厂 ,原谅我一生不羁放纵爱自由,需要一份在一个合理的度下的自由团队环境
二、需求周期
45人天
三、分析
1. 现状
有一点底子,学习能力强。对知识深度掌握不够,存在两个显著弱点:1. 知其然不知其所以然;2. 知识不成体系。 优势:逻辑思维较强,对需求把握准确,对优雅代码有追求。作为项目核心成员,对所做项目需求以及实现细节清楚。本次跳槽时间充裕(45天)。
2. 解决方案
1) 调研市场需求,分析期望职位的要求
2)紧急补充缺乏知识,做到入门,起码被问到时多少能说点
3 ) 设定2 - 3个目标岗位放在最后,前期选择类似的职位试水,不断复盘,以战养战
三、 实施
1. 到招聘网站上搜索期望职位相关要求,得出用人单位对目标技能的需求。笔者此次期望职位主要对一下技术栈有着高要求:
a. jvm内存模型以及调优、GC相关知识
b. 多线程高并发经验
c. 微服务分布式系统
d. 对常用框架要求精通,阅读过源码
e. 面对复杂、突发问题的应变能力
2. 修改招聘网站上的简历并将状态设置为“公开”,等待招聘人员联系
3. 知识救急:
a. jvm相关
b. JUC相关
c. 微服务、分布式
阿里小马哥 Java 微服务实践 - Spring Boot / Spring Cloud
d. NIO
4. 面试与迭代
面试主要心得
对于高P职位,用人单位已经不会单独对具体知识点进行提问了,取而代之的是先让应聘者介绍自己的工作经历以及自己最熟悉的某个项目。介绍的过程中面试官会记录相关的关键字,这些就是待会需要跟应聘者展开讨论的。介绍项目时,应聘者一定要陈述清楚项目的业务流程,关于项目的技术架构要尽量去描述,但不能自吹,否则就是给自己挖坑。在介绍过程中,最好能阐述你自己认为还存在的隐患问题(比如:能否满足高并发、大数据量需求)以及计划如何解决、当前的解决方案是什么。 待项目介绍完毕后,就是面试官就你描述的项目进行一些场景扩展的相关讨论,这里会是整个面试过程中的高潮,你的基础、技能视野、技能深度、经验见识都会被综合考察。 因此,对于有计划面试高P职位的伙伴,在平时工作中无论项目如何,都要尽心尽力去关注每个细节,把整个项目尽力去吃透。
四、 整理面试过程中的一些问题(不是直接提问而是穿插在项目讨论中的。不给出笔者答案,欢迎评论区讨论)
1. Netty 底层 “被动轮训机制” 有什么替代方案或者如何提高这种机制的性能;
2. 在一次业务处理过程中需要按顺序调用多个rpc服务,如何做到多个rpc服务的最终一致性?
3. 如何让一段程序并发的执行,并最终汇总结果?
4. 如何使用阻塞队列实现一个生产者和消费者模型?
5. java的内存模型及其工作流程
6. volatile有什么用?其工作原理是什么?
7. 描述一下 StackOverFlowException、OutOfMemoryError产生原因,如何排查?如何解决?
8. 谈谈你对java平台的理解
最后
思绪混乱、愿大牛莫喷!!