No3. 阿里网商银行一面

电话面,总计1小时20分钟

  • 自我介绍
  • 介绍一下主要项目中的关键和难点问题,用了哪些技术

Part1 先是针对简历中的项目的问题

简历中提到的技术和框架:

  • RabbitMQ是什么?应用场景?底层的实现原理是什么?
  • RabbitMQ在消息传递过程中是有出错的可能的?你们是如何解决?或者说RabbitMQ提供了什么机制来解决?
  • 分布式的项目/任务中使用或了解过哪些中间件?
  • Token是什么?是做什么用的?
  • Session和cookie的区别?
  • 如果用户A在Session中存放了一个新的数据,一段时间后用户A再来访问还能不能够拿得到之前存的数据,如果是用户B来拿,能否拿得到?
  • Spring Cloud了解多少,你是怎样理解的?
  • 什么是微服务?
  • 什么是SOA?
  • Spring了解多少?

多线程:

  • concurrentHashMap底层是如何实现的?

  • 既然谈到CAS就详细介绍一下。

  • 有没有什么场景是Volatile就可以保证线程安全的?

  • 有哪些常见操作是具有原子性的?

  • 除了CAS、Synchronized等一些锁,还能用什么方法解决多线程安全问题?

    (TheadLock下去再看一下)

Part2 Java基础

集合类

  • 说一下什么是集合类?
  • HashMap的一个场景:如果我创建了一个A类的对象a作为Key插入到HashMap中,它有一些对应的value链式存储。我又创建了一个A类的对象a1,通过get()方法能够拿到a这个key下面对应的数据吗?
  • 我怎么样做才能用a1这个对象拿到a这个key下面的value呢?(HashCode)
  • 什么是浅拷贝和深拷贝?

JVM

  • 说一下java内存结构和垃圾回收?
  • 什么情况下会发生堆溢出?让你编个程序怎么写代码能造成堆溢出?
  • 想要栈溢出应该怎么写代码?

Part3 计算机基础

计网

  • 现在常用的网络模型是怎么样的?每一层都是什么功能?
  • 现在的网络传输存在丢包现象,TCP能否保证不丢包?是如何保证的?

操作系统

  • 进程和线程的区别?各自的应用场景?
  • 进程间是怎样通信的?

数据库

  • 什么是数据库索引?我们为什么要用数据库索引?
  • 数据库索引是存在内存还是磁盘,为什么?
  • 常用的索引方法有哪些?我们是如何使用索引的?
  • 索引结构的哪些特性和特点会影响我们用索引查找的效率呢?
  • 在B+树的一个中间层节点上,我们在这么多个Key中找到我们的目标采用的是什么查找策略?