让我们先来看看阿里P6招聘需求
感觉面试还是主要围绕简历来问的,所以不熟悉的东西最好不要随便写上去。项目和基础都很重要,项目中最好有难点,能够体现自己解决问题的过程和思路。
电话面:
-
自我介绍
-
事务的特性 ACID , 数据库的死锁发生的情景
-
死锁的四个必要特性, 非共享, 持有并等待, 非抢占, 循环等待
-
死锁避免 死锁预防
-
线程的状态 , 新建,就绪,running, wait, blocked, terminated
-
sleep 和 wait 的区别, 类的不同,是否会释放持有的锁,monitor
-
JDK 可重入锁, 读写锁 , 底层 AQS,抽象队列同步器的机制
-
悲观锁和乐观锁, 概念上,JDK 中的类, CAS的缺点, 空转,ABA问题。使用pause指令, AtomicStampedReference
-
讲一讲Servlet, web.xml 配置路径到servlet的映射, init, service, destroy
-
可以看一看Tomcat容器的过程 ,Connector和 Context容器两大部分。完成从socket到 request和Response对象的构造
-
SpringMVC的 dispatcher-servlet的请求解析过程
-
redis介绍, 系统中的角色,作为缓存, 分布式session服务器
-
redis的 性能,可用性,主从复制+哨兵, redis缓存访问有网络上的消耗。
-
redis事务, 分布式事务, 2PC, 本地消息表等, 3PC
阿里一面:
-
讲一讲异常, throwable, exception, error
-
try- catch
-
手写单例模式——很生疏,GG
-
volatile ,作用,底层, lock 前缀的指令, 多CPU的嗅探机制,多处理器下的缓存一致性协议
-
synchronized
-
JVM 内存划分, 堆内存分代
-
redis, 源码,
-
spring bean的实例化过程。——不熟悉的地方不要写上去。
-
AOP
-
使用redis来实现单点登录,那么当单个redis节点内存不够的时候,怎么办?集群化,redis-Cluster
-
比较偏底层
阿里二面:
-
JVM内存划分, 堆内存为什么要进行分代回收, 生命周期不同
-
redis,主从,哨兵,集群,分布式锁。
-
redis的对象类型, 每种对象类型对应的底层的数据结构,参考redis设计与实现。
-
string, list, hash, set, sortedset.
-
每种对象都至少有2中数据结构, SDS, linkedlist, ziplist, intset, ziplist, skiplist
-
ISN, TCP协议为什么要随机初始化一个序列号——安全性, 防止和上一次会话滞留的报文冲突
阿里三面:
-
说明一下缺页中断, 虚拟内存
-
JVM中的内存区域划分,堆的分代,为什么分代, 垃圾回收算法,垃圾回收器
-
Linux进程间的通信方式, 管道,有名管道,socket,共享内存,消息队列
-
如何实现进程间特定场景下的高效通信, 问了存储相关的问题。
-
MySQL索引类型, 底层的数据结构
-
手写一个双链表的插入和删除,查找方法
HR面:
-
自我介绍
-
项目中遇到的难点,
-
对部门的理解
-
个人的职业发展,城市的选择,职业方向,有没有其他公司的offer
阿里高级Java必考题与答案
答案获取方式——点击此处 即可领取