阿里巴巴面试题汇总
算法题
力扣 290. 单词规律,3分钟AC,有点简单,
Offer 19. 正则表达式匹配 15分钟AC
lc hard 980
判断链表有没有环
你了解的排序算法,快速排序,归并排序
一个整形数组,给定一个数,在数组中找出两个数的和等于这个数,并打印出来,还要求O(n)。
n个整数,找出连续的m个数加和是最大
题目:按文件大小排序,统计一个目录下按文件大小从高到底排序的TOP20个文件。 输入:一个目录,如/home/ 输出:按文件大小排序的TOP20个文件
给定两个文件,文件里面有每行一个数,求交集。(数据量10G,内存1G)
1T文件128G内存求TOP10频率热词
讲一下AVL、B树、B+树
实现一个高效的单向链表逆序输出?
给定一个二叉搜索树(BST),找到树中第 K 小的节点
已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位
给定一个链表,删除链表的倒数第N个节点,并且返回链表的头结点
最大频率栈
给定一个整数数组和一个整数,返回两个数组的索引,这两个索引指向的数字的加和等于指定的整数。需要最优的算法,分析算法的空间和时间复杂度
java基础
- 可解释性语言与编译性语言
- 说说你对面向对象、面向过程等的理解
- 队列与栈 arraylist linkedlist 顺序表 链表
- HashMap的实现原理,put流程,get流程,HashMap是如何解决hash冲突的问题? 常见的hash算法
- HashMap在1.7和1.8之间的区别以及做了什么优化?什么时候成环,为什么成环?
- hashcode不同的话,两个对象的值一定不同吗?
- ConcurrentHashmap如何保证线程安全?
- CopyOnArrayList如何保证线程安全?
- 讲讲ArrayList ,linkedList底层实现?
- threadLocal的原理?
- 反射的作用是什么? 有哪些用途?
- 乐观锁和悲观锁,公平锁和非公平锁
- IO和NIO的却别,以及NIO的原理,有了解过mina?
- ReentrantLock与AQS同步框架
- 创建线程的方式有哪些?线程生命周期(状态)
- 详细说说CAS的底层设计思想,你能模拟一下锁升级吗?
- 你用过哪些并发工具类?实现原理是什么样的?
- 如何用Java实现连续空间的内存分配呢?
- synchronize锁定.class和锁定一个实例有什么区别?
- Java 的序列化做什么用的 序列化id会出现哪些问题?
- nio是否了解 阻塞之后通知机制是怎样的?
- Java的受检异常和非受检异常有什么区别?你知道有哪些异常吗,说一下平时遇到过哪些异常?
- 如何实现两金额数据相加(最多小数点两位)
jvm
- 讲讲jvm内存模型,每个内存区域的作用?
- 四个引用的具体应用场景
- 常见垃圾回收器具体应用场景
- 讲一下MinorGC和FullGC?
- CMS在并发收集的时候需要Stop The World吗
- 可达性分析算法具体应用场景
- 垃圾回收器参数调优(给具体场景 大概就是并发低延时)
- 具体场景(一半io型一半cpu型然后给具体数值 并发数等等 确实忘了)gc参数调优(接上一个)
- 高并发多连接jvm 线程池参数调优(顺着来)
- volitate关键字原理,CAS原理是什么?
- synchronize原理是什么?
- jvm中一次完整的GC流程(从ygc到fgc)是怎样的,重点讲讲对象如何晋升到老年代,几种主要的jvm参数等
- 内存溢出,你怎么排查?内存泄漏如何排查?
- 说说你了解的类加载器,双亲委派模型
- jvm内存调优用过哪些工具,jstate做什么用的?如何dump出当前线程状态?
- 你对操作系统底层的锁是怎么实现有了解吗?
- Java中的内存溢出是如何造成的?
数据库
- mysql数据库中的索引类型,数据结构是什么样的?
- 事务原理、锁的原理和实现、
- 事务隔离级别mvcc原理,innodb和myisam的区别,Update的时候MVCC是怎样的过程。
- 分库分表的实现原理是什么,你所在业务一般是怎么分库分表的?对应逻辑是什么?
- 怎么实现一个数据库?
- 慢查询如何优化
- explain中的key字段的值等于ref时,有没有触发索引?
- 数据库设计中主键id设计的原则
- left join和right join的区别。
- 说一下对InnoDB的MVCC的理解。
- 讲了索引、锁、redo log、undo log、插入缓冲
redis缓存
- redis和memcached 的内存管理的区别
- 什么是一致性hash
- Redis讲一下,项目使用场景?
- Redis宕机了怎么办,数据呢?怎么保持热点数据?过期机制,淘汰机制?
- 详细说说redis为什么使用跳表而不是用红黑树
- 常见的缓存策略有哪些,你们项目中用到了什么缓存系统,如何设计的,Redis的使用要注意什么,持久化方式,内存设置,集群,淘汰策略等
- 什么是缓存击穿?缓存雪崩?缓存穿透?如何解决?
- 缓存如何与数据库的数据保持一致性?
- Redis的集群模式有哪些,你们怎么做的?
java生态框架
- springboot的启动过程说一下(我对springboot底层原理不是很了解)
- springboot 和 spring 的区别是什么?
- springboot为什么能简化配置,如何实现的?
- spring中bean的初始化过程
- spring中循环依赖如何解决?如果让你来实现你怎么做?(我给面试官说了原理,然后他继续问我具体实现。。。)
- Spring的IOC如何实现的,AOP是如何实现的
- spring中有哪些设计模式?
- Mybatis缓存机制?
- SpringCloud及其组件你了解哪些?
- 讲一下TCP粘包原理,怎么解决。
- 讲一下Reactor线程模型。Netty的线程池和普通的线程池相比,性能提高的原因?
- Netty是事件驱动的,如何怎么理解事件驱动?
- dubbo如何一条链接并发多个调用。Dubbo的原理,序列化相关问题。
- 使用的第三方软件中的BUG;
- 对Hibernate和Mybatis做个比较
- docker容器是如何实现线程隔离的
网络基础
- 三次握手 4词挥手
- 讲一下ftp
- http以及https 以及加密手段
- cookies和session,session共享机制
- 浏览器输入url后的一系列操作
- 常见状态码,301和302,5xx,4xx分别代表什么意思
- http1.0,1.1,2.0的区别?
linux和服务器
- 进程之间通信的五种方式,及其原理和应用场景
- 知道句柄吧,解释一下句柄的原理,Java程序从开始打开句柄到句柄关闭,说一说操作系统做的工作?
- 如何排查cpu100%,如果机器内存出了问题,应该要怎么排查?
- 用户态和内核态的区别
- epoll,poll,select的区别
- 什么是水平触发和边缘触发?
- 操作系统有哪些内存分配算法?
消息队列
- MQ系统的数据如何保证不丢失
- 消息中间件:消息中间件解耦&消峰特性的了解,消息中间件的原理
分布式和微服务
- dubbo中的rpc如何实现? 自己实现rpc应该怎么做?
- dubbo的服务注册与发现?
- 分布式锁的方案,redis和zookeeper那个好,如果是集群部署,高并发情况下哪个性能更好?
- 分布式限流如何实现,原理是什么?
- 分布式协调算法:zk的paxos协议原理,zab原理,metaq的raft协议原理
- 分布式事务的原理,如何使用分布式事务?分布式事务的解决方式,2pc,3pc,TCC。
- 什么是paxos算法?
- 负载均衡是怎么做的?如果我的服务器ip地址变了,客户端如何感知到呢? 轮询的负载均衡的缺点是什么?如何改进?
- API接口与SDI接口的区别?
架构和设计模式
-
适配器模式和门面模式的区别
-
了解哪些设计模式,6个设计原则分别是什么?每种设计原则体现的设计模式是哪个?
-
设计一个秒杀系统,30分钟没付款就自动关闭交易
- 静态资源CDN怎么做?
- 如何保证系统不会挂?
- 如何保证不超售?
- 如何处理库存,在哪里处理?
-
分布式集群下如何做到唯一序列号
-
分布式系统的全局id如何实现?用zookeeper如何实现的呢,机器号+时间戳即可?
-
聊一聊NIO的应用场景吧,如何设计一个聊天室?
-
如何实现单点登录,如何实现权限控制,用户密码泄露后如何保证安全性 ?
-
微信红包怎么实现?
-
让你来实现真正的负载均衡,你如何做?
-
要搭建一个高性能网站,你会采取哪些方式?
-
请解释下为什么鹿晗发布恋情的时候,微博系统会崩溃,如何解决?
-
场景:同时给10万个人发工资,怎么样设计并发方案,能确保在1分钟内全部发完?
-
设计模式在你的项目中有哪些应用?
- 在Spring Cloud中,Feign这个组件是用动态代理的方式实现的 在Spring中,创建bean的时候用了单例模式,AOP用了动态代理模式,ApplicationContext用了工厂模式。 在Java中,Iterator用了迭代器模式,String常量池和Integer.valueOf等缓存策略,用了享元模式,IO相关类(InputStream、OutputStream)用了装饰器模式,StringBuffer、StringBuilder用了建造者模式。
-
如果让你设计一个通用的、支持各种数据库秒级备份和恢复的系统,你会如何设计
项目经验
- 介绍自己的项目经验,项目中做了什么,难点在哪里?主要是想了解参与过技术难度最大的项目难点,技术难点在哪里,你是怎么来解决的?
- 聊一下项目,结构、规模、并发量、技术原理等角度。 二、你的项目的大小扩充一千倍,你觉得系统性能瓶颈在哪里,架构要怎么变化。
非技术问题
- 为什么离职?根本原因是什么?
- 聊下你的职业规划?
- 你有哪些爱好?
- 最近在看什么书?
- 最近看的电影是什么?
- 你觉得你的优点和缺点是什么?
- 有其他Offer吗?