java后端,我面了五轮阿里巴巴,然后凉了
如题
一面
自我介绍
Java基础:
深浅拷贝
String StringBuilder StringBuffer区分,线程安全
等号和equal to的区别,重写equalto需不需要重写hashcode
Hashcode存在的意义
java集合框架:
HashMap底层实现
多线程:
如何创建一个线程
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
数据结构:
数组和链表区别
中缀转后缀
算法:
随便讲个算法,快排,时间复杂度,最坏情况的时间复杂度
简要介绍动态规划法
计算机网络:
TCP和UDP区别
Tcp三次握手
有个人博客吗?
Github有没有过一些有趣的项目
框架有没有看过源码,哪些
二面
- 自我介绍
- 聊项目
- java虚拟机原理,内存分配和回收机制
- java虚拟机垃圾清理
- 学的课程,课都干嘛了,做的项目,人脸识别用的什么算法
- 未来规划
三面
- 自我介绍
- 手写代码://评测题目: 1.给定100w行文本,找出重复数最多的那一行的内容,请编码实现
- java基础:
- HashMap底层实现描述,
- HashMap的 put原理,
- 高低位异或、取余算法计算HashMap
- 线程不安全的原因infinite Loop
- Hashcode存在的意义
- ==和equals
- 多线程实现Runnable接口和继承Thread类的区别
- Dubbo听说过吗。。这是自卖自夸啊我说我是梁飞脑残粉
- 操作系统:
- Java 线程的状态及切换
- CPU调度算法:先来先服务、最长时间未使用、短作业优先
- 数据库:
- 锁的实现,悲观锁,行级锁锁表。乐观锁的原理,讲一个用乐观锁的例子我说抢票的时候余票的统计。
- 设计模式:实战中用过哪些设计模式?我说我没用过,我懂原理。。
- 单例模式,懒汉饿汉双重锁单例。
- 有没有什么问题
四面
项目经历,主要考虑scalability。
未来规划
GitHub和博客
五面
- 项目经历
- websocket的底层实现?协议。
- websocket通信中出现阻塞,断掉,怎么处理。
- websocket的全双工通信是如何实现的。
- websocket和socket的区别
- websocket如何保持长连接HTTP?我说ajax轮询。
- websocket和http的区别
- websocket群发是如何实现的
- 全双工单工半双工的区别
- 数据库表的大量数据查询如何优化(和项目经历有关)
- 消息推送,消息表里有大量数据的时候怎么办,不仅仅是分表,表的设计上的优化(和项目经历有关)
- Redis作为数据库前件的时候数据一致性是如何保证的,需要做哪些工作。
- Hibernate sessionFactory如何控制事务,流程是怎么样的。
- Hibernate二级缓存如何配置,实现的原理是什么。
- Hibernate连接池的管理
- mysql是两列联合索引的时候构造的B+树是什么样子的,为什么单独查第二列命中不了索引?
- spring源码:IOC什么时候初始化beanFactory,初始完做哪些工作,实例化bean的步骤是什么。
- bean的类型,单例/prototype。