阿里暑期实习java开发面试经验
2022 3.17更新
写了一篇站在面试管视角看春招的文章https://www.nowcoder.com/discuss/865882 ,希望可以帮助到大家
去年4月投了阿里供应链的暑期实习,没想到很顺利的就上岸了,与同组一起上岸的同学合作了这篇面试经历分享,希望可以帮助到想去阿里暑期实习的同学。
3.20
还有很多
希望内退的同学可以把简历投递到sikai.zsk@alibaba-inc.com欢迎大家有问题及时咨询!期待你们的加入!
流程
2020年4月3号进入内推流程
4月11号左右笔试
4月16号一面
4月22号二三面
4月27号交叉面
4月28号HR面
4月30号收到offer
6月1号入职
面试流程持续了半个月,4次技术面都是围绕着之前做过的项目展开的,用到的技术栈,为什么用这些中间件,要对用到的技术栈有较深刻的认识,理解设计的意图。
一面更偏向基础二三四面则偏向思考,面试的题目都不算特别困难,难点在于是否在学习一个中间件(知识点)对其有过思考的过程(比如一个场景ABCD四种技术都能够实现,但是并不存在一种最优解,要能够针对具体使用场景(可能是多情况)选择合适的技术)。
面试准备
Java
基础
面向对象三大特性:封装、继承、多态如何在Java中体现
String StringBuilder StringBuffer区别 ""+""实现过程
什么时候重写hashcode和equals方法
深拷贝浅拷贝
BIO、NIO、AIO原理及应用场景
Java的东西很多而且很深,上面说的只是一小部分,面试结束尤其推荐java是突击学来的同学再系统的学学,《Java核心技术》一共两卷,非常厚。
容器
List、Map、Set区别及使用场景
对比List、Map、Set的各种子类
HashMap原理 扩容缩容机制、存储结构、rehash实现方法等 一定要熟悉底层代码实现及算法原理
HashSet如何查重
ArrayList 和 Vector 的区别
一定要耐下心看各个常用容器(HashMap、ArrayList)常用方法的实现算法及代码实现
并发
进程、线程、协程和程序各自是什么及区别
上下文切换
synchronized实现原理(结合JVM 连带讲锁升级)
可重入锁代码实现及原理
ThreadLocal 一定要看源码 与Thread的关系、hash算法、内存泄漏及如何避免
线程池 针对不同情况参数如何选择
原子类
CAS
AQS原理
不光要背面试题 建议面试结束后再深入学学java并发 推荐《Java并发编程的艺术》
JVM
JMM结构(最好可以针对不同虚拟机 不同版本 或者只说HotSpot虚拟机)每部分的作用,及什么时候会用到
java对象创建过程
类加载机制
内存分配与回收策略
如何判断对象是否可被回收
四种引用
垃圾回收算法
垃圾回收器
MySQL
一条sql语句(增加、删除、修改语句)在MySQL中如何执行
对比常见的存储引擎(主要对比innodb 和 myisam 最好能多说出几种常见的存储引擎及特点)
索引(能说出innodb 和myisam 的策略最好)
事务 什么是事务 并发事务带来的问题
事务隔离级别 innodb如何保证(主要说如何解决幻读)
innodb 锁机制
innodb 日志 mysql 日志 两段式提交
一条sql执行的慢的原因
大表优化
mysql不同存储引擎存储结构
MySQL 索引为什么采用B+树?
想深入学习mysql的同学推荐这本《高性能MySQL》,极客时间上的MySQL45讲同样也非常经典
Redis
为什么用缓存(不光是说redis 可以先从计算机cache说起,再到具体环境中,比如网上商城怎么怎么样需要缓存,然后各种缓存什么特点,最后为什么选redis,这里就可以顺便说说redis的结构)
对比两种常用缓存中间件redis和Memcached
redis单线程模型及为什么不需要多线程(6.0后又引入了多线程)
持久化策略
数据过期淘汰策略
内存淘汰机制
缓存穿透 缓存雪崩 如何避免
事务
如何保证redis-数据库数据一致性
主从结构如何保证(主机-从机)数据一致性
主机坏了如何选出新的主机
消息队列
有哪些常见的消息队列?用过哪些?
队列模型和发布/订阅模型的区别?
如何保证消息的有序性?
如何保证消息不丢失?
如何不重复消费消息?也就是消息消费的幂等性
如果让你来设计一个消息队列,该如何考虑
Spring
介绍一下spring( or spring boot)吧(什么是spring 有什么特点 优势 对比不用的情况)
列举一些比较重要活比较常用的模块(aop orm test... 官网那张图)
AOP IOC
bean 生命周期 如何加载一个自己的bean进容器
事务
解释一下常用的注解
设计模式
最容易考到是手写一个单例设计模式,一定要搞清楚那几种各自哪里有问题。
spring、redis、rocketmq中用到了什么设计模式?在哪用到的?
你的项目中用到设计模式了么 ?为什么用? 在什么情况下用? 用它的好处是什么? 如果不用会怎样?
计算机网络
网络的七层通信模型,常见的协议比如 TCP、IP、UDP、ARP、HTTP、FTP 等都位于哪一层
常见 Http 的状态码的含义(常见的502,500,404,302,204,200等),遇到对应问题知道如何去处理
Http请求的构成
GET 和 POST 有什么区别
TCP 和 UDP 的区别(TCP 为什么可以保证传输的可靠性)
TCP 的三次握手和四次挥手(为什么挥手需要四次)
TCP 的拥塞控制(慢开始,拥塞避免,快重传,快恢复)
TCPTCP
什么是 ARP 协议。
ping 命令的实现原理,ping 命令为什么不需要端口号
从输入 URL 到页面加载发生了什么?
长连接和短连接
操作系统
操作系统的线程与进程的区别,线程有几种状态?
线程间通信的方式与进程间通信的方式。
什么是死锁?死锁的必要条件,如何避免死锁?
进程的调度算法
磁盘的寻道算法
I/O 模型
如何线程同步?有哪些方式
其他
了解 Hadoop 吗,介绍一下 hdfs 与 mapreduce
Nginx 做反向代理以及负载均衡
微服务主要有哪些相关技术?
会重点问到项目用到的技术,并深挖细节来问,为什么这样做?现在有没有什么更好的解决方式?因此准备项目经历时不要广而要深
对自己进行评价,优点缺点各是什么
简历
项目经验(实习经验)非常重要,一定要把用到的技术栈(千万得是自己熟悉的)写上,尽量遵循STAR法则与FAB法则。面试官会结合你的项目去问你所掌握的技术栈。
STAR法则(Situation Task Action Result)
Situation: 事情是在什么情况下发⽣;
Task:: 你是如何明确你的任务的;
Action: 针对这样的情况分析,你采⽤了什么⾏动⽅式;
Result: 结果怎样,在这样的情况下你学习到了什么。
简⽽⾔之,STAR法则,就是⼀种讲述⾃⼰故事的⽅式,或者说,是⼀个清晰、条理的作⽂模板。不管是什么,合理熟练运⽤此法则,可以轻松的对⾯试官描述事物的逻辑⽅式,表现出⾃⼰分析阐述问题的清晰性、条理性和逻辑性。-
FAB 法则(Feature Advantage Benefit)
Feature: 是什么;
Advantage: ⽐别⼈好在哪些地⽅;
Benefit: 如果雇佣你,招聘⽅会得到什么好处。
简单来说,这个法则主要是让你的⾯试官知道你的优势、招了你之后对公司有什么帮助。
转自https://github.com/Snailclimb/JavaGuide
最后 如果还有哪里我没说清楚或者想暑期实习内推的同学可以****************
#Java开发##面经##阿里巴巴##Java工程师#