不明白JVM虚拟机还怎么面试?程序员翻身之路

2023-10-31 05:59

本文主要是介绍不明白JVM虚拟机还怎么面试?程序员翻身之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

毫不夸张地说,JVM是现代软件工程最成功的案例之一。因为它自带GC,又有无数可以微调的参数,且运行极其稳定可靠,所以,许多厂商的核心业务系统,才敢放心地用Java编写,运行在JVM之上。

近几年深入学习JVM调优的人越来越多,因为互联网一线大厂的Java高级开发工程师JD中都明确要求了“JVM调优”的能力。JVM调优是跳槽大厂必备的技能,但是由于JVM知识体系过于庞大,非系统学习难以学透,并且即使掌握了全部理论,没有实操,依然无法应对面试!

今天,特将腾讯大佬疯狂加持的“千万级”JVM 笔记分享给你们,从思维图到优化再到架构,带你轻松上手,一键搞定。

百万级JVM笔记,完整PDF版,文末即可免费获取下载。

正文

我的第一份工作是在一家外企,当时抱着“逃离”上海的想法去了二线城市的分公司,但是管理文化氛围跟总部几乎都是一样的,这份工作经历对我后面的工作不论是做事风格、习惯上还是思考问题的方式方法上都有很大的影响。后面陆续进入国企,民企,再进入初创公司,从公司规模上可以说各种类型的都有过体验。下面从环境因素,平台效应因素等几个角度说说自己的感受。

1. 环境因素

环境对一个人的影响还是很重要的,不论是大家熟知的“近朱者赤近墨者黑”的说法,还是令我们中国人挤破脑袋的“学区房”现象,都说明环境对一个人的成长起着至关重要的作用。

小公司与大公司的环境差异首先体现在人员的素养、水平上。大公司的准入门槛相对高一些,所以人员的素质、水平也相对要高一些,如果你周围牛人比较多的话,跟牛人待久了,你也可能慢慢就步入牛人之列了——“近朱者赤”。而小公司,尤其是初创公司,为了尽快招人干活,往往人员的素质、水平会良莠不齐,你可能很难找到一个各方面让你信服,想跟着他学的真正的“牛人”。

其次在制度、流程规范上。大公司在制度、流程、规范方面相对健全完善,不论是人事管理还是日常合作分工都比较明确,你知道什么时候应该干什么(因为都给你安排好了),处理什么事情应该找谁,都有章可循,有人可找。而在小公司,可能很多人感觉的就一个字——“乱”,人员职责、分工、权限没有明确定义,没有人引导,不知道在什么阶段应该干什么,或者怎么干,明明是个小兵,老板却恨不得你是个全才,啥事都希望你能搞定。有人把在大公司工作比喻是做一颗螺丝钉,而觉得在小公司才能锻炼综合能力,但我觉得在一定的阶段,螺丝钉似的工作才能让你在专业能力上面得到更大的提升,而小公司所谓的综合能力,往往演变的是“打杂”能力,老板为了节约成本,充分发挥(压榨)每个人的能力(价值),往往一人要分饰多角,比如做人事的既要管招聘,又要管行政,甚至还可能被拉去监督项目进度,很难让你在一个专业的领域深度成长。

再次在产品规模上,大公司产品的日活规模可能少则上百万,多则上亿,不论是在技术实现还是产品运营上,都需要较高的要求与水准,你在其中能学习的技能与套路是小公司日活几千或几万的产品规模无法比拟的。

最后在文化氛围上,一般大公司都有形成自己的企业文化,包括周围人的工作风格、习惯,都会对你产生潜移默化的影响。比如我现在的不论是写代码,还是写文字,都会反复检查好几遍的习惯就是在第一家公司工作时养成的。因为你的每一行代码你的leader可能都会仔细帮你review,找出有问题的地方让你反复修正直到合格,你的每一封邮件都会被别人(在外企很多时候还包括美国人、印度人)认真查看,所以促使你在发出前会仔细核查是否有遗漏的点,是否存在错别字或语法错误,久而久之,就养成了这种反复检查的比较严谨的做事风格。而在小公司,一般很难在短时间内形成自己的企业文化,很多事情的处理都比较粗放,缺乏对细节的把握,你很难从企业文化氛围上受益。

如果用游泳来比喻大公司与小公司的差异,我觉得大公司就像是一个掌握各项泳姿、动作标准的游泳运动员,有规范有节奏,从而游得更远;而小公司则更像一个会“狗爬式”的乡下野孩子,虽然路子野,但有效——尽管比较费力,但是能游起来,但能游多远,得看方向对不对,人能不能坚持。

2. 平台效应因素

现在有些企业招聘,都明确要求毕业院校必须是985、211,甚至有些岗位直接面向BAT。前不久看到一个案例,上海交大硕博毕业因本科不是211,而被招聘企业直接拒绝。

现实就是这样,看背景,看出身。名企工作与名校毕业一样,对后面的跳槽都会有较大的加分与优势。从小公司跳大公司难,但从大公司跳小公司就容易很多,见过许多阿里系的普通技术人员跳到中小企业做技术管理者的情况。

名企光环,除了对后面的就业与跳槽方面具备优势,在社会活动上也具备一定的优势,比如现在很多技术书籍,相当一部分出自阿里系,不是说非阿里系的人不具备这个能力,而是因为有着阿里这个名企光环,出的东西更容易被人接受与认可,尽管不一定水平有多好。

3. 什么人适合去小公司

毕竟不是每个人都能去大公司,那么什么人适合去小公司呢?我觉得可能主要包括两类,一类是自己在某个领域已经取得了较好的成长,具备了独当一面或者懂得如何带领他人来做事情的能力,这种情况一般是为了追求高薪或对某个领域或公司比较看好,有自己想法的人;另一类是目前还不具备进入大公司的资本与能力的人,人总得工作与生活,所以不得不先进入小公司成长,但这部分人除非自身公司发展特别好,否则还是应该尽力往大公司靠,努力进入大公司体验其管理模式与文化氛围,对你整个职业生涯是有很大帮助的。

4. 选择什么样的小公司

选择什么样的小公司比较好,虽然很多时候也没有太多的选择,毕竟好的小公司也是可遇不可求的事情,但如果有的话,我觉得还是尽力选择满足如下四个条件的小公司比较好。

  1. 靠谱的老板。小公司的管理文化与前途基本由老板的品质与能力决定,所以一个有能力、靠谱的老板是第一要素。
  2. 高水平的管理团队,技术、管理、营销各方面。管理团队对于创业公司来说非常重要,只有一个稳定的各方面成熟的团队,成功的几率才会大一点,你在里面能获得的成长空间也更多一些。
  3. 产品项目具备长远发展的潜力。企业经营就是做一个别人愿意花钱购买的产品,并寻找一个将产品源源不断卖出去的方式,所以产品是不是刚需,有没有人买单,能不能长久很重要。
  4. 可靠的资源与渠道。有可靠的资源与渠道,才能将产品源源不断地卖出去,企业才能保持可持续发展。

以上四点从上往下重要性依次递减,同时满足四个条件的小公司应该是极少的,是可遇不可求的事情,可按从上往下的重要性进行选择。

另外进入小公司,可能常见的一个东西是期权,期权具备一定诱惑力,但是也要理性看待。如果以上四点都靠谱,没有期权也能获得很好的锻炼与成长,如果不靠谱,那么就算拿了期权大概率也是一个美丽的梦,看起来很美好,但不会成真的那种,所以面对期权(画饼),也要保持理性。

5. 职场没有伊甸园

最后,不论是大公司,还是小公司,都不存在职场的伊甸园,只有自己不断成长,进步,自己强大了,才有更多的选择空间。

最后

各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了,需要的话请**点赞后点击这里免费下载文章资料!**

(img-gL2YLRyT-1624604316219)]

[外链图片转存中…(img-VvZF2ret-1624604316220)]

这篇关于不明白JVM虚拟机还怎么面试?程序员翻身之路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/313291

相关文章

Java中对象的创建和销毁过程详析

《Java中对象的创建和销毁过程详析》:本文主要介绍Java中对象的创建和销毁过程,对象的创建过程包括类加载检查、内存分配、初始化零值内存、设置对象头和执行init方法,对象的销毁过程由垃圾回收机... 目录前言对象的创建过程1. 类加载检查2China编程. 分配内存3. 初始化零值4. 设置对象头5. 执行

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

spring-boot-starter-thymeleaf加载外部html文件方式

《spring-boot-starter-thymeleaf加载外部html文件方式》本文介绍了在SpringMVC中使用Thymeleaf模板引擎加载外部HTML文件的方法,以及在SpringBoo... 目录1.Thymeleaf介绍2.springboot使用thymeleaf2.1.引入spring

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在