HeapDump性能社区专题系列四:后端面试必备问题集

简介: HeapDump性能社区专题系列四:后端面试必备问题集

一元复始,万象更新。春节结束,一切又是新的开始。马上就到“金三银四”了,有跳槽打算的工程师,一定已经开始偷偷努力了吧!今天堆堆帮大家整理了一些或经典或刁钻的面试题,以及一些难点解析,希望能帮大家查漏补缺,拿到心仪的offer~


1.面试官问我:什么是高并发下的请求合并?


作者:why技术


前段时间一个在深圳的,两年经验的小伙伴出去面试了一圈,收割了几个大厂 offer 的同时,还总结了一下面试的过程中遇到的面试题,面试题有很多,文末的时候我会分享给大家。


这次的文章主要分享他面试过程中遇到的一个场景题:

d.png

他说对于这个场景题,面试的时候没有什么思路。


说真的,请求合并我知道,高并发无非就是快速的请求合并。


但是在我有限的认知里面,如果类似于秒杀的高并发扣库存这个场景,用请求合并的方式来做,我个人感觉是有点怪怪的不够传统。


在传统的,或者说是业界常用的秒杀解决方案中,从前端到后台,你也找不到请求合并的字样。


我理解请求合并更加适用的场景是查询类的,或者说是数值增加类的需求,对于库存扣减这种,你稍不留神,就会出现超卖的情况。


当然也有可能是我理解错题意了,看到高并发扣库存就想到秒杀场景了。


但是不重要,我们也不能直接和面试官硬刚。


我会重新给个我觉得合理的场景,告诉大家我理解的请求合并和高并发下的请求合并是什么玩意。


2.面试官:你给我说一下什么是时间轮吧?


作者:why技术


你好呀,我是歪歪。


今天我带大家来卷一下时间轮吧,这个玩意其实还是挺实用的。


常见于各种框架之中,偶现于面试环节,理解起来稍微有点难度,但是知道原理之后也就觉得:


大多数人谈到时间轮的时候都会从 netty 开始聊。


我就不一样了,我想从 Dubbo 里面开始讲,毕竟我第一次接触到时间轮其实是在 Dubbo 里面,当时就惊艳到我了。


而且,Dubbo 的时间轮也是从 Netty 的源码里面拿出来的,基本一模一样。


3.面试官:你给我说一下线程池里面的几把锁。


作者:why技术


最近有个读者给我说,面试聊到线程池的时候,相谈甚欢,基本都回答上来了,但是其中有一个问题直接把他干懵逼了。


面试官问他:你说一下线程池里面的锁吧。


结果他关于线程池的知识点其实都是在各个博客或者面经里面看到的,没有自己去翻阅过源码,也就根本就没有注意过线程池里面还有锁的存在。


他还给我抱怨:

e.png

他这么一说,我也觉得,好像大家聊到线程池的时候,都没有怎么聊到里面用到的锁。

确实是存在感非常低。


要不我就安排一下?


4.《我想进大厂》之mysql夺命连环13问


作者:艾小仙


1.能说下myisam 和 innodb的区别吗?


2.说下mysql的索引有哪些吧,聚簇和非聚簇索引又是什么?


3.那你知道什么是覆盖索引和回表吗?


4.锁的类型有哪些呢?


5.你能说下事务的基本特性和隔离级别吗?


6.……


5.《我想进大厂》之Redis夺命连环11问


作者:艾小仙


1.说说Redis基本数据类型有哪些吧


2.Redis为什么快呢?


3.那为什么Redis6.0之后又改用多线程呢?


4.知道什么是热key吗?热key问题怎么解决?


5.什么是缓存击穿、缓存穿透、缓存雪崩?


6.……


6.JVM经典面试20问


作者:程序员大彬


讲一下JVM的内存结构?


说一下堆栈的区别?


什么情况下会发生栈溢出?


类文件结构


什么是类加载?类加载的过程?


……


7.面试官:cglib为什么不能代理private方法?


作者:看点代码再上班


你用过Spring么?听说过Spring AOP么?肯定都有吧!今天就说一说Spring AOP里面的

一种代理方式cglib的原理,以及顺便回答一下cglib为什么不能代理private方法。


8.Java多线程知识小抄集(一)


作者:朱小厮


本文主要整理笔者遇到的Java多线程的相关知识点,适合速记,故命名为“小抄集”。本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆。


9.据说99.99%的人都会答错的类加载的问题


作者:你假笨


首先还是把问题抛给大家,这个问题也是我厂同学在做一个性能分析产品的时候碰到的一个问题。


同一个类加载器对象是否可以加载同一个类文件多次并且得到多个Class对象而都可以被java层使用吗


请仔细注意上面的描述里几个关键的词


同一个类加载器:意味着不是每次都new一个类加载器对象,我知道有些对类加载器有点理解的同学肯定会想到这点。我们这里强调的是同一个类加载器对象去加载。


同一个类文件:意味着类文件里的信息都一致,不存在修改的情况,至少名字不能改。因

为有些同学会钻空子,比如说拿到类文件然后修改名字啥的,哈哈。


多个Class对象:意味着每次创建都是新的Class对象,并不是返回同一个Class对象。


都可以被java层使用:意味着Java层能感知到,或许对我公众号关注挺久的同学看过我的一些文章,知道我这里说的是什么,不知道的可以翻翻我前面的文章,这里卖个关子,不直接告诉你哪篇文章,稍微提示一下和内存GC有关。


