当前位置: 首页 > 面试经验 >

阿里面经总结(最新)

优质
小牛编辑
90浏览
2023-05-09

阿里面经总结(最新)

快手

面经1-一面

开始先是手撕算法两道

  1. 自我介绍
  2. 两道手撕 将字符串转化为整数 (这里当时出现溢出值问题,进行了思考解决,写了两种方式)synchronize , 可以使用的几种形式,代码写出

操作系统 和 数据结构

  1. hash解决冲突 ( 开放定址法、链地址法、再哈希法、建立公共溢出区 )
  2. 上述四种方式详细的过程、思路
  3. 链地址法和再哈希法之间的关联和区别
  4. 两者分别适用场景
  5. 两者底层的数据结构,关联和区别
  6. 链表和数组的底层结构设计、关联、区别、应用场景

常用算法

  1. 常用的排序算法 ( 冒泡、堆、快速、桶、选择、插入 )
  2. 堆排序和选择排序使用场景上有什么区别
  3. 选择排序和堆排序对于资源的利用 ( 选择排序适合数据量少的情况、堆排序适合数据量多的情况,资源利用率、设计思路 )
  4. 常用的查找结构都有什么? ( 二分查找法、插值法、hash查找、分块查找、树表查找 )

数据结构

  1. b树和b+树和红黑树的设计思路、结构区别、使用区别
  2. 队列和栈有什么区别
  3. 他们的使用场景 ( 栈:数据匹配、数据反转;队列:任务队列、共享打印机 )

Jvm

  1. jvm内存模型
  2. jvm垃圾回收算法
  3. jvm垃圾回收器
  4. cms、g1的设计思路、关联和区别、垃圾回收阶段的不同
  5. 让你设计系统中进行选择其中一个回收器,你的想法是什么

使用框架、底层原理

  1. 在你的开发中最常使用的框架
  2. SpringBoot常用注解
  3. RestController和Controller有什么区别
  4. 你在完成项目的过程中是怎么处理异常的 (全局异常梳理)
  5. 全局拦截器的设计、项目中实现 (注解、类)
  6. Aop的了解、怎么使用
  7. Aop底层实现( JDK、CGLib、动态代理实现 )
  8. asm是什么 (字节码增强器)

给大家分享一个Github仓库,上面有大彬整理的300多本经典的计算机书籍PDF,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索,仓库持续更新中~

********

MySql

  1. Mysql事务隔离级别
  2. 什么情况下使用读已提交
  3. 对于脏读的理解

redis

  1. 对于redis的理解
  2. redis在项目中进行怎么样的使用
  3. redis 为什么读取速度那么块 (io、单线程、内存)
  4. 为什么redis单线程会快 (完全基于内存、单线程避免不必要的上下文切换、cpu消耗、加锁问题。。。)
  5. 对于很多文件和数据,怎么进行数据的查找、排序,使用什么样的数据结构 (类似于TopK、这个主要是让你进行优化、类似于位图、hash、过滤器之类的)
  6. 反问: 对于部门的业务、技术栈对我的建议、和整个面试的感觉

面经1-二面

Java基础

  1. 自我介绍
  2. 抽象类和接口有什么区别
  3. 在使用过程中,接口和抽象类的选择以及使用场景

计网、Linux

  1. http 和j https 的区别
  2. https 过程中都使用哪些加密的算法 ( 对称加密、非对称加密 )
  3. 都怎么使用的,这些j加密算法的理解
  4. Linux都是用过哪些常用命令 (cat、less、tail、grep、wc....)
  5. 查看系统内存 ( top )
  6. 查看系统内存,返回多个指标,怎么查看内存的占用率
  7. 怎么将系统内存显示的数据进行排序

Java基础加深、线程、锁、数据机构等等

  1. java里面的类加载器的设计
  2. 类加载器的类之间的可见性 (委托机制、单一性、可见性)
  3. 如果父级对子级进行调用,会出现什么异常
  4. 线程都有哪些状态
  5. blocking和waiting有什么区别吗
  6. 如果是sleep(1000) 会让线程进入什么状态
  7. synchronize的使用流程
  8. java中的原子类实现原理
  9. 对CAS的了解
  10. 对CAS底层了解
  11. HashMap的底层实现原理
  12. HashMap的put流程
  13. ConcurrentHashMap的实现原理

框架Spring,代理

  1. Spring的Aop的底层实现
  2. 动态代理的了解 ( 见上面文章 )
  3. 静态代理和动态代理的区别
  4. 对动态代理性能的了解
  5. 浅拷贝和深拷贝的区别
  6. 手撕 : topK问题 ( 堆、优先队列、快排、冒泡 )
  7. 大顶堆小顶堆的设计思路

收尾的小问题

  1. 在实习中最有成就感的项目
  2. 对抖音和快手的看法
  3. 反问 业务的具体方向对我的整体感觉和建议

面经1-三面

  1. 自我介绍
  2. 介绍一个你最得意的项目
  3. 介绍一下你的实习经历
  4. 实习项目中介绍一个你印象最深的需求
  5. 这个需求的设计、使用的框架详细介绍
  6. 这个项目的上线效果怎么样的
  7. 上线需要的什么问题
  8. 你在实习公司的转正情况
  9. 还有其他的offer吗
  10. 你对快手怎么看的
  11. 面试官主动介绍部门
  12. 反问 部门的业务、地点 ( 因为之前面试的组hc没了,转到隔壁组,重新问的业务方面 )对我整体面试看法 ( 说的是看我之前面试,聊的挺详细的,面评也不错,等hr )

