相信很多程序员都有一个进大厂的梦想,毕竟在更高的平台,接触的项目也是更为先进的,自然自己的视野也会变得更广阔。而有了这些经历经验,薪酬待遇更是水涨船高,毕竟在追求财富自由的路上,我们都才刚刚起步。
有了梦想,就要付诸实践,让梦想照进现实。在这里笔者为大家分享一位粉丝的励志经历,看他是如何一步步从CRUD,跳槽晋级阿里P7的。
交代背景
普通本科毕业,浑浑噩噩的过了四年,当走出校门后才开始为自己的未来担忧。因为不是重点,大学学习氛围本不就很好,再加上本人的一点惰性,四年时光相当于荒废了,只拿到一纸毕业证书,想来也是唏嘘。
开始工作后,因为能力不行,人还比较直,在工作中是各种不顺,想着慢慢混经验的我,终于被自己的无知打败,成了无业游民。在此本人居然还沾沾自喜,认为终于能好好休息一阵儿啦,终于不用每天加班到十一二点了。但是仅仅过了一周,面临房租、吃饭的问题,逐渐显露了出来。
每天大手大脚,毫无节制,而自己又没有了收入来源,逐渐意识到危机,于是开始了自救计划。每天上午狂练基础,下午就是各种投简历,因为实在快要坚持不下去啦···
当时对于工作饥不择食的我,很快就入职了一家小公司,从事的最简单的CRUD,一做就是五年啊。终于在今年这个特殊的时期,决定试水一下自由市场。
这一两年疫情来的猝不及防,打乱了太多人计划。本人原计划继续在公司历练几年,再想着往更高的平台去争取,但这场疫情无情的打碎了我的想法。因为疫情,很多大公司都面临裁员,更何况在经济寒冬下无数小公司了。
既然无法抗拒,那也不能随波逐流。既然哪哪也去不了,那索性在家深入自学。从Java多线程,再到RPC框架,从微服务架构,再到高并发、高扩展。狂打基础,狂刷面试题,想着奋力一搏,也进进大厂,那得多美滋滋~~~
抉择后的学习路线
Java多线程
- 进程和多线程的概念及线程的优点
- 使用多线程
- currentThread0方法
- isAlive0方法
- sleep0方法
- getld0方法
- 停止线程
- 暂停线程
- yield方法
- 线程的优先级
- 守护线程
- 等待/通知机制
- 方法join的使用
- 类ThreadLocal的使用
- 类InheritableThreadLocal的使用
微服务设计原理及架构
- 分布式架构
- 微服务架构
- 构建微服务架构的系统方法
- 微服务架构的挑战
- 服务建模方法
- 服务拆分
- 服务集成
- 服务治理
- 负载均衡
- 数据一致性
- 微服务架构实现技术
- 微服务架构和研发过程转变
JVM实战调优
- Java虚拟机概述
- Java执行引擎工作原理:方法调用
- Java数据结构与面向对象
- Java字节码实战
- 常量池解析
- 类变星解析
- Java栈帧
- 类方法解析
- 执行引擎
- 类的生命周期
······
有了足够的基础知识作为支撑,在网上也就开始了投递简历,先后收到美团、拼多多、字节跳动和蚂蚁金服的面试通知,于是就开始了网上面试。
美团二面
一面
- 自我介绍
- 讲讲JVM
- Lock和Synchronized的区别
- mybatis用过是吧,说说mybatis底层是怎么实现的。
- BIO,NIO,AIO知道吗,然后又说了说select,epoll
- https过程说一说,为什么既要用非对称,又要用对称
- 写道题,二叉树右视图
- 反问环节
二面是在下午,早上面试官亲自打电话约时间
- 介绍下你之前在公司实习做的啥。
- 你详细介绍一下你觉得最能凸显你能力的一个。
- 你之前都是做的图像相关的是吧,数据库用过吗
- 讲讲数据库的事务吧,知道多少说多少
- 刚才提到了隔离级别,mysql中分别都是怎么实现的
- 索引了解吗,知道多少说多少
- 刚才提到了B+树,B+树详细说说,指针都是怎么指的,为什么能减少磁盘IO
- 再来做个算法题吧,给一个点集,找出在一条直线上的最多点数,我想的太简单了,重复点,浮点数精度的都没考虑到,难怪面试官让我再好好检查检查
- 反问环节
能感觉到自己发挥的不是很好,还是有点紧张,之后就没有下文啦······
阿里二面
有了之前失败的经历,这边就是志在必得!!!
一面
- HashMap数据结构? put, get过程?扩容机制? JDK1.8版本中相比1.7做了哪些优化?容量怎么计算的?
- ConcurrentHashMap数据结构?如何保证线程安全的?相比1. 7做了什么优化?
- 为什么String被设计成不可变的?
- 限流算法有哪些?区别是什么?令牌桶如何实现?
- 一致性hash算法?
- JVM内存模型(有些面试官其实只是上你回答内存布局) ?各个内存区域分别是做什么的?有哪些是共享的?
- 年轻代,老年代区别?垃圾回收算法分别是?垃圾回收器有哪些?
- CMS具体的工作流程? G1与CMS区别?
- GC Root对象有哪些?
明显感觉难度提升,但发挥还算不错。
二面
- spring和Springboot的区别。
- Spring中bean的加载,Springboot没有配置 包路径,它是怎么实现包路径扫描的。
- Spring注解原理。
- SpringdataJPA和Mybatis的区别。
- 类加载机制? tomcat为什么打破双亲委派?
- 线程池有哪些?一般怎么用?这些参数的意义是什么?
- 线程通信的方式?
- Thread有几种状态?
- sleep与wait区别
- volatile作用?原理?
因为比较熟悉多线程,中间虽然有卡顿,但还是在面试官的指引下答了出来,感觉问题不大。果然在几天后,收到了阿里的offer。
换做是你,你能答到什么程度呢?
笔者根据这几次面经,整理了一些常见面试题,希望能帮到有准备面试的朋友。
大厂真题
专项面试题
有对这些面试真题感兴趣的,想要深度学习的朋友点击下方资料获取方式即可免费获取啦!
后记
面试造火箭,工作拧螺丝。只有把平时基础做好了,自己能力上去后,就有更多的可能性去选择自己想要的工作生活。最后预祝大家都有一个美好的前程~~~
喜欢笔者请多多点赞评论转发,关注笔者,后续笔者会再带来更丰富的学习内容更新,真心希望能够帮到大家更好的提升自己~~~