那接下来在看下面文章之前,我觉得你可以先思考一个问题,

同一类加载器对象是否可加载同一类文件多次且得到多个不同的Class对象(单选)

A.不知道 B.可以 C.不可以


虽然有些标题党的意思,不过我觉得标题里的99.99%说得应该不夸张,这个比例或许应该更大,不过还是请认真作答,不要随便选,我知道肯定有人会随便选的,哈哈。


10.Java层面调用native方法是怎么找到本地库中对应方法的?


作者:RednaxelaFX


问:在Java代码上调用了一个本地方法,比如调用某个对象的getClass()本地方法,那么在java层面调用开始到找到本地库中的如下方法?

JNIEXPORT jclass JNICALL  
Java_java_lang_Object_getClass(JNIEnv *env, jobject this)  
{  
    if (this == NULL) {  
        JNU_ThrowNullPointerException(env, NULL);  
        return 0;  
    } else {  
        return (*env)->GetObjectClass(env, this);  
    }  
}

这期间到底发什么了什么?怎么找到这个本地方法的,相关vm代码在哪里呢?

相关文章
|
存储 安全 Java
每日大厂面试题大汇总 —— 今日的是“美团-后端开发-一面”
文章汇总了美团后端开发一面的面试题目,内容涉及哈希表、HashMap、二叉树遍历、数据库索引、死锁、事务隔离级别、Java对象相等性、多态、线程池拒绝策略、CAS、设计模式、Spring事务传播机制及RPC序列化工具等。
482 0
|
存储 SQL 关系型数据库
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
|
缓存 前端开发 中间件
[go 面试] 前端请求到后端API的中间件流程解析
[go 面试] 前端请求到后端API的中间件流程解析
|
存储 消息中间件 NoSQL
每日大厂面试题大汇总 —— 今日的是“京东-后端开发-一面”
文章汇总了京东后端开发一面的面试题目,包括ArrayList与LinkedList的区别、HashMap的数据结构和操作、线程安全问题、线程池参数、MySQL存储引擎、Redis性能和线程模型、分布式锁处理、HTTP与HTTPS、Kafka等方面的问题。
734 0
|
消息中间件 存储 Java
招行面试:10Wqps场景,RocketMQ 顺序消费 的性能 如何提升 ?
45岁资深架构师尼恩在其读者群中分享了关于如何提升RocketMQ顺序消费性能的高并发面试题解析。面对10W QPS的高并发场景,尼恩详细讲解了RocketMQ的调优策略,包括专用方案如增加ConsumeQueue数量、优化Topic设计等,以及通用方案如硬件配置(CPU、内存、磁盘、网络)、操作系统调优、Broker配置调整、客户端配置优化、JVM调优和监控与日志分析等方面。通过系统化的梳理,帮助读者在面试中充分展示技术实力,获得面试官的认可。相关真题及答案将收录于《尼恩Java面试宝典PDF》V175版本中,助力求职者提高架构、设计和开发水平。
招行面试:10Wqps场景,RocketMQ 顺序消费 的性能 如何提升 ?
|
人工智能 自然语言处理 架构师
字节面试: es怎么提升性能和精准度?(尼恩独家,史上最全)
本文由40岁老架构师尼恩撰写,针对ES(Elasticsearch)提升搜索性能和精准度的面试题进行详细解析。文章首先指出,提升ES速度和精准度是两个独立的问题,分别涉及性能优化和精准度优化。这些内容不仅有助于应对面试中的难题,还能帮助开发者在实际项目中构建更高效的搜索系统。尼恩强调,掌握这些知识后可以在面试中“吊打”面试官,轻松获得理想Offer。同时,他还提供了《尼恩Java面试宝典PDF》等资源供读者学习参考。
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
1124 37
|
存储 缓存 持续交付
后端世界的微妙平衡:性能与可维护性的博弈###
【10月更文挑战第15天】 在软件开发的浩瀚宇宙里,后端开发犹如一颗星辰,既需璀璨夺目以支撑业务辉煌,又得稳若磐石确保系统长青。本文探讨了后端开发中性能优化与代码可维护性之间的微妙平衡,通过实例分析与策略建议,揭示了如何在追求极致速度的同时,保持代码的清晰、可读与易于迭代,实现技术与艺术的和谐共生。我们相信,正如印度圣雄甘地所言:“你必须成为你希望在世界上看到的改变。”开发者在面对复杂系统挑战时,也应主动寻求变革,探索更高效的解决方案。 ###
198 3
|
JavaScript 前端开发 数据库
优化后端性能:如何使用异步编程提升系统响应速度
异步编程已成为现代后端系统性能优化的重要策略。通过避免阻塞操作,异步编程可以显著提高系统的响应速度和并发处理能力。本文章深入探讨了异步编程的基本概念,比较了常见的异步编程模型,并通过实际案例演示如何在Node.js和Python中实现异步操作,以提升系统性能。
|
JavaScript 前端开发
深入理解Node.js事件循环及其对后端性能的影响
【8月更文挑战第31天】 本文将带你一探Node.js的核心概念—事件循环,揭示其工作原理及如何影响后端应用的性能。我们将从基础的事件驱动模型出发,通过代码示例和性能分析,展示如何有效利用事件循环来提升应用响应速度和处理能力。