【成功上岸】上岸了,工作2年的我在这个秋招成功拿到阿里的offer,特来奉上自己的面试经验还愿!

前言

在这里不得不说的是在网上许愿offer许愿真的很灵,希望大家在双节前都收到自己想要的offer,欢乐度双节。秋招总共面了阿里的三个部门,总共面了11次。最后流程选择了健康,有幸收到了健康的意向书。其中阿里健康面了七次,主要是前面没有进流程面了两次,进流程过后面了五次(4+1)。不过总的来说能进阿里已经很不错了,毕竟现在自己也就毕业两年!希望进去后能有愉快的的工作环境,下面说一下自己的面神经过的,可能记得不是很清楚了,但是重点都会写在下面!我还会把自己技术笔记和源码笔记放在下面,希望这段经历会对你们有帮助!

另外我这里为大家准备了一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为大家精心准备的多套大厂面试题(不断更新中),有需要的朋友点击这里备注csdn,自行下载即可!希望大家都能找到心仪的工作!

阿里一面

  • 做过的印象最深的项目?(聊项目)
  • MySQL 的 log 有哪些?分别是用来做什么的?(undo log,redo log,binlog)
    数据库分表分库?(没实践过,扯了点水平分表和垂直分表的理论)分库分表的全局唯一 ID怎么实现?
  • 数据库 ACID?
  • 数据库事务的隔离级别?
  • 慢查询的优化思路?
  • 你做过那个项目之后,在数据库这块有怎样的提升?(扯了点外键约束相关)
  • Java HashMap 的 put 操作底层是怎么实现的?
  • 线程池的构造器的参数介绍一下?
  • Lock 和 synchronized 的区别?
  • AtomicLong 类的底层实现原理
  • 线程的状态
  • 实际使用过多线程吗?(没有……)
  • 什么情况下会发生死锁?
  • JVM 内存的划分?
  • Java 堆的划分?
  • 为什么要分代?
  • 垃圾收集器了解哪些?
  • 哪些对象会被 JVM 垃圾回收?
  • GC ROOTS 包括哪些?
  • OOM 排查?(不知道……)
  • Java 怎么利用反射获取一个类的字段?
  • 常见的类加载器?
  • 看过哪些框架的源码?
  • Spring @Autowired / @Resource 的区别?
  • Spring 依赖注入的原理
  • Spring bean 的作用域有哪些
  • session 和 cookie 的区别
  • 如何识别 session(存在 cookie 里面的 session id)
  • HTTP 报文结构
  • HTTP 状态码
  • Java IO 模型有哪几种?
  • 同步 / 异步,阻塞 / 非阻塞的区别?
  • Netty 了解吗?(不了解……)
  • 说几个设计模式?Spring 里面使用到了哪些设计模式?
  • Java 如何实现单例?
  • CAP 理论?
  • 分布式事务有哪些实现方式?(不知道……)
  • 微服务的架构设计是怎样的?
  • 网络安全?(随便扯了点被动攻击、主动攻击之类的,这方面懂得不多)
  • Redis 数据类型有哪些?
  • 未来的发展方向是怎么考虑的?
  • 平时会写文章 / 博客吗?
  • 有做过其他项目吗?

