前言
人人都想成为架构师,但往往只有10%的程序员能取得成功,想象很简单,但是坚持很难。
最后想给所有程序员一点建议:在日常工作中,万万不要仅局限于自己手头上的工作,因为自己负责的工作内容可能只是某系统上的“冰山一角”,这个系统是前辈们留下的财富,我们要学会怎么去利用它。这个时候,就需要我们站得高一些,看得远一点,去了解这个系统的整个经脉,揣测当初它设计的“Why?How?”,换做自己应该会怎么做,这样或许你将会离架构师更近一步。
下面来到正文,详细概述我的面经!
阿里一面 07.22 36min
-
算法题:合并两个有序数组
-
多线程中几个核心参数
-
new一个线程执行过程
-
拒绝策略和阻塞队列
-
HashMap的1.7和1.8
-
ConcurrentHashMap与hashtable和hashmap的区别
-
Collections.sort的实现原理
-
分布式锁和Java锁
-
红黑树的结构与特性
-
MySQL索引的结构与特性
-
主键索引和非主键索引,如何优化回表
-
Jmeter的使用流程
-
Linux常用命令如pwd和grep
-
Redis在项目中的使用
-
Redis集中数据结构
-
zset的实现原理
-
AOP的底层原理
-
Mybatis的用处
阿里二面 07.28 1h
-
AOP的使用场景
-
Redis的五种基本类型
-
跳表和压缩链表相关
-
锁机制的介绍
-
加锁流程
-
锁膨胀过程
-
lock和sync的区别
-
调用接口时线程池的使用过程
-
AQS和CAS原理
-
volatile用处和原子类用处
-
线程池如何实现,
-
线程池工作原理和主要参数
-
多线程顺序执行如何保证
-
数据库事务的隔离级别
-
平时遇到幻读的场景
-
消息队列的使用场景
-
如何保障消息不丢失
-
算法题:多线程循环打印奇偶数
阿里三面
-
自我介绍;
-
项目介绍;(问的比较深,包括权限校验、SQL优化、索引相关)
-
手写SQL:获取一个商铺最近一周每一天的销售总量。
-
如何判断是否命中索引?如何优化索引?
-
线程有哪些状态?阻塞状态又分为哪些,有什么区别?
-
手撕算法:NC90 包含min函数的栈
-
手撕算法:寻找二叉树每层结点的最大值
-
简述上述两个算法的思路和时间空间复杂度。
-
优化上述两个算法,要求分别在O(1)和O(N)时间复杂度内解决上述问题。
-
(反问)你还有什么想问的吗?
-
总结:问的都是比较实际场景的情况,基础八股文问的比较少。
-
进去基本都是要转Golang了,所以没问Java和Spring相关的知识
我的面试经验汇总
下面直接给大家上一个总的目录大纲,基础的东西就不进行过多的赘述,我们将会从面试必问的说起,基本上文档里面的内容都是打出面试必问的技术点和面试真题整理而成,大家拿到手后建议直接去把真题做一下,一边练手一边考证一下自己的技术水平,全部做完之后再去看面试题解析和技术点讲解,这样的学习效率是非常高的!然后有需要的朋友欢迎关注公众号:前程有光,自行下载就好
最后,我想说的是,无论你现在什么年龄,位于什么城市,拥有什么背景或学历,跟你比较的人永远都是你自己,所以明年的你看看与今年的你是否有差距,不想做咸鱼的人,只能用尽全力去跳跃。祝愿,明年的你会更好!