首页 > 笔经面经 > 阿里面试三面止步

阿里面试三面止步

头像
说好的offer呢
编辑于 2020-03-31 10:34:36 APP内打开
赞 21 | 收藏 169 | 回复41 | 浏览14157

面的是阿里CBU部门

3.15 CBU一面(将近80分钟)

  • 项目方面
    问了项目相关的,如何定义接口规范啊,如何做项目架构实现(SpringIOC,SpringMVC的自实现),业务(也就是CRUD,没啥难度),讲了LRU缓存的实现。项目大概15分钟左右。
  • 基础方面
    1. JVM内存模型(运行数据区的各种区域,以及功能(栈帧里面的那些也讲了)),然后讲到GC,GC算法,堆的分布(老年代,新生代,以及它们的分配,垃圾回收算法的选择)
      补充问到:当eden区不断增大的情况下,survivor区不断减小会导致什么情况?
    2. InnoDB存储引擎(从InnoDB的特性出发,行锁,全文索引,聚蔟索引,必须含有主键(没有主键怎么办,如何选择),为什么是B+树,而不是B树,而不是红黑树,磁盘IO,以及B+树和B树的区别),然后就是InnoDB的MVVC实现(版本号如何进行各种数据库操作)。
    3. 类加载机制(从类加载,验证,准备,解析,初始化,使用,卸载角度讲述,类加载讲类加载器(三种,如何定义用户加载器),然后就是各个阶段做了什么)
    4. 线程池,刚开始没听清楚,以为是原生实现线程池,后面才知道讲的是TheadPoolExecutor,然后就是讲参数,讲流程,讲拒绝策略。
    5. ThreadLocal,讲了底层实现,讲了ThreadLocal的目的,解决了什么问题。后面的ThreadLocal的key是弱引用(没答出来,确实没注意),然后就是ThreadLocal在线程池里面使用会怎么样。
    6. 冒泡算法
    7. TCP 为什么三次连接,TCP拥塞控制(慢开始,拥塞避免,快重传,快恢复,里面的窗口变量)和流程控制
    8. 就是各种奖项的问,做了什么。
    9. 补充下,还问了一些JUC的一些东西,CountDownLatch,Semaphore,CyclicBarrier

3.19 CBU二面(40分钟左右)

  • 项目方面
    就是问了下项目的实现,就不多说了
  • 基础方面
    1. Redis和Memcached的区别,我问面试官需不需要讲一下其他的东西(比如RDB,AOF的实现),他说不用,直接讲区别。我还想多说点拖点时间呢
    2. 类加载的双亲委派原则,解释就行,不用讲其他的
    3. 设计模式(单例模式,工厂模式,使用场景,单例模式的实现(4种))
    4. 设计原则(说了5大设计原则,忘了接口隔离原则),问了依赖倒置原则,里氏替换原则,合成复用原则,讲了下继承带来的问题,合成复用原则的使用场景。
    5. LRU缓存的设计,为什么采用数据存放点,为什么不使用Redis
    6. Redis的淘汰机制,为什么淘汰
    7. Redis的惰性删除,删除策略,为什么要用这个策略。
    8. Redis的分布式锁的实现,从mysql的唯一索引,到setnx,到expire到set指令原子性到redlock等。讲了Redis分布式锁可能解决不了的问题。
    9. 秒杀场景的设计(高并发问题,超卖问题,如何解决,缓存击穿如何解决,BloomFilter,BloomFilter的底层实现,容量和容错率。如何说了下前端方面怎么做。)
    10. 就是问了下最近面了几个部门,我说还有一个,然后就给过了。

3.30 CBU三面 (51分钟)

  • 项目方面
    问了自己实现的SpringIOC的整个流程,直接细节到了代码,说了一遍没听清楚,然后又说了一遍。问了LRU缓存的设计,后面就是直接口述LRU缓存的实现(代码)。问了注解用代码是如何写的(我这记不清楚啊),然后就是问注解是如何自己解析的,我说可以通过Class对象,获取到注解信息,从而判断。
  • 基础方面
    1. 问了Redis的线程模型,单线程模式,怎么实现的,说了IO多路复用,然后就是epoll,然后介绍了IO多路复用模型的其他实现,对比,然后就是问我Redis的epoll实现,我这个好像有点懵。
    2. 线程的状态(NEW,RUNNABLE,BLOCKED,TIME_WAITING,WAITING)少了一种,然后就是BLOCKED 和 WAIT的区别
    3. 锁,我讲了synchronize,reentrantlock和锁升级的过程,从无锁状态到偏向锁到轻量级锁到重量级锁(markword,和cas操作替换线程id,然后问我cas是什么,我说比较和替换,Compare and swap,然后我说底层是通过硬件的cmpxchg命令保证的)。然后就是我们的ReentrantLock,将了AQS的底层(双向链表,Node节点(Share,Exclusive,waitStatus),state变量(对不同的实现,所代表的含义不同),然后就是acquire方法和release方法的流程。reentrantlock的公平和非公平(没说),好像是被打断了)
    4. 口述LRU算法的实现
    5. 类加载,class.forname 和 classloader的区别,双亲委派原则。被问到不使用双亲委派原则,如何自定义java.lang.Integer会怎么样(我自定义过 java.lang.Integer,使用直接抛出异常,说包违法)。可能还是不够深入。
    6. 就是问了自己的缺点和优点,和奖项的项目和做了什么
    7. 没有给反问的机会。

顺带说下笔试的情况

3.25笔试的,第一题采用回溯法,AC10%,第二题没看。

最后我感觉三面确实状态不太好,有些紧张,回答的不是很好,感觉要挂,然后问了我那可爱的内推人,内推人说:简历放备选池了,我说不过的是因为基础不行吗,好像沟通不够顺畅。就这样阿里三面结束了。希望淘系用户增长可以捞我(一面过了)。在此攒攒rp,希望春招顺利鸭。

更多模拟面试

41条回帖

回帖
加载中...
话题 回帖

推荐话题

相关热帖

笔经面经近期热帖

近期精华帖

热门推荐