# 百度面试题
高级JAVA# 自我介绍 一面
# 对象相等的判断,equals方法实现
参考答案
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
说明:如果两个对象等价,前提是它们一定为相同的类型
判断引用值是否相等,相等即t返回rue,不用往下走;
判断类型是否匹配,类型相同,长度相等,逐个比较字符是否一样,完全符合,则返回ture,一旦不对,返回false;
类型不匹配,返回false。
总结
引用不同,不相等;
类型不同,不相等;
长度不等,不相等;
字符不对等,不相等;
排除所有不符合的情况,即相等。
# Hashcode的作用,与 equal 有什么区别
参考答案
hashCode是用于查找使用的,而equals是用于比较两个对象的是否相等的。
hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;
如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;
如果对象的equals方法被重写,那么对象的hashCode也一定要重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;
两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。
# Java中CAS算法
参考答案
# G1回收器讲一下
参考答案
# HashMap,ConcurrentHashMap与LinkedHashMap的区别
参考答案
# 如何在多线程环境下使用Map
参考答案
# ConcurrentHashMap原理
参考答案
# ConcurrentHashMap如何加锁
参考答案
# 多线程并发的同步实现
参考答案
多线程并发的同步实现,有两个方法,每个方法里有a部分代码和b部分代码,我要让两个线程分别执行两个方法,并且让他们运行完a部分代码再一起向下执行,如何实现。
# TCP连接中的三次握手
参考答案
TCP连接中的三次握手和四次挥手,四次挥手的最后一个ack的作用是什么,为什么要time wait,为什么是2msl。
# aio,nio,bio的了解
参考答案
# ReetrantLock和synchronized的区别
参考答案
# Java有哪些悲观锁的实现
参考答案
# Java有哪些类实现了乐观锁
参考答案
# 谈谈Spring两大特性,AOP和IOC 二面
参考答案
# Spring的初始化过程
参考答案
# Spring bean的生命周期
参考答案
# 多个RPC请求进来,服务器怎么处理并发
参考答案
# MySQL的索引实现原理
参考答案
# 聚合索引和非聚合索引的区别
参考答案
# MySQL有哪几种join方式,底层原理是什么
参考答案
# MySQL的引擎讲一下,有什么区别,使用场景
参考答案
# 数据库的事务,四个性质说一下
参考答案
# 常见的分布式事务解决方案有哪些
参考答案
# 介绍项目,以及画相关的分布式架构图 三面
参考答案
# 数据库的备份和恢复怎么实现的
参考答案
数据库的备份和恢复怎么实现的,主从复制怎么做的,什么时候会出现数据不一致,如何解决?
# Netty的实现原理
参考答案
# 分布式下Redis如何保证线程安全
参考答案
# Redis怎么做持久化?两种持久化的区别
参考答案
# MongoDB、Hbase、Memcached、Redis的应用场景和区别
参考答案
# Docker平时怎么使用的
参考答案
# 并发mysql的场景,查询优化怎么做
参考答案
# 设计一个高并发高可用的架构方案,关键核心设计
参考答案