面经1-HR面试

  1. 面试官先自我介绍了
  2. 最近2-3年,挑一个最有代表性的一件事
  3. 你为什么觉得这件事最有代表性呢
  4. 在你的整体实习的话,给自己打分你会打几分 、10分制 ( 我打的8分 )
  5. 你都做了那些事情,让你打的8分
  6. 那你觉得从那些手段方法提升剩下的2分呢
  7. 你完成实习之后,有哪些收获呢
  8. 考虑提前实习吗
  9. 毕业之后的未来规划
  10. 之后的定居城市怎么想的
  11. 还有什么进行的面试流程吗
  12. 你心中对这些公司的排序 ( 地点、技术、前景 )
  13. 反问 什么时候出结果对我的整体感觉

面经2-一面

1、聊项目

2、线程的几种状态

3、线程池的状态

4、线程池的运行过程

5、如何合理地配置线程池

6、怎么实现阻塞队列

7、怎么监控线程池的运行状态,答的用一些线程监控的工具,面试官说指代码层面上,只争对线程池,没答上

线程池执行类ThreadPoolExecutor给了相关的API来监控某一个线程池的执行状态,能实时获取线程池当前活动线程数、正在排队线程数、已执行线程数、总线程数等。

ThreadPoolExecutor tpe = ((ThreadPoolExecutor) es);
while (true) {
    System.out.println();
 
    int queueSize = tpe.getQueue().size();
    System.out.println("当前排队线程数:" + queueSize);
 
    int activeCount = tpe.getActiveCount();
    System.out.println("当前活动线程数:" + activeCount);
 
    long completedTaskCount = tpe.getCompletedTaskCount();
    System.out.println("执行完成线程数:" + completedTaskCount);
 
    long taskCount = tpe.getTaskCount();
    System.out.println("总线程数:" + taskCount);
 
    Thread.sleep(3000);
}

8、java中有几种锁

9、锁升级的过程(自旋的缺点,CAS有什么不足)

10、对象头的结构

11、synchronized和ReentrantLock区别

12、ReentrantLock是怎么实现的,讲到AQS,顺便说了AQS

13、还有哪些基于AQS的同步工具

14、volatile作用

15、volatile怎么保证可见性和防止指令重排序

16、mysql的隔离级别

17、事务acid

18、mysql如何保证acid

19、redo log和undo log区别

20、redo log和undo log是如何生成的(这块细节忘了,只说了先写内存,然后再刷盘)

21、介绍几种消息队列

22、说说rabittmq架构(说了分为虚拟机、交换机和队列,然后说了下消息的传递过程,面试官否认了,说这只是应用层面)

23、jvm的内存模型

24、对象什么情况会进去老年代

25、spring ioc aop

26、注解底层怎么实现的(动态代理)

27、注解失效有哪些原因(自己还经历过@Transaction失效的bug的,当时没答上来,被自己气死)

28、bean的加载过程

算法:有序数组生成平衡二叉树,当时已满60分钟,面试官给了5分钟的时间限制,看我思考了一会,问我有没有思路,我说暂时还没,然后就换了一道题

面经2-二面

1、聊项目

2、mysql默认隔离级别

3、如何实现可重复读

4、如何解决幻读

5、间隙锁和nextkey锁

6、mysql锁是锁的什么(索引)

7、mysql的索引结构,有什么优点

8、怎么实现读写分离

9、主从复制是怎么实现同步的,答传bin log文件,后续数据更新怎么同步,答mysq不了解,但我知道redis主从复制后续是通过一个复制缓存区来记录新增的命令,通过发送这些命令实现同步

10、说说redis架构(单线程,io多路复用)

11、redis的底层数据结构知道吗(只知道用到了跳表,然后说了下跳表)

12、缓存穿透和缓存雪崩,解决方法

13、缓存和数据库怎么保证一致性

14、说说threadlocal怎么实现的

15、threadlocalmap中key为啥要用弱引用,key被gc后value怎么办

16、说说四种引用

17、spring事务传播机制

18、spring如何解决循环依赖

19、说说tcp协议

20、tcp如何保证不会接受重复的报文

21、tcp如何保证有序

算法:lc124. 二叉树中的最大路径和

部门:商业化技术部

面经2-三面

  1. 自我介绍
  2. Redis 是单线程还是多线程?为什么快?
  3. IO多路复用和非阻塞IO? IO多路复用提升了什么性能? IO多路复用提升了CPU哪方面的指标
  4. 线程池使用过吗?线程池的运行原理?
  5. IO密集型和CPU密集型的区别
  6. IO密集型的线程数配置过多会对CPU有什么影响?
  7. Zookeeper 的原理
  8. 为什么使用Zookeeper
  9. Zookeeper为什么要主从,选举机制
  10. MySQL的主从是什么原理
  11. TCP为什么是可靠的
  12. 能提前实习吗?
  13. 未来三到五年的规划?
  14. 算法题 lc简单题
  15. 能来提前实习吗?

反问:对应届生的要求。

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~

********

如果访问不了Github,可以访问*******。

*******

#java##java面经#
 类似资料: