概述
-
AOP
-
hashCode()和equals()的关系
equals(): 用来判断两个对象是否相同,再Object类中是通过判断对象间的内存地址来决定是否相同
hashCode(): 获取哈希码,也称为散列码,返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。 -
如何判断一个类的两个对象的某个属性是否相同
“==”比较对象是否引用了同一个对象,或者比较简单类型变量值是否相等。
Object类的equals()方法用来比较是否一个对象(内存地址比较),可以重写。
JDK中有些类重写了equals()方法,只要类型、内容都相同,就认为相等。
很变态的Boolean类,仅存在两个实例。具体可查看API。
一般来说,一个类如果涉及到比较,应该重写equals()方法,因为内存地址比较没有意义。 -
synchronized和Lock的区别
Synchronized和Lock比较
Synchronized是关键字,内置语言实现,Lock是接口。
Synchronized在线程发生异常时会自动释放锁,因此不会发生异常死锁。Lock异常时不会自动释放锁,所以需要在finally中实现释放锁。
Lock是可以中断锁,Synchronized是非中断锁,必须等待线程执行完成释放锁。
Lock可以使用读锁提高多线程读效率。 -
什么情况下需要加锁,举个例子
并发情况下,比如卖票 -
(大概题意)如果有多个线程都访问某个方法,需要加锁吗?
(多个对象的话不需要加锁)
结论:
1.对于int,short,char,BOOL等小于等于4字节的简单数据类型,如果无逻辑上的先后关系,多线程读写可以完全不用加锁
2.尽管float为4字节,多线程访问时也需要加锁
3.对于大于4字节的简单类型,比如double,__int64等,多线程读写必须加锁。
4.对于所有复杂类型,比如类,结构体,容器等类型必须加锁 -
无锁机制了解吗?说一下CAS,CAS可能出现的问题,解决思路
-
Jdk1.8新特性,lambda表达式在什么时候使用呢
-
stream有什么限制呢?比如说要进行两次过滤
-
大数据了解吗?说下MapReduce吧
全程围绕项目来说,面了大概20分钟
- 简单介绍一下你的项目
- SSM分别指的什么
- 了解springboot吗
- spring的两个特性了解嘛
- bean怎么配置
- 事务出现问题把它catch出去会有变化嘛
- 怎么保证多线程安全
- wait和sleep有什么区别?分别用什么唤醒
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。
Wait 通常被用于线程间交互/通信,sleep 通常被用于暂停执行。
sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。
在调用sleep()方法的过程中,线程不会释放对象锁。
而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备,获取对象锁进入运行状态。线程不会自动苏醒。
- 项目MySQL怎么设计的
- 有用索引吗
- 主键是什么类型
- 反问
最后
以上就是清脆板凳为你收集整理的中国移动后端面经总结的全部内容,希望文章能够帮你解决中国移动后端面经总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复