阿里巴巴面试题汇总

算法题

力扣 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基础

  1. 可解释性语言与编译性语言
  2. 说说你对面向对象、面向过程等的理解
  3. 队列与栈 arraylist linkedlist 顺序表 链表
  4. HashMap的实现原理,put流程,get流程,HashMap是如何解决hash冲突的问题? 常见的hash算法
  5. HashMap在1.7和1.8之间的区别以及做了什么优化?什么时候成环,为什么成环?
  6. hashcode不同的话,两个对象的值一定不同吗?
  7. ConcurrentHashmap如何保证线程安全?
  8. CopyOnArrayList如何保证线程安全?
  9. 讲讲ArrayList ,linkedList底层实现?
  10. threadLocal的原理?
  11. 反射的作用是什么? 有哪些用途?
  12. 乐观锁和悲观锁,公平锁和非公平锁
  13. IO和NIO的却别,以及NIO的原理,有了解过mina?
  14. ReentrantLock与AQS同步框架
  15. 创建线程的方式有哪些?线程生命周期(状态)
  16. 详细说说CAS的底层设计思想,你能模拟一下锁升级吗?
  17. 你用过哪些并发工具类?实现原理是什么样的?
  18. 如何用Java实现连续空间的内存分配呢?
  19. synchronize锁定.class和锁定一个实例有什么区别?
  20. Java 的序列化做什么用的 序列化id会出现哪些问题?
  21. nio是否了解 阻塞之后通知机制是怎样的?
  22. Java的受检异常和非受检异常有什么区别?你知道有哪些异常吗,说一下平时遇到过哪些异常?
  23. 如何实现两金额数据相加(最多小数点两位)

jvm

  1. 讲讲jvm内存模型,每个内存区域的作用?
  2. 四个引用的具体应用场景
  3. 常见垃圾回收器具体应用场景
  4. 讲一下MinorGC和FullGC?
  5. CMS在并发收集的时候需要Stop The World吗
  6. 可达性分析算法具体应用场景
  7. 垃圾回收器参数调优(给具体场景 大概就是并发低延时)
  8. 具体场景(一半io型一半cpu型然后给具体数值 并发数等等 确实忘了)gc参数调优(接上一个)
  9. 高并发多连接jvm 线程池参数调优(顺着来)
  10. volitate关键字原理,CAS原理是什么?
  11. synchronize原理是什么?
  12. jvm中一次完整的GC流程(从ygc到fgc)是怎样的,重点讲讲对象如何晋升到老年代,几种主要的jvm参数等
  13. 内存溢出,你怎么排查?内存泄漏如何排查?
  14. 说说你了解的类加载器,双亲委派模型
  15. jvm内存调优用过哪些工具,jstate做什么用的?如何dump出当前线程状态?
  16. 你对操作系统底层的锁是怎么实现有了解吗?
  17. Java中的内存溢出是如何造成的?

数据库

  1. mysql数据库中的索引类型,数据结构是什么样的?
  2. 事务原理、锁的原理和实现、
  3. 事务隔离级别mvcc原理,innodb和myisam的区别,Update的时候MVCC是怎样的过程。
  4. 分库分表的实现原理是什么,你所在业务一般是怎么分库分表的?对应逻辑是什么?
  5. 怎么实现一个数据库?
  6. 慢查询如何优化
  7. explain中的key字段的值等于ref时,有没有触发索引?
  8. 数据库设计中主键id设计的原则
  9. left join和right join的区别。
  10. 说一下对InnoDB的MVCC的理解。
  11. 讲了索引、锁、redo log、undo log、插入缓冲

redis缓存

  1. redis和memcached 的内存管理的区别
  2. 什么是一致性hash
  3. Redis讲一下,项目使用场景?
  4. Redis宕机了怎么办,数据呢?怎么保持热点数据?过期机制,淘汰机制?
  5. 详细说说redis为什么使用跳表而不是用红黑树
  6. 常见的缓存策略有哪些,你们项目中用到了什么缓存系统,如何设计的,Redis的使用要注意什么,持久化方式,内存设置,集群,淘汰策略等
  7. 什么是缓存击穿?缓存雪崩?缓存穿透?如何解决?
  8. 缓存如何与数据库的数据保持一致性?
  9. Redis的集群模式有哪些,你们怎么做的?

