java后端,我面了五轮阿里巴巴,然后凉了

如题

一面

  1. 自我介绍

  2. Java基础:

    深浅拷贝

    String StringBuilder StringBuffer区分,线程安全

    等号和equal to的区别,重写equalto需不需要重写hashcode

    Hashcode存在的意义

    java集合框架:

    HashMap底层实现

    多线程:

    如何创建一个线程

  3. Java虚拟机:

    底层数据结构,

    full gc

    Minor GC ,Full GC 触发条件

    Minor GC触发条件:当Eden区满时,触发Minor GC。

    Full GC触发条件:

    (1)调用System.gc时,系统建议执行Full GC,但是不必然执行

    (2)老年代空间不足

    (3)方法去空间不足

    (4)通过Minor GC后进入老年代的平均大小大于老年代的可用内存

    (5)由Eden区、From Space区向To Space区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小

    内存溢出,堆溢出栈溢出

    堆区放object

  4. 数据结构:

    数组和链表区别

    中缀转后缀

  5. 算法:

    随便讲个算法,快排,时间复杂度,最坏情况的时间复杂度

    简要介绍动态规划法

  6. 计算机网络:

    TCP和UDP区别

    Tcp三次握手

  7. 有个人博客吗?

  8. Github有没有过一些有趣的项目

  9. 框架有没有看过源码,哪些

二面

  1. 自我介绍
  2. 聊项目
  3. java虚拟机原理,内存分配和回收机制
  4. java虚拟机垃圾清理
  5. 学的课程,课都干嘛了,做的项目,人脸识别用的什么算法
  6. 未来规划

三面

  1. 自我介绍
  2. 手写代码://评测题目: 1.给定100w行文本,找出重复数最多的那一行的内容,请编码实现
  3. java基础:
    1. HashMap底层实现描述,
    2. HashMap的 put原理,
    3. 高低位异或、取余算法计算HashMap
    4. 线程不安全的原因infinite Loop
    5. Hashcode存在的意义
    6. ==和equals
    7. 多线程实现Runnable接口和继承Thread类的区别
    8. Dubbo听说过吗。。这是自卖自夸啊我说我是梁飞脑残粉
  4. 操作系统:
    1. Java 线程的状态及切换
    2. CPU调度算法:先来先服务、最长时间未使用、短作业优先
  5. 数据库:
    1. 锁的实现,悲观锁,行级锁锁表。乐观锁的原理,讲一个用乐观锁的例子我说抢票的时候余票的统计。
  6. 设计模式:实战中用过哪些设计模式?我说我没用过,我懂原理。。
    1. 单例模式,懒汉饿汉双重锁单例。
  7. 有没有什么问题

四面

项目经历,主要考虑scalability。

未来规划

GitHub和博客

五面

  1. 项目经历
  2. websocket的底层实现?协议。
  3. websocket通信中出现阻塞,断掉,怎么处理。
  4. websocket的全双工通信是如何实现的。
  5. websocket和socket的区别
  6. websocket如何保持长连接HTTP?我说ajax轮询。
  7. websocket和http的区别
  8. websocket群发是如何实现的
  9. 全双工单工半双工的区别
  10. 数据库表的大量数据查询如何优化(和项目经历有关)
  11. 消息推送,消息表里有大量数据的时候怎么办,不仅仅是分表,表的设计上的优化(和项目经历有关)
  12. Redis作为数据库前件的时候数据一致性是如何保证的,需要做哪些工作。
  13. Hibernate sessionFactory如何控制事务,流程是怎么样的。
  14. Hibernate二级缓存如何配置,实现的原理是什么。
  15. Hibernate连接池的管理
  16. mysql是两列联合索引的时候构造的B+树是什么样子的,为什么单独查第二列命中不了索引?
  17. spring源码:IOC什么时候初始化beanFactory,初始完做哪些工作,实例化bean的步骤是什么。
  18. bean的类型,单例/prototype。