本科双非的春招之路:历经阿里4面终于拿到offer上岸,分享我的经验希望帮助到大家

前言

本人菜鸡,笔试0ac,以为要和阿里说再见了。
结果这周周一突然收到阿里的电话,让我补笔试,约了周二上午补笔试。
补笔试:用的伯乐系统,无法调试直接写。笔试比较简单,第一题两个有序链表合并,第二题多线程编程,实际应用题,没写过多线程,这大概写了下思路。
前几天天下午收到阿里电话,说约个电话面试,就约了晚上面试。
昨天下午收到了入职oc!

另外我这里为大家准备了一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为大家精心准备的多套大厂面试题(不断更新中),有需要的朋友移步文末下载就好了

阿里一面

  • Object类中的方法。

  • 接口和抽象类的区别,注意JDK8的接口可以有实现。

  • 动态代理的两种方式,以及区别。

  • Java序列化的方式。

  • 传值和传引用的区别,Java是怎么样的,有没有传值引用。

  • 一个ArrayList在循环过程中删除,会不会出问题,为什么。

  • @transactional注解在什么情况下会失效,为什么。

  • 一致性Hash算法,一致性Hash算法的应用

  • JVM如何判断一个对象是否该被GC,可以视为root的都有哪几种类型。

  • 强软弱虚引用的区别以及GC对他们执行怎样的操作。

  • Java是否可以GC直接内存。

  • Java类加载的过程。

  • 双亲委派模型的过程以及优势。

  • 常用的JVM调优参数。

  • dump文件的分析。

  • Java有没有主动触发GC的方式(没有)。

  • 可重入锁的用处及实现原理,写时复制的过程,读写锁,分段锁(ConcurrentHashMap中的segment)。

  • 悲观锁,乐观锁,优缺点,CAS有什么缺陷,该如何解决。

  • ABC三个线程如何保证顺序执行。

  • 线程的状态都有哪些。

  • sleep和wait的区别。

  • notify和notifyall的区别。

  • ThreadLocal的了解,实现原理。

  • 数据库连接池。

  • durid的常用配置。

  • 长连接和短连接。

  • 连接池适合长连接还是短连接。

  • Spring中使用了哪些设计模式

  • 单例模式的五种实现方式

  • dubbo的组件有哪些,各有什么作用。

  • zookeeper的负载均衡算法有哪些。

  • dubbo是如何利用接口就可以通信的。

  • redis的部署方式,主从,集群。

  • redis的哨兵模式,一个key值如何在redis集群中找到存储在哪里。

  • redis持久化策略。

  • 自定义注解的实现。

  • Spring使用了哪些设计模式。

  • Spring的IOC有什么优势。

  • Spring如何维护它拥有的bean。

  • JDK8的新特性,流的概念及优势,为什么有这种优势。

  • 对区块链的了解

  • 如何设计双11交易总额面板,要做到高并发高可用?.

阿里二面

  • 自我介绍
  • 介绍一个自己比较熟悉的项目,询问项目中的细节,一些具体实现。
  • 针对项目,问高并发的情况下,kafka消费到第一条记录,在下沉服务处理好,但由于网络抖动没有正确返回给上层,上层服务再次调用服务,怎么样保证只处理一次请求?答分布式锁,介绍实现,具体不表。有自己用redis实现过吗?没有。
  • 介绍一下redis的zset实现。
    答根据skiplist+hashtable和多级索引的方式实现。
  • 介绍一下B树。
    我自己拓展说了和B+树的区别,聚簇索引和非聚簇索引,为什么B+树更矮胖,如何确定B树的阶等。过。
  • 如果是普通索引如何查找到对应的数据?
  • hashmap的如何扩容的?讲transfer方法和resize方法。为什么容量是2的指数幂次?自己扩展讲了下,过。
  • 介绍一下悲观锁和乐观锁。
    我问介绍Java原生的悲观锁乐观锁还是mysql中的悲观锁乐观锁?拓展开来讲java说synchronized reentrantLock cas mysql讲共享锁排他锁,当前读,快照读,mvcc,如何实现对应的隔离级别。
  • 当synchronized对指定的方法上锁,一条线程获取锁执行任务时,另一条线程来获取这个方法对应实例的锁时获取失败,会被阻塞。那么当前一条线程执行完任务以后,怎么通知被阻塞的线程可以获得被释放的锁继续执行任务?
    我的回答自我感觉不是很好,建议从对象头中存储的偏向线程ID、线程持有的锁、锁状态标志以及monitor锁计数器结合回答。
  • 介绍一下线程池
    介绍几个参数。以及几种常见的线程池,各自的阻塞队列。
  • 几个参数之间的关系?大致说了一下,打断问,如果最大线程数大于核心线程数,且阻塞队列中任务已满,核心线程数创建达到设置的最大值,提交任务的线程被阻塞挂起,请问此时线程池开始创建额外的线程来执行任务,是哪个任务先被执行?队列头的还是队列尾的?
  • 介绍一下jvm内存分区和垃圾回收机制?不具体说,过。
  • 如何确定eden区的对象何时进入老年代?当线上监控中心的新生代和老年代哪个区域发生垃圾回收,表示此时比较危险?
  • spring的两大特性?springboot如何实现自动装配的?aop在项目中用过吗?怎么用的?底层如何实现的?介绍一下动态代理。jdk原生的动态代理和cglib的动态代理有什么区别?
  • spark和flink的区别?(简历没写flink,但之前有spark任务,就勉强回答了一下)。比较了解spark?答:不算很了解,一般了解,之前使用spark做的任务偏简单。
  • 有没有发生数据倾斜的情况?如何解决的?怎么观察spark任务的执行情况?
  • 有了解过apollo吗?没了解过,只知道能做配置中心。过
  • 了解CAP原则吗,介绍一下?
  • 离职后在看什么呢?答:在研究dubbo和mysql,看了看底层实现。(其他不敢乱说,确实相对了解才敢讲)。
  • 上家公司有研发部门有哪些组?每个组的工作内容是什么?每个组大约多少人?你在哪个组?
  • 面试官:我没有什么要问的了,你有什么要问我的吗?

阿里三面

  • 自我介绍

  • 看过哪些源码

  • java的io库的类结构图所用到的设计模式如何体现

  • 画出自己设计过的设计模式如何体现,画出结构图,并进行讲解。

  • 画出自己做的架构的项目架构图 如何扩展等

  • 数据库设计中主键id设计的原则

  • jvm内存调优用过哪些工具,jstate做什么用的?如何dump出当前线程状态?

  • 并发框架是否有了解

  • classloader的双亲代理机制

  • 应用服务器的jvm调优实际经验,如何做的,在哪里用到的

  • 在哪里获取最新资讯,逛什么论坛。最新的Swift语言有什么看法

  • 设计原则与设计模式对应

  • servlet/filter作用原理配置

  • ibatis in操作 以及一个属性的作用

  • spring aop 用了什么设计原则,自动注入配置是做什么用的

  • jboss的类加载器

  • session共享机制

阿里四面

  • 做过最成功的一件事情是什么?

  • 最大的争执是什么?

  • 为什么想要离职去阿里

总结

本文就先写到这里,面试中常问的一些题目我都有整理的,有需要完整PDF文档的可以添加下面卡片回复 【101】 即可获取。

你可能感兴趣的:(程序人生,程序员,面试经验,数据结构,散列表,哈希算法,开发语言,java)