专业的JAVA编程教程与资源

网站首页 > java教程 正文

阿里Java面经

temp10 2024-11-17 16:03:27 java教程 13 ℃ 0 评论

本期是【大厂面试】系列文章,模拟阿里面试题目。

面试开始

面试官看你简历写了熟悉Java基础,讲讲Object常用方法有哪些?

阿里Java面经

独白:so easy~

大彬:Object常用方法有:toString()equals()hashCode()clone()getClass()等。

大彬:toString()方法默认输出对象地址。可以重写toString方法,按照重写逻辑输出对象值

大彬:equals()方法默认比较两个引用变量是否指向同一个对象(内存地址)。

大彬:hashCode()方法将与对象相关的信息映射成一个哈希值,默认的实现hashCode值是根据内存地址换算出来。

大彬:clone()方法可以实现对对象中各个属性的复制。

大彬:getClass()返回此Object的运行时类,常用于Java反射机制。

面试官嗯,什么是反射呢?

大彬:动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制

大彬:在运行状态中,对于任意一个类,能够知道这个类的所有属性和方法

大彬:对于任意一个对象,能够调用它的任意一个方法和属性

大彬:这就是Java的反射机制

面试官那反射有哪些应用场景呢?

大彬:1. JDBC连接数据库时使用Class.forName()通过反射加载数据库的驱动程序

大彬:2. 很多开发工具如Eclispe、IDEA等利用反射动态解析对象的类型与结构,动态提示对象的属性和方法

大彬:3. Web服务器中利用反射调用了Sevlet的service方法

大彬:4. Spring AOP的特性也是依赖反射实现的

面试来讲讲什么是GC?为什么要GC?

大彬:GC(Garbage Collection),垃圾回收,是Java与C++的主要区别之一

大彬:作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码

大彬:这是因为在Java虚拟机中,存在自动内存管理和垃圾清理机制

大彬:对JVM中的内存进行标记,并确定哪些内存需要回收,根据一定的回收策略,自动的回收内存,保证JVM中的内存空间,防止出现内存泄露和溢出问题

面试官嗯,平时工作可能遇到OOM的问题,知道怎么排查吗?

旁白:线上JVM必须配置-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/tmp/heapdump.hprof,当OOM发生时自动 dump 堆内存信息到指定目录

大彬:排查 OOM 的方法如下:

大彬:查看服务器运行日志日志,捕捉到内存溢出异常

大彬:使用jstat查看监控JVM的内存和GC情况,评估问题大概出在什么区域

大彬:使用MAT工具载入dump文件,分析大对象的占用情况

面试官知道哨兵Sentinel吗?

大彬:哨兵模式是一种特殊的模式。哨兵是一个独立的进程,可以独立运行。

大彬:其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。

大彬:客户端连接Redis的时候,先连接哨兵,哨兵会告诉客户端Redis主节点的地址,然后客户端连接上Redis并进行后续的操作。

大彬:当主节点宕机的时候,哨兵监测到主节点宕机,会重新推选出某个表现良好的从节点成为新的主节点,然后通过发布订阅模式通知其他的从服务器,让它们切换主机。

面试官哨兵的工作原理,详细讲讲?

旁白:我晕

大彬:原理如下:

大彬:每个Sentinel以每秒钟一次的频率向它所知道的MasterSlave以及其他 Sentinel 实例发送一个 PING命令。

大彬:如果一个实例距离最后一次有效回复 PING 命令的时间超过指定值, 则这个实例会被 Sentine 标记为主观下线。

大彬:如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master是否真正进入主观下线状态。

大彬:当有足够数量的 Sentinel(大于等于配置文件指定值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为客观下线 。若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被解除。

大彬:哨兵节点会选举出哨兵 leader,负责故障转移的工作。

大彬:哨兵leader会推选出某个表现良好的从节点成为新的主节点,然后通知其他从节点更新主节点信息。

面试官:不错,明天来上班吧

旁白:不会坑我吧...

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表