中国移动后端面经总结

  1. AOP

  2. hashCode()和equals()的关系
    equals(): 用来判断两个对象是否相同,再Object类中是通过判断对象间的内存地址来决定是否相同
    hashCode(): 获取哈希码,也称为散列码,返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。

  3. 如何判断一个类的两个对象的某个属性是否相同
    “==”比较对象是否引用了同一个对象,或者比较简单类型变量值是否相等。
    Object类的equals()方法用来比较是否一个对象(内存地址比较),可以重写。
    JDK中有些类重写了equals()方法,只要类型、内容都相同,就认为相等。
    很变态的Boolean类,仅存在两个实例。具体可查看API。
    一般来说,一个类如果涉及到比较,应该重写equals()方法,因为内存地址比较没有意义。

  4. synchronized和Lock的区别
    Synchronized和Lock比较
    Synchronized是关键字,内置语言实现,Lock是接口。
    Synchronized在线程发生异常时会自动释放锁,因此不会发生异常死锁。Lock异常时不会自动释放锁,所以需要在finally中实现释放锁。
    Lock是可以中断锁,Synchronized是非中断锁,必须等待线程执行完成释放锁。
    Lock可以使用读锁提高多线程读效率。

  5. 什么情况下需要加锁,举个例子
    并发情况下,比如卖票

  6. (大概题意)如果有多个线程都访问某个方法,需要加锁吗?
    (多个对象的话不需要加锁)
    结论:
    1.对于int,short,char,BOOL等小于等于4字节的简单数据类型,如果无逻辑上的先后关系,多线程读写可以完全不用加锁
    2.尽管float为4字节,多线程访问时也需要加锁
    3.对于大于4字节的简单类型,比如double,__int64等,多线程读写必须加锁。
    4.对于所有复杂类型,比如类,结构体,容器等类型必须加锁

  7. 无锁机制了解吗?说一下CAS,CAS可能出现的问题,解决思路

  8. Jdk1.8新特性,lambda表达式在什么时候使用呢

  9. stream有什么限制呢?比如说要进行两次过滤

  10. 大数据了解吗?说下MapReduce吧

全程围绕项目来说,面了大概20分钟

  1. 简单介绍一下你的项目
  2. SSM分别指的什么
  3. 了解springboot吗
  4. spring的两个特性了解嘛
  5. bean怎么配置
  6. 事务出现问题把它catch出去会有变化嘛
  7. 怎么保证多线程安全
  8. wait和sleep有什么区别?分别用什么唤醒

对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。

Wait 通常被用于线程间交互/通信,sleep 通常被用于暂停执行。

sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。

在调用sleep()方法的过程中,线程不会释放对象锁。

而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备,获取对象锁进入运行状态。线程不会自动苏醒。

  1. 项目MySQL怎么设计的
  2. 有用索引吗
  3. 主键是什么类型
  4. 反问
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nydia~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值