二面

  • 讲一下你自己觉得最难的项目吧。难点在哪儿?
    答:一个微服务化的,支持编译运行和堆栈可视化的作业编程平台。

  • 讲一下你负责的模块。
    答:负责编译模块的封装和微服务化。

  • 讲一下怎么封装的吧。
    答:支持c语言,所以封装了g++和gdb。

  • 讲一下gdb常用命令(一面的时候顺便问了这个,这里补充一下)
    答:gdb -o ,gdb -r,gdb -n ,gdb -s

  • gdb中哪个命令是跳出的? (一面的时候顺便问了这个,这里补充一下)

  • c语言的编译过程可以说一下吗?编译和装载等流程 (一面的时候顺便问了这个,这里补充一下)
    答: C源程序头文件 --> 预编译处理(cpp) --> 编译程序本身 --> 优化程序 --> 汇编程序 --> 链接程序 -–> 可执行文件。预处理用于将所有的#include头文件以及宏定义替换成其真正的内容,预处理之后得到的仍然是文本文件,但文件体积会大很多。而后的是编译整个c文件,这一步是生成了对应的.s文件,此时都是一些汇编代码,mov A B,之类的。这之后会有优化过程,进行一定的重排列之类的,优化。然后再是真正的汇编为机器码。而后生成的机器码可能要引用很多的外部文件,所以要使用链接,来将外部文件链接过来。这里讲了一下记忆比较深刻的动态链接和静态链接的区别。

  • 动态链接和静态链接分别在什么情况下使用?
    答:静态运行快,但是编译慢,而且占用内存,并且库函数更新要重新编译才可以使用。而动态编译的运行慢,但是编译出来的程序占用内存小。库函数的更新可以不用重写编译程序,在需要使用的时候才回去链接需要的文件。

  • 项目有没有参考开源项目?
    答:有,参考了eclipse che

  • 项目的优化点是什么?
    答:对原有的开源项目进行了符合我们项目组实际情况的改变。

  • 微服务的理解,springcloud和dubbo讲一下
    答:讲了一下http调用方式是两者的主要区别。其他的,诸如注册中心,或者链路跟踪,网关都类似的设计。再对比了一下同样是微服务框架的Tars,说了一下自己的理解。

  • rpc框架怎么实现讲一下
    答:调用者通过代理模式,封装各种类。代理类进行远端调用,主要进行序列化。远端进行反序列化,获得数据,并且通过反射找到调用类,进行方法执行。再返回对于的结果。于是,调用方就像使用本地类一样使用远端的服务了。(要求是类的结构,在调用方和非调用方都有)

  • 大学有什么自豪的事情?
    答:多线程能力,班长,部长,辅导员助理,开发上线项目,发SCI论文,兼职。多个任务一起担任,并且均保持优秀,绩点良好,获得保研资格。

  • 说一下自己的缺点?
    答:给自己的时间太少,都在锻炼自己,没有时间给自己深度思考人生

  • 讲到多线程,你会怎么学习多线程?
    答:博客,慕课网,知乎,网友推荐书籍系统学习。自己博客月访问量稳定破w。

  • 论文讲一下原理。
    答:重识别的论文,讲了一下怎么实现,创新点在哪。

  • 讲一下数据库引擎
    答:b+树,优点是叶子节点才有数据,非叶子节点只记录key值,方便一次性io读取很多的key,使得一棵非叶子节点有很多儿子(一个key指向一个儿子),树变得矮平,那么io次数会更少。详细说了一下一次io默认是16k,一个key如果是2byte,那么可以读取有8k的儿子的节点,几十万的数据只要3次io就可以找到。并且说了扫描的时候可以向右侧进行范围查询。也讲了一下聚簇的key索引和非聚簇辅助索引。回表现象和索引覆盖。

  • 讲一下如何找出一个线程进入了死循环?
    答:dump导出堆栈信息,查看thread的状态,有没有一直处于running状态,而且处于很久的。有的话定位该线程内部执行的方法。然后被问还有其他方案吗?回答debug直接找。

三面

  • 自我介绍

  • 深挖项目,其中有一部分是线程问题分析排查,问线程堆栈怎么看,看哪些内容?、

  • 如何辨别出有问题的线程?

  • 如果有一个项目线程数量一直在缓慢增加可能是哪些原因导致的,怎么解决?

  • 实验室项目做什么的(因为实验室项目是工程实现类的国重项目所以问的比较多)?

  • 你在实验室这个项目中负责的是什么?相应算法怎么设计的?

  • Synchronized的底层实现,从偏向锁到重量锁的升级过程中各阶段的头部是怎么变化的?什么时候会触发各阶段的锁升级?

  • 讲解一下AQS的原理

  • g1和cms分别适用于哪些场合?g1有哪些改进?

  • 垃圾标记算法中的计数法有什么问题

  • tcp连接过程中syn_sent连接数过多会是什么原因造成的?

  • 事务的传播机制有哪些,分别应用于什么场景?

  • 一个单增数组,将前面一部分挪到末尾,怎么找到最大的那个

  • 之前参加过什么竞赛吗?

  • 笔试成绩不错,平时怎么学算法的

  • 两个绳子,每根绳子烧完1小时,绳子长度和燃烧时间没有任何关系,如何衡量出15分钟

  • 有100块石头,A和B交替拿,每人一次拿1-5块,如果A先拿,第一次拿几块才能保证最后自己一定能赢

  • 求最大子串数字之和

  • 对一个大文件的数据进行排序,内存肯定放不下,怎么办?(答外排,分治+归并/败者树)

  • 堆排的排序思路和过程

  • concurrentHashMap的结构,是怎么实现线程安全?get方法要不要加锁,为什么?

  • voliate的作用和实现原理,内存屏障有哪些,举例说明有什么用?

  • CAS的缺点是什么,怎么解决ABA问题?

  • 为什么只读场景下Myisam比innoDB快?

  • 深挖实习项目,有没有考虑过自动化实现相应功能,有没有考虑优化方案,怎么改进?

  • HashMap为什么不是线程安全的,举个例子说明他怎样线程不安全了?

  • redis平时你用来做什么?

  • 反问环节

总结

最后我为大家准备了Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。有需要的朋友点击这里备注csdn,自行下载即可!作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的,在我看来,自己付出多少,回报就有多少。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书一起免费分享给大家!

猜你喜欢

转载自blog.csdn.net/jiagouwgm/article/details/111565006
今日推荐