网站首页 > java教程 正文
本期是【大厂面试】系列文章,模拟阿里面试题目。
面试开始
面试官:看你简历写了熟悉Java基础,讲讲Object常用方法有哪些?
独白: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以每秒钟一次的频率向它所知道的Master,Slave以及其他 Sentinel 实例发送一个 PING命令。
大彬:如果一个实例距离最后一次有效回复 PING 命令的时间超过指定值, 则这个实例会被 Sentine 标记为主观下线。
大彬:如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master是否真正进入主观下线状态。
大彬:当有足够数量的 Sentinel(大于等于配置文件指定值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为客观下线 。若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被解除。
大彬:哨兵节点会选举出哨兵 leader,负责故障转移的工作。
大彬:哨兵leader会推选出某个表现良好的从节点成为新的主节点,然后通知其他从节点更新主节点信息。
面试官:不错,明天来上班吧
旁白:不会坑我吧...
猜你喜欢
- 2024-11-17 九月最新的字节跳动Java面经(框架+线程+Redis等等)
- 2024-11-17 Java基础面试题面经整理(持续更新)
- 2024-11-17 2023年五面阿里,面经+Java面试八股文解析
- 2024-11-17 阿里Java高级工程师面经(源码分析思路+分布式思维+系统设计)
- 2024-11-17 阿里Java后端开发面经,面试官都替我感到绝望
- 2024-11-17 九条Redis的面经和答案【面试必看】
- 2024-11-17 Java面试的的时候你会被提哪些问题?秋招Java面经总结
- 2024-11-17 中兴java开发面经
- 2024-11-17 上岸字节!面经分享
- 2024-11-17 阿里Java后端面试通过率仅15%,这份Java核心面经让我通过率100%
你 发表评论:
欢迎- 最近发表
-
- 搞趣网:我的世界全新皮肤包原始居民下载地址
- 我的世界拔刀剑MOD下载(我的世界拔刀剑mod下载国际版)
- 我的世界无正版账号的简单联机方法(非网易版,仅适用于局域网)
- 一些可以显著提高大型 Java 项目启动速度的尝试
- 常见的java敏感异常介绍(java 常见的异常)
- Java 开发者必看!三招实现外部 Jar 包动态加载(含热更新方案)
- Java JAR 启动内存参数配置指南:从基础设置到性能优化
- 对Spring MVC接口进行Mock测试(springmvc对外接口)
- 还在用策略模式解决 if-else?Map+函数式接口方法才是YYDS
- 干掉OpenFeign,SpringBoot 3.0 自带的 HTTP 客户端真香!
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)