java生态框架

  1. springboot的启动过程说一下(我对springboot底层原理不是很了解)
  2. springboot 和 spring 的区别是什么?
  3. springboot为什么能简化配置,如何实现的?
  4. spring中bean的初始化过程
  5. spring中循环依赖如何解决?如果让你来实现你怎么做?(我给面试官说了原理,然后他继续问我具体实现。。。)
  6. Spring的IOC如何实现的,AOP是如何实现的
  7. spring中有哪些设计模式?
  8. Mybatis缓存机制?
  9. SpringCloud及其组件你了解哪些?
  10. 讲一下TCP粘包原理,怎么解决。
  11. 讲一下Reactor线程模型。Netty的线程池和普通的线程池相比,性能提高的原因?
  12. Netty是事件驱动的,如何怎么理解事件驱动?
  13. dubbo如何一条链接并发多个调用。Dubbo的原理,序列化相关问题。
  14. 使用的第三方软件中的BUG;
  15. 对Hibernate和Mybatis做个比较
  16. docker容器是如何实现线程隔离的

网络基础

  1. 三次握手 4词挥手
  2. 讲一下ftp
  3. http以及https 以及加密手段
  4. cookies和session,session共享机制
  5. 浏览器输入url后的一系列操作
  6. 常见状态码,301和302,5xx,4xx分别代表什么意思
  7. http1.0,1.1,2.0的区别?

linux和服务器

  1. 进程之间通信的五种方式,及其原理和应用场景
  2. 知道句柄吧,解释一下句柄的原理,Java程序从开始打开句柄到句柄关闭,说一说操作系统做的工作?
  3. 如何排查cpu100%,如果机器内存出了问题,应该要怎么排查?
  4. 用户态和内核态的区别
  5. epoll,poll,select的区别
  6. 什么是水平触发和边缘触发?
  7. 操作系统有哪些内存分配算法?

消息队列

  1. MQ系统的数据如何保证不丢失
  2. 消息中间件:消息中间件解耦&消峰特性的了解,消息中间件的原理

分布式和微服务

  1. dubbo中的rpc如何实现? 自己实现rpc应该怎么做?
  2. dubbo的服务注册与发现?
  3. 分布式锁的方案,redis和zookeeper那个好,如果是集群部署,高并发情况下哪个性能更好?
  4. 分布式限流如何实现,原理是什么?
  5. 分布式协调算法:zk的paxos协议原理,zab原理,metaq的raft协议原理
  6. 分布式事务的原理,如何使用分布式事务?分布式事务的解决方式,2pc,3pc,TCC。
  7. 什么是paxos算法?
  8. 负载均衡是怎么做的?如果我的服务器ip地址变了,客户端如何感知到呢? 轮询的负载均衡的缺点是什么?如何改进?
  9. API接口与SDI接口的区别?

架构和设计模式

  1. 适配器模式和门面模式的区别

  2. 了解哪些设计模式,6个设计原则分别是什么?每种设计原则体现的设计模式是哪个?

  3. 设计一个秒杀系统,30分钟没付款就自动关闭交易

    1. 静态资源CDN怎么做?
    2. 如何保证系统不会挂?
    3. 如何保证不超售?
    4. 如何处理库存,在哪里处理?
  4. 分布式集群下如何做到唯一序列号

  5. 分布式系统的全局id如何实现?用zookeeper如何实现的呢,机器号+时间戳即可?

  6. 聊一聊NIO的应用场景吧,如何设计一个聊天室?

  7. 如何实现单点登录,如何实现权限控制,用户密码泄露后如何保证安全性 ?

  8. 微信红包怎么实现?

  9. 让你来实现真正的负载均衡,你如何做?

  10. 要搭建一个高性能网站,你会采取哪些方式?

  11. 请解释下为什么鹿晗发布恋情的时候,微博系统会崩溃,如何解决?

  12. 场景:同时给10万个人发工资,怎么样设计并发方案,能确保在1分钟内全部发完?

  13. 设计模式在你的项目中有哪些应用?

    1. 在Spring Cloud中,Feign这个组件是用动态代理的方式实现的 在Spring中,创建bean的时候用了单例模式,AOP用了动态代理模式,ApplicationContext用了工厂模式。 在Java中,Iterator用了迭代器模式,String常量池和Integer.valueOf等缓存策略,用了享元模式,IO相关类(InputStream、OutputStream)用了装饰器模式,StringBuffer、StringBuilder用了建造者模式。
  14. 如果让你设计一个通用的、支持各种数据库秒级备份和恢复的系统,你会如何设计

项目经验

  1. 介绍自己的项目经验,项目中做了什么,难点在哪里?主要是想了解参与过技术难度最大的项目难点,技术难点在哪里,你是怎么来解决的?
  2. 聊一下项目,结构、规模、并发量、技术原理等角度。 二、你的项目的大小扩充一千倍,你觉得系统性能瓶颈在哪里,架构要怎么变化。

非技术问题

  1. 为什么离职?根本原因是什么?
  2. 聊下你的职业规划?
  3. 你有哪些爱好?
  4. 最近在看什么书?
  5. 最近看的电影是什么?
  6. 你觉得你的优点和缺点是什么?
  7. 有其他Offer吗?