2018校招小记之蚂蚁金服
2018年的秋招来得比往年都早,这周投了蚂蚁金服内推,刚刚接到一面电话,时长22分钟,简记如下。
1、介绍实习项目(实习项目采用微服务架构,引出的问题2和3)
2、(实习项目)微服务的实现,如何做服务发布和服务发现
3、服务发现以后,服务中心还起哪些作用
4、事务四特性:ACID(原子性atomicity、一致性consistency、隔离性isolation、持久性durability)
5、分布式数据库如何实现ACID
6、分布式ID生成器:SnowFlake算法、唯一性保证、高可用的保证(参考美团Leaf组件)
7、ArrayList和LinkedList的区别,具体应用场景
8、hashCode和equals方法
9、HashMap内部结构,散列冲突的处理(注意JDK8与之前版本实现不一样),是否线程安全
10、序列化
11、JVM内存类型(堆内存、栈帧……),堆内存类型(持久代、年老代、年轻代),GC类型(Young GC、Full GC)、GC算法(串行,并行,G1……)、GC方法(引用计数 VS 可达性分析)、GC日志
12、线程状态及转化
13、StackOverFlow发生的场景,其他OOM
14、分库分表的实现,跨库分页
15、AOP的关键概念,代理模式(JDK动态代理和CgLib代理)
16、常见加密算法
Update
距一面仅过去两天,遂接到二面电话(事实上昨天就打了一次电话,但约的今天面试)。二面用时1小时27分钟,应该算是比较长的了,时间关系,简单整理一下问到的问题。
项目类:
- 介绍最近的一个项目
- 如何从PRD转换成设计
- UML图的使用
架构类:
- 服务部署的方案设计,单机QPS多少,计划布几台机器,如何评估
- 分布式系统数据一致性的保证,有无预防(不一致的)措施
e.g 下游系统双写失败的处理?下游双写成功后上游事务rollback的处理?
p.s 了解分布式事务的解决方案 - 服务间数据同步的时效性如何保证?同步策略的选择
技术类(问题1~2有项目背景):
- MQ的适用场景
- WebSocket的适用场景,对比长连接的优势,从原理上说说两者对性能的影响
- MySQL两种存储引擎的差异
- MySQL索引的原理及实现,建立索引的注意事项
e.g gmt_modify字段可以建索引吗?如何优化根据gmt_modify的查询性能? - Redis的原理,Redis-Cluster实现HA,为什么不直接在本地做缓存
- HashMap的内部实现,如何put值
e.g. 什么情况下HashMap内会出现多个相同的Key,导致内存溢出
(面试官提示:与hashCode方法的实现有关) - 自己用反射写过的工具类或者框架,为什么不能反射出方法的参数名
p.s 方法签名的构成要件 - 线程的种类和创建方式,并发的控制
- synchronized关键字锁什么,同一个类的多个实例如何用synchronized同步
p.s 锁 类名.class 对象 - 死锁的定义和避免
- JVM的内存模型和GC机制,常见的GC算法,分别应用在哪一块内存区域
- Java的引用类型,之间有哪些区别
- TLS握手的过程,验签的步骤
- volatile关键字能用于同步吗
开放型:
- 数据的价值,对大数据的看法
- 蚂蚁金服可以在哪些方面应用大数据
p.s 答支付宝风控,多样化的规则引擎
面试官评价:
对Java基础,要知其然,知其所以然;推荐你阅读《深入理解Java虚拟机》
Update2
听这评价,十有八九呵呵了,果不其然,几小时后状态变成已回绝……