与朋友一起合作了一篇阿里上岸经验分享,希望能帮到大家,如有意愿加入可查看文末联系方式,可随时交流。
面试流程
整个流程包括笔试+4次技术面试+hr面,大概持续了半个月左右,其中4次技术面时间跨度大概在十天左右
面试官很 nice,会提前1-2天告知面试时间,如果有冲突可以延后,时间上很好沟通
笔试有两道题更偏向于对问题的建模与解决,难度相当于其他厂最后两道题的水平
前两次技术面偏基础,会问比较底层的东西,主要看技术的深度,最好对技术栈的源码实现有了解;后面两次发散性比较强,会看你思考能力、解决问题的能力,以及技术的广度;
项目经历方面,会重点问到项目用到的技术,并深挖细节来问,为什么这样做?现在有没有什么更好的解决方式?因此准备项目经历时不要广而要深
下面说一下容易问到的技术
面试经验
Java
基础
- 面向对象三大特性:封装、继承、多态如何在Java中体现
- String StringBuilder StringBuffer区别 ""+""实现过程
- 什么时候重写hashcode和equals方法
- 深拷贝浅拷贝
- BIO、NIO、AIO原理及应用场景
Java的东西很多而且很深,上面说的只是一小部分,面试结束尤其推荐java是突击学来的同学再系统的学学,《Java核心技术》一共两卷,非常厚。
集合框架
- List、Map、Set区别及使用场景
- 对比List、Map、Set的各种子类
- HashMap原理 扩容缩容机制、存储结构、rehash实现方法等 一定要熟悉底层代码实现及算法原理
- HashSet如何查重
- ArrayList 和 Vector 的区别
这里需要对源码有一定的了解
并发
- 进程、线程、协程和程序各自是什么及区别
- 上下文切换
- synchronized实现原理(结合JVM 连带讲锁升级)
- 可重入锁代码实现及原理
- ThreadLocal 一定要看源码 与Thread的关系、hash算法、内存泄漏及如何避免
- 线程池 针对不同情况参数如何选择
- 原子类
- CAS
- AQS原理
不光要背面试题 建议面试结束后再深入学学java并发 推荐《Java并发编程的艺术》
JVM
- JMM结构(最好可以针对不同虚拟机 不同版本 或者只说HotSpot虚拟机)每部分的作用,及什么时候会用到
- java对象创建过程
- 类加载机制
- 内存分配与回收策略
- 如何判断对象是否可被回收
- 四种引用
- 垃圾回收算法
- 垃圾回收器
计算机网络
- 网络的七层通信模型,常见的协议比如 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 模型
- 如何线程同步?有哪些方式
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中用到了什么设计模式?在哪用到的?
你的项目中用到设计模式了么 ?为什么用? 在什么情况下用? 用它的好处是什么? 如果不用会怎样?
消息队列
- 有哪些常见的消息队列?用过哪些?
- 队列模型和发布/订阅模型的区别?
- 如何保证消息的有序性?
- 如何保证消息不丢失?
- 如何不重复消费消息?也就是消息消费的幂等性
- 如果让你来设计一个消息队列,该如何考虑
其他
- 了解 Hadoop 吗,介绍一下 hdfs 与 mapreduce
- Nginx 做反向代理以及负载均衡
- 微服务主要有哪些相关技术?
关于简历
技术类简历如何写可以参考这一篇帖子 ,上面说的很详细。
如何投递
很高兴能够成功上岸,同时欢迎大家的到来,如有任何问题都可以邮箱或者微信联系,会给大家更详细的指导!
邮箱联系: x643654282@163.com
微信联系: linger-young(可联系进群讨论)
全部评论
(11) 回帖