阿里云弹性计算部门Java提前批二面面经
一面
电话面(50min)
实习
- 问之前的实习经历,在实习中遇到的挑战和困难,怎么解决的
- 聊到MySQL的分表分库,讨论一下
- docker容器技术的原理(这里只是简单答了下namespace和cgroup,没有深入问)
Redis
- 简历里提到Redis,聊聊怎么使用的,为什么选择用Redis
- 切片集群和哨兵集群的区别
- 主从切换的过程,哨兵选举过程
- Redis数据持久化,RDB和AOF的区别
Java
- Java内存模型(JMM)
- Java内存区域有哪些,堆和栈的区别,什么情况会导致栈内存溢出
- 引出可见性问题,列举一个可见性导致线程不安全的场景
- 聊一聊Java垃圾回收(答了常见的垃圾回收算法,分代理论)
- 不可以分代可不可以,聊一聊看法
- volatile关键字,既然volatile关键字可以解决可见性,为什么不所有变量都使用
MySQL
- 说一说平时MySQL查询的调优思路(回答explain查看查询日志,看是否命中索引)
- 聊一聊设计索引时需要注意些什么(回答索引的数据结构B+树,字段区别度要大,最左匹配原侧)
- 说说B+树,为什么选择B+树做索引
计网
- 说说网络分层
- TCP属于哪层协议,TCP如何保证的可靠性,为什么进行3次握手
- HTTP属于哪层协议,应用层应用到UDP传输的协议有哪些(回答DNS)
- 详细说说DNS工作过程(如何通过hostname查询对应IP)
笔试(45min)
电话面结束后就是笔试,笔试地址直接发邮箱,用阿里自己的答题系统
题目1: 给定任意一个二叉树,计算这个树的最大深度。(递归和非递归实现)
题目2: 一台火星探索车一个地面指挥台,面向对象设计考虑 地面指挥台向火星探索车发送 移动,拍照等多个指令。 要求1、面向对象建模, 要求2、用命令模式 要求3、指令状态并发控制或者同步交互考虑额外加分。
总结
面试来的很突然,并没有提前约面试时间,全程在走廊游走。题目2不会,按自己思路写的,不知道什么是命令模式,好好复习设计模式,许愿下一面~
二面(1h15min)
电话面
- 如何解决MySQL分区表跨表查询
- 存储引擎InnoDB和MyISAM的主要区别
- B+树索引命中流程,磁盘I/O次数,最多几次I/O
- SQL语句的执行过程
- ConcurrentHashMap原理
- Ping命令的请求过程
算法
- 剪绳子1
- 一个大小为n的数组,一定存在重复元素,利用O(1)的空间复杂度和O(n)的时间复杂度找出其中一个重复值
- 大文件排序
- 打家劫舍(头尾不相连 + 头尾相连)
闲聊
- 成绩+奖学金+课程+看书+职业规划
总结
- 好好复习算法,许愿下一面~