膜拜!阿里P7架构师费时一个月把自己家的面试题透彻讲解明白了,完整版PDF点进来直接下载!

147 篇文章 0 订阅
140 篇文章 0 订阅
本文是一位阿里P7架构师分享的面试经验,包括阿里一面、二面、三面的问题,涉及Restful接口设计、HTTP请求头、MySQL事务隔离级别、Redis数据结构、JVM内存模型、SpringCloud、Kafka等多个技术点。面试官对候选人的评价是知识深度良好,但广度需加强。
摘要由CSDN通过智能技术生成

前言

整个面试下来,问了很多,而且我又说得比较多,所以整个面试下来,感觉都口干舌燥了。。
总体来说体验还是不错的,面试完的第二天HR打电话给力口头offer

阿里一面

1.如何设计Restful接口

2.get和post的区别

3.常见的HTTP请求头有哪些,User-Agent的作用

4.JDK1.8之后的新特性(不包括1.8)

5.说一下MySQL的事务隔离级别,RC和RR分别解决了什么问题

6.聚簇索引和非聚簇索引的区别

7.索引失效的原因可能是

8.Redis有哪些数据结构,常用场景

9.Redis除了做缓存,还能做什么

10.JVM内存模型,1.7和1.8的区别

11.常见的GC算法,年轻代和老年代一般用哪种算法

12.G1相比CMS的优势

13.JUC包,CopyOnWriteArrayList是什么

14.ConcurrentHashMap,1.7和1.8的区别

15.synchronized是可重入锁吗(因为1.8的时候我提到了synchronized的锁升级)

16.给定一个字符串,形式是"00000011111",找到第一个1的位置

阿里二面

1.RPC和HTTP的区别

2.Java的Map有哪些实现类,分别简要介绍一下

3.说一下HashMap的原理,为什么用链地址去解决冲突,为什么用红黑树

4.kafka如何保证消息不丢失

5.MySQL的事务隔离机制,如何实现的

6.什么是事务,事务的四大特性,一致性是如何实现的

7.MVCC是什么,如何实现的

8.说一下常见的设计模式,实现一下单例模式

9.单例模式有哪几种,二者有什么区别,什么时候用哪种

10.TopK算法

11.优先队列和堆的区别

总结:我简历上没有写消息队列跟RPC,没想到还是问了,所以这两题不会,其他都答得挺好的。面试官最后给我的评价是知识深度可以,但广度还需要加强。所以大家如果要准备该公司的Java面试的话,还是要去看一下RPC跟Kafka相关的知识,至少也要提前去看点面经。

阿里三面

1.说一下了解的Java数据结构有哪些(ArrayList,LinkedList,Queue,HashMap,ConcurrentHashMap,CopyOnWriteArrayList)

2.HashMap的原理(用哈希数组)

3.数组存的是什么,为什么要转换成红黑树,为什么不能是其他树(链表转红黑树,红黑树相对平衡,调整效率快)

4.HashMap是否线程安全,会导致什么问题(不是,会导致更新丢失,比如balabala)
5.除了更新丢失,HashMap还会造成什么问题,1.7和1.8的区别?(1.7头插入会导致死循环,1.8改用尾插法)

6.如果要线程安全,应该用什么类(ConcurrentHashMap)

7.ConcurrentHashMap的实现?1.7和1.8都说一下。(分段锁,synchronized,CAS)

8.synchronized和CAS有什么区别,synchronized的实现原理是什么,CAS呢,CAS如何解决ABA问题(有锁,无锁。monitor(Owner字段,EntryQ字段(互斥锁)),判断有无改变,版本号)

9.synchronized和Lock有什么区别,Lock的实现原理是什么(AQS,使用CLH锁,维护一个双向队列,存储阻塞线程。每个线程一直监听前一个节点的状态,如果调用了unlock,则停止自旋。)

10.线程池的重要参数有哪些(poolSize,corePoolSize,maximumPoolSize,ThreadFactory,RejectionHandler)

11.RejectionHandler有哪些,具体如何操作(4种还是5种来着,略)

12.线程池的线程在执行完任务会立刻回收吗?(保留corePoolSize个核心线程)

