阿里巴巴面试Java问题总结

陆陆续续接到了阿里巴巴几个事业部的面试邀约, 记录一下自己在阿里面试中问的一些问题,总结一下;

阿里巴巴的面试一般分为五面
一面、电话面,会简单问一些java基础,多线程等等

二面、电话面,面试官会让你讲几个自己工作中的业务,然后围绕你的业务去问一些相关的问题;然后中间掺杂着一些基础的问题,如果在一面中答的不好的问题,在二面中很大几率会被再次问到,因为每个面试官面完之后都会写面试评价的,像我之前hashmap为什么线程不安全答的不够好,然后二面又被问了,面试官说主要看你有没有学习能力;
再然后会问一些reids相关,rpc,spring等等

三面、现场面,跟二面差不多,也是以项目为主,这个时候一些基础的问题可能不会问了,主要就是考察你对业务的把控能力,还有表达能力,还有项目管理能力,还会考察你的技术广度,会不会主动去了解学习其他的技术;

四面、现场面,反正我面的时候是让我在黑白上画出我做的项目模块图,以及上下层服务的流转,然后跟我的描述 中间是不是打断我提问,因为这么多轮下来也没啥好问的了,聊的都是技术之外的一些,比如说在项目中涉及多个部门如何沟通?
如果判断你的同事是否优秀?等等
真的表达能力很重要…

五面、
HR面、反正我还没有到达这一面,哭泣…

以下,为面试问题总结;


#Java基础

  1. String 和StringBuffer和 StringBuilder的区别?
    String,StringBuffer与StringBuilder的区别??
    String 字符串常量
    StringBuffer 字符串变量(线程安全)
    StringBuilder 字符串变量(非线程安全)

  2. sleep() 区间wait()区间有什么区别?

  3. Object 中有哪些方法?其中clone(),怎么实现一个对象的克隆,Java如何实现深度克隆?

  4. wati() notify() notify()用法,与Condition有什么区别呢?

  5. HashMap为什么是不安全的?
    谈谈HashMap不安全的体现

1.在多线程情况下,同时put结点的时候有可能造成数据丢失
2.多线程put情况下可能造成 环形链;然后再调用get方法的时候就会出现死循环,造成cpu 100%;

  1. 简单描述一下HashMap和ConcurrentHash 在1.7 和1.8的实现
    Java 8系列之重新认识HashMap

  2. 为什么重写equals时候被要求重写hashCode()?

  3. jdk1.7和1.8的比较,多了哪些新的特性?

  4. 什么时候回发生内存泄露?让你写一段内存泄露的代码你会怎么写?
    JAVA 内存泄露详解(原因、例子及解决)
    Java中关于内存泄漏出现的原因以及如何避免内存泄漏

我们知道,对象都是有生命周期的,有的长,有的短,如果长生命周期的对象持有短生命周期的引用,就很可能会出现内存泄露

下面给出一个 Java 内存泄漏的典型例子,
```
Vector v = new Vector(10);
for (int i = 0; i < 100; i++) {
    Object o = new Object();
    v.add(o);
    o = null;
}
```

在这个例子中,我们循环申请Object对象,并将所申请的对象放入一个 Vector 中,如果我们仅仅释放引用本身,那么 Vector 仍然引用该对象,所以这个对象对 GC 来说是不可回收的。因此,如果对象加入到Vector 后,还必须从 Vector 中删除,最简单的方法就是将 Vector 对象设置为 null。
v = null

  1. GC机制简要说明一下,不同区使用的算法。

  2. 两个对象循环引用会不会被被GC?

  3. 可达性算法,和 根节点可达性算法

  4. 哪些可以算作根节点?

  5. Jvm内存结构简要说一些,栈里面一般存储了什么?

  6. Java内存模型简要描述一下?

  7. 类加载机制简要描述一下?

  8. 平时有没有遇到一些栈溢出或者内存溢出,内存泄露的问题吗?如果去分析这个问题?
    java内存溢出与内存泄露
    >内存泄漏是指对象实例在新建和使用完毕后,仍然被引用,没能被垃圾回收释放,一直积累,直到没有剩余内存可用。如果内存泄露,我们要找出泄露的对象是怎么被GC ROOT引用起来,然后通过引用链来具体分析泄露的原因。分析内存泄漏的工具有:Jprofiler,visualvm等。
    内存溢出是指当我们新建一个实力对象时,实例对象所需占用的内存空间大于堆的可用空间。
    栈(JVM Stack)存放主要是栈帧( 局部变量表, 操作数栈 , 动态链接 , 方法出口信息 )的地方。注意区分栈和栈帧:栈里包含栈帧。与线程栈相关的内存异常有两个:
    a)、StackOverflowError(方法调用层次太深,内存不够新建栈帧)
    b)、OutOfMemoryError(线程太多,内存不够新建线程)
    如果出现了内存溢出问题,这往往是程序本生需要的内存大于了我们给虚拟机配置的内存,这种情况下,我们可以采用调大-Xmx来解决这种问题

    java内存泄漏的定位与分析
    jstat -gc查看一下GC过程
    拿到dump文件利用MemoryAnalyzer来分析泄露的地方在哪里

  9. 如果内存猛增,怎么去排查?
    通过jstack分析问题
    1、利用top名称查看哪个java进程占用了较多的cpu资源;
    2、通过top -Hp pid可以查看该进程下各个线程的cpu使用情况;
    3.通过top -Hp命令定位到cpu占用率较高的线程tid之后,继续使用jstack pid命令查看当前java进程的堆栈状态
    4.然后将刚刚找到的tid转换成16进制,在 jstack -pid里面的堆栈信息里面找到对应的线程信息

  10. 简要描述一下多线程,以及线程池对应的一些属性配置?

  11. CAS实现机制?

  12. 垃圾收集器 G1有什么样的特性了解吗? CMS呢?

  13. 有哪些常用的排序算法?

  14. NIO模型描述一下?

  15. 你了解SPI机制吗?
    Java SPI

#数据库

  1. Innode 存储引擎的索引结构了解一下?
  2. 为何索引用B+树 ,而不用红黑树等其他的树?
  3. 以B+树结构层面分析一下为什么表数据量大了之后访问速度会变慢?
  4. Innode和 MYISAM存储引擎区别
  5. Innodb中有哪些索引?分别介绍一下
  6. 如何优化大数据量分页limit?
  7. 简要说下数据库优化
  8. 在工作中有遇见什么死锁的情况吗?你是怎么分析的?
  9. 怎么评估什么时候需要分库分表?如果每周曾加100万数据,要在什么情况下去考虑分库分表?
  10. Innodb 支持哪些类型的锁?

#RPC框架 DUBBO

  1. 一般RPC框架都有哪些模块?
  2. dubbo 各个模块?
  3. 如果zookeeper挂掉了,dubbo还能正常运行吗?
  4. dubbo怎么实现的网络通信?
  5. dubbo的监控是怎么实现的?
  6. dubbo SPI 机制 与 JAVA SPI?
    这里写链接内容

#Zookeeper

  1. zookeeper快速选举描述一下?
  2. zookeeper实现分布式锁怎么实现?
  3. zookeeper集群可以部署2台吗?

#Redis

  1. 怎么用redis实现分布式锁?
  2. redis是单线程还是双线程?为什么redis的性能高?什么决定的?
  3. redis的持久化策略?
  4. redis有哪些数据类型?
  5. 你有尝试的去优化redis吗?
  6. rdb和aof工作原理?各有什么优缺点
  7. redis的有哪些主从同步方式?
  8. redis集群扩容与收缩

#Spring

  1. 请简要描述一下IOC 和AOP?
  2. Spring是怎么解决的循环依赖?
  3. Spring 中使用的那种方式来实现动态代理的?
  4. Spring中的事务传播机制?事务嵌套
  5. Spring中同一个类中有方法A 和 B 两个方法都被标记了@Transtional,在A中调用了B,那么B的事务会生效吗?为什么?
  6. 同样是同类中有A B 2个方法,都是事务,A调用B,B抛出异常,A把它catch住了,那么A的事务会不会回滚?

#项目中高并发,秒杀之类

  1. 怎么实现一个秒杀系统?

#解决问题的能力

  1. 工作中有碰到过线上的问题吗?怎么解决的?
  2. 请讲一个你工作中让你影响深刻并且最难寻找和解决的bug?
  3. 如果网站访问过慢,并且每隔一段时间就会特别卡,你会去怎么排查问题?
  4. 你有过Jvm调优经验吗?
  5. 你做了这么多系统,是怎么做系统监控的,系统的稳定性?内存满了,磁盘满了,和cpu高了之类的?
  6. 有碰到过数据库死锁的问题吗?怎么解决的?
  7. 平时会使用设计模式吗?请讲一个使用的情景(单例,工厂太简单不让算…)

#其他

  1. 怎么辨别身边的同事是否优秀?
  2. 如果一个项目中设计到多个部门之间的协调,你要怎么做?
  3. 你有读过项目管理之类的书吗?
  4. 作为一个小组leader,你是怎么安排工作的?
  5. 如果RocketMq的一个磁盘坏了,怎么办?

答案慢慢补充

猜你喜欢

转载自blog.csdn.net/u010634066/article/details/80646066