前言
我是一名 Java 从业者,虽然近些年来,无论是使用规模、开发者人数,还是技术生态成熟度、相关工具的丰富程度,Java 都当之无愧是后端开发语言中不可撼动的王者,也是开发各类业务系统的首选语言。
但我总有种坐不动的感觉。项目还好说,让我用 Java 写系统代码都没有问题,但是如果有人问我 Java 程序运行起来以后内部发生了什么,可以怎么让它运行得更好的话,我就真的有点答不上来。
如果答不好,真的会影响薪酬的多少。
很多人认为线上出现问题可以排查继续解决问题的人牛逼,其实错了,真正牛逼的人都是在问题产生前就解决了(需要意识里面转变和学习思考提高的地方)。
现在不像以前了,以前会点html都好找工作,现在由于学习软件的人越来越多,而且每年大学生都在毕业(而老一辈的也很少换工作)人只会越来越多,有个笑话,随便在大街上扔硬币砸到的那个可能就是搞软件的,现在人员太多,公司为了区分,会多添加维度,每多一个维度可能就会刷掉一批人,核心供大于求,所以我们也必须朝着这些大的方向努力,使得自己的竞争力比别人强。
转折
前文中也有提到,感觉自己有点做不动了,开始在网上找相关的学习资料。偶然间看到了马士兵大佬讲解的JVM视频,意识到自己对于JVM了解的还是太少,于是在这期间开始每天花费两小时恶补JVM相关知识,四月海投简历时意外投到腾讯,出乎意料的拿得了腾讯面试邀请,本以为自己的技术可能达不到腾讯的要求,没想到因为对于JVM的深入研究以及平常对底层知识的学习,五面成功拿下腾讯offer,定级T3-1
下面分享下腾讯面经,供大家参考,希望能帮助到大家!
腾讯五面面经
一面(电话)
- 说说对JVM的理解
- treemap和hashmap有什么区别?
- Java多线程的的5大状态图流转
- mysql主键和唯一索引的区别
- 说说最近的项目
- 如何实现session共享,用redis如何实现
- 缓存击穿的概念和解决方案
- 说说微服务,微服务之间如何管理
二面(现场)
- java nio常?用的三个类
- java里面的同步锁了解吗?Countdownlauch和Cylicbarrior的区别,分别在什么应用场景下使用
- JVM的内存结构?哪些是共享的,哪些是多线程私有的?Java虚拟机栈里面存放的是什么?
- 如何自己实现一个线程池让别人使用?
- 哪些情况会触发Java的类加载?
- 手写代码:快速排序、单例模式,画一个工厂和装饰者模式的UML类图
- AOP的实现原理?
- 如何优化一个慢查询
- Java锁有哪几种?可重入锁和不可重入锁的区别?
- Lock和synchronized的区别?它们都是可重入锁吗?哪个效率更高?
- 手写SpringMVC DispatcherServlet的大致实现
三面(现场)
- 平时的项目并发经验有哪些?
- redis数据结构
- redis线程模型
- redis数据淘汰机制
- 读过redis源码吗?
- mysql实现事务的原理(MVCC)
- MQ底层实现原理
- 数据库事务acid,事务操作,怎么加锁,分布式系统锁
- 什么情况容易发生雪崩?如何来解决
四面 :技术面
- 主要是并发想的项目介绍
- 技术含量较高的项目,从架构设计到部署问了一遍
- 高并发架构的设计思路
五面 :HR面
- 主要问手里的offer?
- 聊人生和未来的规划?
- 以及相关的薪资?
面试答案
面试过程中问到的问题都已经整理成了文档(附答案),需要的朋友可以转发关注后,私信回复【JVM】或者【学习】来免费获取!
JVM学习图谱
学习就是要有规划的学,这样可以帮你更好的吸收理解知识,这是马士兵大佬当时整理的一份JVM的学习路线,我觉得这么学下来很顺畅,也一起分享给大家!
相关文档、视频资料
最后
如果说你有想要去的大公司,一定要提升好自己,让自己的能力和素质与公司匹配的上,我也一直相信,机会永远是留给有准备的人。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。
下面是额外分享给大家的学习资料,毕竟每个人的需求不一样,有缘点进来那就领取份资料再走吧!
以上视频,pdf均免费放送,转发关注后,私信回复【JVM】或者【学习】即可免费获取!
最后祝愿各位身体健康,顺利拿到心仪的offer!
面试造火箭,工作拧螺丝,希望能帮到你
多多转发让更多人受益!!