13.Spring的IOC原理是什么,AOP原理是什么,默认是哪一种代理,两个代理的区别(反射,获取配置的类和属性,然后在运行时注入依赖。代理,JDK,CGLIB)

14.Spring Bean初始化有哪几种方式(忘了)

15.Spring如何解决循环依赖的(忘了,跟他说没有复习Spring,面试官说回去要巩固一下。答案的话应该是用三次缓存)

16.Redis有哪些常用的数据结构,说说它们的常用场景(String,Hash,List,Sorted Set, Set)

17.Sorted Set的数据结构是什么(ziplist+skiplist,细说了什么是skiplist)

18.Redis如何删除过期键(定期+惰性)

19.Redis如何持久化(RDB+AOF)

20.Redis分片有了解过吗?(说成了高可用,不会)

21.Redis高可用,那主从同步,如何更换主节点(哨兵,监控,投票。追问:细说投票算法?不记得了)

22.MySQL有哪些事务隔离级别,分别解决了什么问题(RU,RC,RR,Serial。。。追问什么是间隙锁,就是锁住间隙避免了幻读)

23.MVCC如何实现的?(日志,redo log,undo log,binlog)

24.索引有哪些类型(哈希索引,B树,B+树,说了一下有什么区别)

25.为什么不用范围搜索就用B树,为什么不能用哈希索引?(应该是树可以减少磁盘的IO消耗,但具体为什么说不出来)

26.什么是聚簇索引,什么是非聚簇索引?(InnoDB)

27.说一下MySQL的分库分表

28.遇到慢查询,如何解决?(explain,索引,覆盖索引,limit等)

29.如果已经用到了索引,但因为数据量太大,比如几个亿,如何解决?(分治。追问:细说?加redis缓存,分库分表)

30.说一下JVM的内存模型(堆,栈,Program Counter,元空间)

31.什么时候会触发GC(年轻代不足以分配对象,老年代不足以分配年轻代晋升的对象)

32.用过哪些RPC框架,有没有看过Spring Cloud的源码(SpringCloud,Netty。无)

33.算法题,二叉树的层序遍历(用了迭代解法)

我的面试经验汇总

下面先给大家上一个总的目录大纲,基础的东西就不进行过多的赘述,我们将会从面试必问的说起,同时由于每篇的内容过多,我们也只说重点,太过基础的内容谁都会,我就不多敲字浪费大家的时间了!
有需要的朋友点击这里自取就好了,希望资料对你有帮助!

SpringCloud

Redis

JVM

MySQL

Zookeeper

Kafka

Dubbo

spring

Rabbitmq

springboot

最后

由于文章篇幅有限,PDF的内容又很多,全部手敲下来很累…所以需要阅读阅读学习的,大家“一件三连后:“查看下方””即可拿到手之后自己学习吧,博主真的打字打累了。

有需要的朋友点击这里自取就好了,希望资料对你有帮助!
预祝大家前程似锦,工作顺利!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
书籍1:互联网 Java 工程师面试题 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、 Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、 Linux 等技术栈 1、MyBatis 面试题 1、什么是 Mybatis 2、Mybaits 的优 3、MyBatis 框架的缺 4、MyBatis 框架适用场合 5、MyBatis 与 Hibernate 有哪些不同? 6、#{}和${}的区别是什么? 7、当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 8、 模糊查询 like 语句该怎么写? 9、通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗? 10、Mybatis 是如何进行分页的?分页插件的原理是什么? 11、Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式? 12、如何执行批量插入? 13、如何获取自动生成的(主)键值? 14、在 mapper 中如何传递多个参数? 15、Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql? 16、Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签? 18、为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里? 19、 一对一、一对多的关联查询 ? 20、MyBatis 实现一对一有几种方式?具体怎么操作的? 21、MyBatis 实现一对多有几种方式,怎么操作的? 22、Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么? 23、Mybatis 的一级、二级缓存 24、什么是 MyBatis 的接口绑定?有哪些实现方式? 25、使用 MyBatis 的 mapper 接口调用时有哪些要求? 26、Mapper 编写有哪几种方式? 27、简述 Mybatis 的插件运行原理,以及如何编写一个插件 等等 书籍2:JAVA核心知识整理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值