乐趣区

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

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

1. 面试官问我:什么是高并发下的申请合并?
作者:why 技术
前段时间一个在深圳的,两年教训的小伙伴进来面试了一圈,收割了几个大厂 offer 的同时,还总结了一下面试的过程中遇到的面试题,面试题有很多,文末的时候我会分享给大家。
这次的文章次要分享他面试过程中遇到的一个场景题:

他说对于这个场景题,面试的时候没有什么思路。
说真的,申请合并我晓得,高并发无非就是疾速的申请合并。
然而在我无限的认知外面,如果相似于秒杀的高并发扣库存这个场景,用申请合并的形式来做,我个人感觉是有点怪怪的不够传统。
在传统的,或者说是业界罕用的秒杀解决方案中,从前端到后盾,你也找不到申请合并的字样。
我了解申请合并更加实用的场景是查问类的,或者说是数值减少类的需要,对于库存扣减这种,你稍不留神,就会呈现超卖的状况。
当然也有可能是我了解错题意了,看到高并发扣库存就想到秒杀场景了。
然而不重要,咱们也不能间接和面试官硬刚。
我会从新给个我感觉正当的场景,通知大家我了解的申请合并和高并发下的申请合并是什么玩意。

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

作者:why 技术
你好呀,我是歪歪。
明天我带大家来卷一下工夫轮吧,这个玩意其实还是挺实用的。
常见于各种框架之中,偶现于面试环节,了解起来略微有点难度,然而晓得原理之后也就感觉:
大多数人谈到工夫轮的时候都会从 netty 开始聊。
我就不一样了,我想从 Dubbo 外面开始讲,毕竟我第一次接触到工夫轮其实是在 Dubbo 外面,过后就惊艳到我了。
而且,Dubbo 的工夫轮也是从 Netty 的源码外面拿进去的,根本截然不同。

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

作者:why 技术
最近有个读者给我说,面试聊到线程池的时候,相谈甚欢,根本都答复上来了,然而其中有一个问题间接把他干懵逼了。
面试官问他:你说一下线程池外面的锁吧。
后果他对于线程池的知识点其实都是在各个博客或者面经外面看到的,没有本人去翻阅过源码,也就基本就没有留神过线程池外面还有锁的存在。
他还给我埋怨:

他这么一说,我也感觉,如同大家聊到线程池的时候,都没有怎么聊到外面用到的锁。
的确是存在感非常低。
要不我就安顿一下?

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 代码在哪里呢?

退出移动版