写点什么

疫情宅家 4 个月苦修,“不负年华“终斩阿里 Java 岗 4 面, 分享下心路历程

  • 2021 年 11 月 12 日
  • 本文字数:2477 字

    阅读完需:约 8 分钟

  1. 具体讲一下之前做过的项目

  2. 你觉得项目里给你最大的挑战是什么?

  3. Hashmap 为什么不用平衡树?

  4. AQS 知道吗?知道哪一些呢?讲一讲。

  5. CLH 同步队列是怎么实现非公平和公平的?

  6. ReetrantLock 和 synchronized 的区别

  7. 讲一下 JVM 的内存结构

  8. JVM 里 new 对象时,堆会发生抢占吗?你是怎么去设计 JVM 的堆的线程安全的?

  9. 讲一下 redis 的数据结构

  10. redis 缓存同步问题

  11. 讲一讲 MySQL 的索引结构

  12. 你有什么问题要问我吗?


技术二面


=======================================================================


  1. 根据项目问了一些细节问题

  2. 说一下 HashMap 的数据结构

  3. 红黑树和 AVL 树有什么区别?

  4. 如何才能得到一个线程安全的 HashMap?

  5. 讲一下 JVM 常用垃圾回收器

  6. redis 分布式锁

  7. 再描述一下你之前的项目吧

  8. 你觉得这个项目的亮点在哪里呢?

  9. 你设计的数据库遵循的范式?

  10. 你有没有什么问题?


技术三面(主要从项目入手,主要是解决方案)


========================================================================================


  1. 如何理解内存泄漏问题?有哪些情况会导致内存泄露?如何解决?

  2. 怎么理解强一致性、单调一致性和最终一致性?

  3. 分布式锁有哪些解决方案?

  4. 如何解决 Redi 缓存穿透的问题?

  5. Redis hash 算法用的是什么?

  6. Redis 集群方案应该怎么做?都有哪些方案?

  7. elasticsearch 为什么检索快,它的底层数据结构是怎么样的?

  8. JVM 内存模型

  9. netty 应用在哪些中间件和框架中呢?

  10. 线程池的参数

  11. 讲一下 B 树和 B+树的区别

  12. 为什么要用 redis 做缓存?

  13. 了解 Springboot 吗?那讲一下 Springboot 的启动流程吧

  14. 如何解决 bean 的循环依赖问题?

  15. Java 有哪些队列?

  16. 讲一讲 Spring 和 Springboot 的区别

  17. 最近看了什么书?为什么?

  18. 你平时是怎么学习 Java 的呢?


技术四面


=======================================================================


1.手画自己项目的架构图,并且针对架构和中间件提问 2.之后就是和 hr 谈


面试必考知识点


==========================================================================


下面,我给你们分享一下今年我面试的主要知识点:


  1. **Java 基础,**其中包括线程池(创建线程池的参数有哪些,分别可以取什么值,为什么不推荐使用 JDK 提供的默认实现线程池)、锁(主要是 AQS,如何进队出队,一定要看透,必问)、synchronize、集合(set、list、map 所有的集合都要知道,ConcurrentHashMap 不一定问,问了就要将源码全部屡清楚,包括 cas、volatile 特性)、多线程我倒是没有遇到问的,但是以防万一还是要学习的。这些都是必须掌握的!!!其实不管你去不去大厂,如果想要在技术行业上一直向上走,就必须要掌握这些重要的知识点,要不为啥让你当 teamleader 呢。

  2. **JVM:**核心包括 JVM 的内存结构,垃圾回收算法和垃圾回收器,线上问题排查思路及命令,类加载过程,双亲委派模式等。最好能够梳理成知识树,将内容一次性完整的输出给面试官,这样我认为才是合格的。这也不仅仅是为了应付面试,在哪家公司你都要用到这些内容,这会帮助你更深入的理解 Java,不懂的话,为啥让你当 teamleader?

  3. **Mysql 调优:**主要就是 innodb 搜索引擎,因为其他的不太常用,考察的也少。包括为什么采用 B+tree 作为索引数据类型,创建索引需要注考虑的内容,如何优化 sql,ACID 是什么,事务隔离级别以及如何解决的脏读、幻读、不可重复读(结合 MVCC 和锁就可以解释清楚)

  4. **中间件:**可能有 redis,mq,kafka,es 等等,这就是结合具体项目具体说了。比如 redis 用作分布式锁,先暂停一下,你思考面试官会问什么内容呢?为什么选用 redis 做分布式锁,和 zk 有什么不同;redis 分布式锁如何实现的;redis 分布式锁和 zk 分布式锁有什么问题,有没有解决方案(对于客户端长时间 GC 导致的 key 过期,目前没有太好解决方案)。再比如 mq,你们用的是哪种,如何保证消息不丢失不重复消费,集群如何设计从而达到灾备。以上内容不管你是否参与了设计,或者系统的实现是否进行了考虑,你都需要自己进行了解并结合项目进行思考(可以看书学习方案,再结合项目,这样理解更深刻)。这一点很重要也是必备条件!!!

  5. **算法:**大厂面试 100%会考

  6. **框架源码:**今年面试就遇到一个问框架的,然后就把 spring、springMvc 和 mybatis 的源码一怼就够了。


补充一点,也是最重要的一点——简历!简历必须排版整齐,能够让面试官迅速找到重要信息(年龄,学历,工作经历,掌握的核心技能),具体工作经历需要写明项目含义、个人负责内容及成绩(如果负责内容比较简单,可以写在项目中遇到什么问题,如何解决的或者学习到了什么,目的就是让面试官感觉你有能力)。总之,必须能够让面试官迅速准确地获取你的信息,才有机会进行后面的流程。


我的复习笔记


=========================================================================


面试作为涨薪最直接最有效的方式,我们需要花费巨大的精力和时间来准备。除了自身的技术积累之外,掌握一定的面试技巧和熟悉最常见的面试题,一定会让我们如虎添翼。尤其是在当今的这个严峻形势下,大厂的面试竞争十分激烈,想要在这场战役中获得胜利,就必须在面试这个环节上下狠功夫,那么查漏补缺和务实理论就是我们的必经之道。


  • 短期准备——刷面试题;长期筹谋——巩固核心技能。

  • 面试题怎么刷?刷高频题、有深度的题、符合时效性的题。

  • 核心技能如何巩固?先深入理解原理,再系统应用到实践。


必不可少的 Java 核心技术知识——这份笔记覆盖 Java 核心技术,包括 Java 后端 80%的技术点这些学习笔记都是免费分享的,非常适合开发一到五年正在想换工作和进阶学习的朋友观看,有需要的朋友点赞后,点这里直达即可来免费领取的!



Java 高级架构面试复习笔记(分布式,高可用,高性能,微服务,架构设计)


![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B2HSLiFA-1618381444869)(https://upload-images.jianshu.io/upload_images/22570485-f0dea2


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


e3434abcde?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]](https://static001.geekbang.org/infoq/64/64d89b06e0b8417516910ae6dee5ab46.png)


框架源码学习笔记



mysql 高级知识笔记

评论

发布
暂无评论
疫情宅家4个月苦修,“不负年华“终斩阿里Java岗4面,分享下心路历程