适用范围:
后端开发 && (本、硕应届生 || 工作1-3年 || 目标职级p4-6)
本文主要从以下个方面回顾一下最近跳槽的事,从准备到收获,感触蛮多; 做一个笔记记录一下,也给“迷茫”的人一点点可能的意见
仅仅一家之言, 面试情况因为面试官的原因千变万化,仅作为参考哦~
基础介绍
一、公司面经 + 个人思考
二、准备过程 + 复习计划
三、各种学习资料推荐
基础介绍
个人技术栈:PHP、Java、MySQL、Redis、Dubbo、RocketMQ、ELK、Nginx、git等
因为我自己在老公司也会负责新人招聘和一些培训,其实也算看过蛮多简历,但是一看都是熟悉、熟练、精通,一问啥都不会的情况实在是太多太多了。 我先给出我自己对这些的定义,方便后文,仅算一家之言的暴论
熟悉程度 | 应具备的能力 |
---|---|
了解 | 明白运行机理,使用中出现问题时,具备准确“猜”出问题出现原因的能力 |
熟悉 | 看过部分核心源码/研究过部分设计思路,能快速定位问题原因,并拥有处理使用中遇到的错误的能力 |
熟练 | 看过核心源码 / 深入研究过框架或中间件的设计思路,从设计者的角度上思考过,能熟练的解决使用中遇到的问题,能深入浅出的棒他人理解实现机理 |
精通 | master深入研究过源码实现/设计思路,自己能设计/实现过相同功能的产品,能给出自己在这一方面的系统解决方案 |
我这里提到一个“猜”, 这个来自某缪姓老领导给过我的建议。
这个“猜”不是瞎猜,而是根据经验和问题的表象,大致判断出问题可能出现的原因,其实很多东西的核心是有通的部分的,而对工程师来说,猜的能力培养是对职业生涯终身受益的。不过确实需要很长时间的经验积累+开发经验作为支撑。
自身熟悉程度
语言/中间件 | 熟悉程度 | 具体描述 |
---|---|---|
PHP | 熟悉 | 日常开发训练出的,杭州php环境不是特别好,没有特别精进去研究 |
Java | 熟练 | 中途转,日常开发训练出来的,会是不是开发中捞捞使用类的源码看看 |
Go | 了解 | 硕士阶段写算法论文的时候强制自己使用,很久不用了 |
MySQL | 熟练 | 日常使用很多,有过很多百亿级别表的业务,深入了解过机理,没看过源码不敢说精通 |
Redis | 熟练 | 看过关于数据结构、过期、集群等核心实现的源码,内部做过Redis分享等 |
Dubbo | 熟练 | 深入研究过设计原理,自己模仿过实现。看过SPI、注册中心、集群等部分的源码实现,做过很多笔记 |
RocketMQ | 熟练 | 深入研究过rocketMq实现原理,对核心源码仔细理解过 |
Nginx、Netty、ELK | 了解 | 能熟练使用、接入工程解决问题,出现问题可以快速定位 |
git | 熟练 | 研究过git的整体实现,看过部分git源码 |
Spring | 熟悉 | 深入研究过Bean及Aop相关的源码 |
Mybatis | 熟悉 | 深入了解过源码,开发过插件 |
从上面来看,我个人是没有在简历里体现过精通这个概念的,我个人对精通的理解是行业头部解决人员/ master,或者你自己真的充分有信息可以给出相似或更优的解决方案的。
从我个人面试其他人的时候,说实话,我自己也是比较反感精通这个事= = 曾经面了一个人两年经验,写的各种精通,例如精通git,精通Dubbo、精通mysql、ES等等等。
因为一开始Java基础不是特别好,我改问他git的reset是如何实现回滚的? 答:“这个我不是很清楚,但是我会用,用的贼熟练”。 二问:“我看你写的精通Mysql,那如果我手上一个业务大概10亿量级有性能问题,你有哪些解决思路?” 答:“就是你优化sql,explian找慢的原因就好了,xx(被我打断,想说explain的东西)“ 三问:“那100亿呢?有什么方案,可以不局限在mysql,任何都可以“ 答:“你这个问题问到我了诶(我当时简直无语。。。), 我想想(然后沉默了很久)“ 后面我就没怎么问了。。。。。
一、公司面经 + 个人思考
1.1 公司面经
先说一下我自己的结果好了, 总共投了3个公司,均在杭州。具体部门就匿了,不想被搅到乱七八糟的事情里= = || 以下所以均是技术上的讨论,不会涉及公司机密及面试具体特别的细节 我自身在公司职级是P4(当时不太懂招聘的事情。。被老东家的HR坑了,按理说研究生毕业应该直接p5起。。),因为20年疫情,也没有晋升,自我评估属于p5+~p6的水平,面的也是高级/资深
网易 + 酷家乐 + 阿里 都走完了全流程,前两家都拿到了offer,阿里还在等最后的定级和薪资
前两家实际最后给的反馈也都是综合考虑年限+经历-》都给到p5+ (其实感觉职业前期有过升p再进行跳槽会更好,包括老东家的老领导其实也找我聊过很多次,但是“ 画饼”这种事情,对吧。。还是看实际情况吧) 这三家的职位其实主要招3-5年经验的人, 可能因为硕士毕业 + 1.5年实际工龄,最后都蛮幸运的走完了流程。 首先感谢一下3家的面试官们~
三家公司分析表
公司 | 综合难度 | 职级/年限限制 | 轮数 | 整体耗时 |
---|---|---|---|---|
网易 | 中 | 相对弱 | 3技术+1HR | 非常快1周内 |
阿里 | 中 | 强(年限) | 1电话沟通+1笔试+3电话 | 超级慢好久好久。。。 |
酷家乐 | 高 | 相对弱 | 1电话(技术)+3技术+1HR | 快两周 |
三家总体的综合是这样,下面是具体到公司面试情况:
1.1.1 网易 网易是由老东家离职的一个关系蛮好的朋友内推的,简历筛选1天,电面一天,约现场因为主管有事拖到了第二周,整体速度非常快。。。我人傻了(真的。。)
总结: 网易总体看,我面试的部门 问题比较贴近实际开发,比较考验一个人的技术视野宽度以及深度,对个人思考程度有一定的要求。相对来说属于中等难度,毕竟没问算法
1.1.2 酷家乐
酷家乐也是离职的同事帮忙内推,先是在业务平台,后来被转到技术中台部门(对并发场景解决经验有要求),从实际电面到现场也是一周内走完
总结: 总的来说我个人在酷家乐的面试情况是觉得是有相对来说,最专业的流程,每轮的点也比较深也很广,相对来说难度蛮高。因为还在起步阶段,可能薪资最后不会给到其他大厂那样特别高,知名度也是,我个人面完其实被他们的氛围有点打动的。。。但是毕竟要受很多因素制约,最后选择的可能性不是特别高。。。 不过真心认为酷家乐的技术团队还是蛮强, 蛮推荐去
1.1.3 阿里
阿里面的流程比较长, 我是在20年的9月份尝试出去面过,但是不准备走,只是想通过面试发现自己的薄弱点,所以在Boss上投了一个。先走了三个流程:一个电话面基础,一轮笔试题,一轮业务面。之后就是挂起的状态,在流程中一直锁简历。 这次出来找,一个之前的同事想内推看看,因为简历锁的冲突,那边又捞起来了。。。算是整个流程4个多月。那边说了一下他们的考虑,主要是年限问题,所以想再看看一个季度的成长再决定。
二、准备过程 + 复习计划 开始有跳槽的想法是在20年3月,公司进行了大规模裁员,可能我作为相对核心的开发,两轮都没有裁到我。 这时候实际开始有居安思危的想法,想着对实习 + 工作阶段的东西进行整理,万一出什么事不用再开始忙。 这里主要分了三大步,并给出我自己的例子用来参考: A、基础梳理:2020.3 - 2020.8 先上Boss等平台梳理要求,以及自己的技术栈;按照知识点梳理,思考业务中的使用;对源码的思考;制作复习笔记。 举例1----MySQL: 1、通过书籍 / 文章梳理出知识点 :例如 MySQL技术内幕、极客时间 2、思考自己业务上对知识的应用,并延展开。 例如: 为什么要通用InnoDB引擎? 哪些情况可以用MyIsam呢? 行锁这一块可以用在哪些场景? limit如何实现的? B树、红黑树对B+树的缺点? B+树对计算机系统层面上来说有什么优点? MVCC如何实现的?对业务上会出现哪些问题? 举例2----Dubbo: 1、准备:先过了一遍官网的文档 & 示例。重点读了一本深入理解Apache Dubbo。 2、思考: 画一遍Dubbo的架构设计图 画一遍dubbo注册和请求的流程图。 Dubbo IO线程和通信线程的交互图。 服务治理时的原理,以及timeout部分源码 注册中心如何实现的。 Dubbo 如何和Spring打通的? Dubbo SPI的优点和实现原理。业务中如何使用SPI这种方式做业务呢?等等 这个过程算是很漫长,一定要坚持写笔记,坚持想,坚持看,哪怕是错的也没关系,慢慢水平上来之后再纠错再反思。
B、尝试阶段 2020.8-2020.9 这里主要花了一个月时间去面试,有大公司有小公司,也拿到了相对当时工资来说还不错的offer,最终没有走,因为定的目标就是尝试。 主要目标是总结面试,对面的不好的地方进行整理,再提升。 C、冲刺阶段 2020.10-2020.12 赶上公司双11、12, 也算是一边作为PM带小项目,一遍继续整理知识。 这里算是比较好的机会,总结了很多关于公司的项目目标、规划、项目流程以及管理的经验。 最终算是取到了不错的效果。
总结:
坚持学习,保持热情,相信自己,不要灰心。
三、各种学习资料推荐
1、公众号: 我对现在的公众号其实比较反感, 一是很多人都是在贩卖焦虑 二是很多人都是在刷重复的东西。。想象一下早上打开微信,十几个公众号推一样东西的绝望。。。。 三讨厌标题狗。。。 给出几个我感觉相对有干货的公众号,他们也要恰饭,对于一些贩卖焦虑和标题的文章,就当没看见吧。。。。也算是矮子拔高个了 排名不分先后哦 , 按照微信公众号列表的顺序: 程序员DD 、 Golang语言社区 、 GitHubDaily、 Hollis 、架构师之路、 路人甲Java等
2、git项目、文章 & 网站 https://github.com/doocs
2 Java多线程入门类和接口 多线程社区
Java工程师成神之路
LeetCode、剑指Offer、程序员面试金典题解 题库 - 力扣 (LeetCode)
Snailclimb/guide-rpc-framework
免费在线学习代码重构和设计模式
Data Structure Visualization 数据结构演示 非常好的
怎么学习golang?- Go语言中文网 - Golang中文社区
简明 Vim 练级攻略 | | 酷 壳 - CoolShell vim
CL0610/Java-concurrency java并发总结
3、书籍 & 专栏等 推荐 《大话数据结构》
《大话设计模式》 《Head First设计模式》 《深入理解Java虚拟机》 《深入理解Java内存模型》 《极客时间-mysql45讲》 《MySQL技术内幕-InnoDB引擎》 《高性能MySQL》 《MyBatis技术内幕》 《深入理解Apache Dubbo》 《RocketMQ技术内幕:RocketMQ架构设计与实现原理》
Spring官方文档
《Redis实战》 《Redis设计与实现》 Redis源码 《Redis深度历险:核心原理与应用实践》
《啊哈算法》 《Java8实战》 《Java8编程思想》
《Java多线程编程核心技术》 《linux命令行与shell脚本编程》 《Git权威指南》
《阿里巴巴开发手册-华山版》
4、生产力工具
测试:
charles 种cookie switchHost 改本地host postMan 测试接口 笔记: Notion 超赞 mac 备忘录 Typora Background music
开发: Alfred 可以自己写脚本实现很多有意思的小功能 Intellj IDEA PhpStorm PyCharm DataGrip VsCode Sublime text Iterm + Oh my zsh
— 本文结束 —