头条-后端
一面
1.介绍了一下做过的项目架构,和项目实现细节。面试官最近刚做了一个项目,跟我们做的项目一样,聊了比较久
2.看我之前是打acm的,说问道简单的算法题走个流程Orz。
题:一个先逆序再正序的数组,求最小值
5 4 3 2 1 2 3 返回 1
解法:二分
3.看我项目里有一个进程内缓存的项目,聊了一下,然后又问了concurrentmap和hashmap区别,concurrentmap的分段锁,最多支持多少个segment
二面
1.聊项目,聊了比较久
2.问了一到算法题,二叉树按中序遍历的方式转换为链表
解法:中序遍历,遍历的时候修改树节点的前后指针。需要用到一个辅助节点pre和一个节点记录链表头
三面
1.问了一个开放性题目,设计一个方案,根据用户地点返回附近的餐馆
按城市划分,将城市划分为网格,每个网格有不同的餐馆,先定位到用户在哪个网格,再获取周围网格中的餐馆
2.算法题:将一个字符串小数约分为分数,且分子分母约分过,需要考虑无限循环小数
1.15(3) 表示1.153333333333循环
解法:分三部分,整数部分,非循环的小数和循环的小数
非循环部分的小数变分数为x/10^n
循环部分小数变分数为y/10n(10m-1)
如上述例子中循环部分为 3/ 100*9
整数部分直接加上分数
约分使用欧几里得算分子分母最大公约数,再除一下即可
二叉搜索数第k大元素。
二叉树按层遍历。
堆排序。
topk。
两个set取交集
链表是否有环。如何找到入环节点
头条-后端
一面:
1.项目。
2.Reentranlock 与synchronized区别。 各自的底层实现
3.事务隔离级别。 innodb的默认隔离级别如何避免幻读?
-
mvcc。快照读 当前读。
-
jvm cms的步骤。 缺点。
-
有大量full gc如何排查?
-
堆 gc频次正常 时间正常。 出现内存泄漏是什么问题? 如何排查堆外内存? 你见过哪里用堆外内存?
-
netty eventloop 大概做什么? io事件 读写事件。任务事件
-
任务事件中 如何保障多线程情况下线程安全的进行上层的writeAndFlush? mpsc队列
4.实现一个 LRU ? get为o(1)复杂度
二面。
1项目中 难点。讲两个
-
如何实现一个可靠传输? 序列号。校验和 重传 ack 滑动窗口。拥塞控制。等
-
mysql架构。 sql经过解析器之后得到的解析树 如何转换成优化器的执行计划?如何选择?
-
b+tree结构?索引的页分裂?innodb做了哪些避免页分裂的努力?都是从节点中间记录分裂吗?
-
辅助索引 一个范围查询。 如果当前值不在索引中。如何查处符合条件的记录的?
-
innodb的特性? 自适应hash。聚簇索引。 insert buffer?
-
可靠传输一定需要建立连接吗?
-
双向链表消除相处重复的? 消除之后新链接在一起的仍相同继续删除。算法题 手写
-
数组中 指定元素值的最小下标。 如何最优?二分查找中继续二分查找 手写
-
红黑树特性?二叉搜索数第k大元素。 然后继续topk算法。 除了小跟堆之外。问还有别的呢? 基于快排思想的top k手写。
三面。
1.项目
2.kafka的传递保证
-
一次遍历打印出 二叉树的最大深度和最大宽度 (同层中节点个数最大值)
-
如何删除倒数第k节点
-
聊以后发展
头条-后端
一面:
-
项目介绍 20分钟
-
mysql索引 优缺点 底层实现原理
-
mysql的优化。 不限于sql优化
-
mysql join原理
-
tcp协议 如何保障可靠传输
-
MTU是什么? MSL呢
-
redis zset实现原理
-
rdb 和 aof区别
-
redis的主从同步原理
-
二叉树的后序遍历
-
二叉树按层打印
-
括号的有效组合
二面
-
项目介绍
-
tcp udp区别。头部字节有哪些。多少字节
-
通过域名是如何从外网请求到你公司内网服务器的? 详细讲解一下
-
路由算法
-
当前路由到某一个节点,如何查找选择的下一个节点?
-
ip 分几类? 如何划分的?
-
tcptrace 请求一个目标ip。会把路由的所有节点ip打印出。是如何做到的?
-
最长回文子字符串
-
反转链表 递归。非递归
猿辅导-Java
1、线程池参数中队列种类
2、Redis架构类型,单点、分布式特点和理解
你的职责
系统的业务指标都有哪些
mafka如何做消息不丢失和不重复消费
系统如何保证的可用性
系统的一些细节,引申发问
本季度你们的kpi是啥
系统设计有什么体会
1.项目,讲了挺多。
2.java nio,netty 中server端为什么需要两个group
3.红黑树,put方法
4.dubbo中负载均衡实现方式,你自己实现rpc框架需要注意哪些方面。
5.kafka发送端的bufferpool,consumer端的rebalance流程
6.jvm调优经验,垃圾回收算法。
6.算法:前序遍历,中序遍历构造二叉树;查找树中的第k个节点。
二面面试题:
写了一个题,实现一个循环链表,实现put和take两个接口,如果队列满就扩容一个节点,只考虑扩容,不考虑缩容;
还有就是事务隔离级别,jvm内存结构;
还有线程池的实现
交叉面试题如下:
分库分表后如何分页查询?
了解levelDB吗?
redis源码看过吗?
kafka 的 offset 保存在那里?
什么情况下会发生 rebalance ?
kafka 如何知道一个消费者下线了?
系统设计
公司有个公用的支付账户,员工购买东西都从这个支付账户扣款,现在有个抢购活动,商品个数无限,但公用账户上额度有限,问如何设计支付系统,让抢购活动期间员工也有比较好的用户体验。
三面面试题:
你的职责
系统的业务指标都有哪些
mafka如何做消息不丢失和不重复消费
系统如何保证的可用性
系统的一些细节,引申发问
本季度你们的kpi是啥
系统设计有什么体会
一、二面
设计模式原则,medium难度偏下,算法:1 判断平衡搜索树 2 链表末尾加个位数,技术: es mysql事务隔离级别 线程池
阿里-阿里妈妈-Java
1、mysql中myism和innodb的区别
2、聚簇索引和非聚簇索引区别
3、jvm内存模型以及程序运行时,它们是怎么一个过程
4、jvm跨代引用是如何处理的
5、双亲委派机制的优点
6、消息中间件里的消息重复、乱序、丢失,请从生产者和消费者的角度去谈一谈
7、k8s的设计理念,源码是否看过,谈一谈这样架构的好处
8、程序计数器是如何工作的
9、volatile是干啥的?其中线程里的私有内存是放在哪儿的,主存是在哪儿?
10、结合类加载和jvm内存模型说一下整个过程
11、了解那些数据库的索引数据结构?分别说说有什么好处?
12、微服务拆分的原则?优缺点?
13、启动三个线程实现顺序打印abc
14、动态代理的原理
15、容器了解多少?为什么k8s的设计里有pod,而不是直接用容器?
16、高并发场景下,有10台机器正在工作,其中有一台机器重启之后cpu load特别大,请从各个角度分析一下该现象出现的原因
17、如何用AQS实现一个锁
阿里-新零售-Java
阿里巴巴一面(55分钟)
先介绍一下自己吧
说一下自己的优缺点
具体讲一下之前做过的项目
你觉得项目里给里最大的挑战是什么?
Hashmap为什么不用平衡树?
AQS知道吗?知道哪一些呢?讲一讲。
CLH同步队列是怎么实现非公平和公平的?
ReetrantLock和synchronized的区别
讲一下JVM的内存结构
JVM 里 new 对象时,堆会发生抢占吗?你是怎么去设计JVM的堆的线程安全的?
讲一下redis的数据结构
redis缓存同步问题
讲一讲MySQL的索引结构
你有什么问题要问我吗?
阿里巴巴二面(45分钟)
根据项目问了一些细节问题
说一下HashMap的数据结构
红黑树和AVL树有什么区别?
如何才能得到一个线程安全的HashMap?
讲一下JVM常用垃圾回收期
redis分布式锁
再描述一下你之前的项目吧
你觉得这个项目的亮点在哪里呢?
你设计的数据库遵循的范式?
你有没有问题?
阿里巴巴三面(50分钟)
又聊项目
在项目中,并发量大的情况下,如何才能够保证数据的一致性?
elasticsearch为什么检索快,它的底层数据结构是怎么样的?
JVM内存模型
netty应用在哪些中间件和框架中呢?
线程池的参数
讲一下B树和B+树的区别
为什么要用redis做缓存?
了解Springboot吗?那讲一下Springboot的启动流程吧
如何解决bean的循环依赖问题?
Java有哪些队列?
讲一讲Spring和Springboot的区别
最近看了什么书?为什么?
你平时是怎么学习Java的呢?
阿里-阿里口碑-Java
阿里巴巴一面(38分钟)- 自我介绍
介绍项目, 具体一点
讲一下Redis分布式锁的实现
HashMap了解么吗?说一下put方法过程
HashMap是不是线程安全?
ConcurrentHashMap如何保证线程安全?
数据库索引了解吗?讲一下
常见排序算法
TCP三次握手,四次挥手。
深入问了乐观锁,悲观锁及其实现。
阿里巴巴二面(45分钟)
自我介绍+项目介绍
你在项目中担任什么样的角色?
那你觉得你比别人的优势在哪里?你用了哪些别人没有的东西吗?
Java怎么加载类?
linux常用命令有哪些?
Spring的IOC, AOP。
讲一下ORM框架Hibernate
设计模式了解吗?讲一下
自己实现一个二阶段提交,如何设计?
你还有什么想问的?
阿里巴巴三面(30分钟)
说一下自己做的项目
问了一些项目相关的问题
wait()和sleep()的区别
原子变量的实现原理
CAS的问题,讲一下解决方案。
有没有更好的计数器解决策略
讲一讲NIO和BIO的区别
Nginx负载均衡时是如何判断某个节点挂掉了?
讲一下redis的数据类型和使用场景
k8s的储存方式是怎样的?
Spring AOP原理是什么?怎么使用?什么是切点,什么是切面?最好是举个例子
算法题:给一堆硬币的array,返回所有的组合
阿里巴巴总监面(34分钟)
算法:给一个set打印出所有子集;多线程从多个文件中读入数据,写到同一个文件中;判断ip是否在给定范围内;打乱一副扑克牌,不能用额外空间,证明为什么是随机的。
Tcp和udp区别
线程池的原理以及各种线程池的应用场景
线程池中使用有限的阻塞队列和无限的阻塞队列的区别
如果你发现你的sql语句始终走另一个索引,但是你希望它走你想要的索引,怎么办?
mysql执行计划
数据库索引为什么用b+树?
你在做sql优化主要从哪几个方面做,用到哪些方法工具?
有没有想问的?
阿里巴巴HR面(23分钟)
自我介绍
平时怎么学习的?
有什么兴趣爱好吗?
怎么看待996?
怎么平衡工作和学习?
有没有什么想问的
阿里-阿里云-Java
一面:
项目介绍
字符串全排列
线程安全
设计题:设计一个微博系统,给了一个比较大的用户量
阿里-钉钉-Java
钉钉-Java-应用线的一轮电话面试题
1.项目经验
2.spring boot和spring的区别?
3.spring是如何识别一个类的?如何解决循环引用?
4.jvm内存模型有什么?
5.jvm gc算法有哪些?
6.mysql事务级别?
阿里-钉钉-Java
1.自我介绍
2.离职原因
3.算法题 乱序数组找第k大的元素
4.可重入锁
5.tomcat内部启动两个java项目 内存隔离设计
6.讲下项目 做了哪些优化。
7.提问
阿里-钉钉-Java
1、锁升级
2、索引有大小于号、order by 能否使用
3、分布式锁的使用
4、讲讲分布式事务,方案,实现,理解
5、springboot 启动流程
算法题:
实现一个controller,包含get、add两个方法,用于记录请求add方法的次数(流量统计)。需要支持高并发(面试官说使用 ThreadLocal 是加分项,但是需要额外处理一个问题,但是没说什么问题)
阿里-蚂蚁-Java
面试 时间 50min
1.项目介绍
- 倒排索引原理
3.索引优缺点
4.什么情况下不能使用索引?
- 如何优化sql? 从索引、 覆盖索引、 limit
6.为什么 尽量不要用select *?
7.乐观锁 、悲观锁 区别
- mysql的乐观锁 、悲观锁 、 next-key锁原理、 如何解决幻读? 有哪些锁? 意向、x锁、s锁
9.java的 乐观锁 cas ,
-
cas原理 、 vlotaile原理? cpu层面、 缓存一致性原理?总线锁、缓存锁 JMM模型? 内存屏障? storestore 屏障、storeload屏障
-
sychronized reentranlock 实现悲观锁 、 sychronized原理 ? 锁升级:偏向所-轻量级所-重量级锁
-
reentranlock 中 AQS同步器原理? clh队列? tryAcquire的过程?
13.gc 算法 、优缺点
-
cms 的缺点? 回收步骤?
-
如何进行jvm优化? 有几种 gc fail? 哪些参数调优、? 如何排查gc问题?
Jvm内存结构
Jvm调优
多线程,几种方式
线程池
垃圾回收
问项目,细节问题,
项目中遇到什么问题怎么解决
设计模式,策略模式 ,工厂模式,在项目中运用
Jvm回收算法
项目分库分表
数组归并排序
图论的算法要了解
阿里-蚂蚁-Java
笔试 30分钟
-
数组实现的栈。pop时候没有销毁,有内存泄漏问题!
-
linux的 awk sort sed用法
-
加权轮询 算法 实现
-
实现一个签到领奖励的算法,描述一下尽可能优化的数据结构 .规则是 用户一天签到一次,连续签到奖励越多,一旦不连续从头开始计算,连续八天后也从头开始计算!
-
如何实现http压测?如何控制并发数?能想几种办法?
一面:
-
项目介绍
-
rpc框架原理
-
zk原理。zab协议
-
线程池的参数
-
如何实现一个阻塞的队列?
-
nio bio区别?select epoll区别?
-
epoll底层数据结构。红黑树 链表 回调机制
-
netty特性。 动态buffer。nio模型 使用注意: 定时任务 普通任务。不要作耗时操作。影响同一个eventloop上其他channel读写等等
二面:
-
项目介绍
-
redis分布式锁原理。为什么要加超时时间?key 如何设置?会不会出现误删锁情况
-
kafka原理。存储模型 io模型 网络模型
-
如何保证同一个订单号的消息全部有序? 如果消息量大,多个partition如何保障?consumer和provider需要如何才可以保证顺序?
-
如何管理kafka logsegment的?跳表
-
二叉树镜像
-
copyonwrite技术应用。juc中copyonwritelist。 linux的fork 写时复制
-
concurrenthashmap 原理。讲一下put过程 1.7与1.8区别
-
红黑树的插入 查找复杂度
-
红黑树特性
-
简单写一下红黑树put 左旋 右旋。变色
三面:
-
有序有重复数组中 找目标数的最大下标
-
堆排序实现。复杂度
-
thread中止 有多少个办法
-
sleep wait 区别。 会抛中断异常嘛?
-
locksupport的park 中默默返回。需要捕捉中断
-
AQS 原理。
-
最长递增子序列
-
有什么想问我的
阿里-蚂蚁-Java
电话面
-
聊业务
-
java基础:mysql事务(可重复读),java锁机制,ReentrantLock和ReentrantReadWriteLock(底层aqs),concurrenthashmap,redis数据类型和过期策略
-
设计题:怎么对接口做限流
阿里-高德-Java
AOS java面试题
1、业务相关问题
2、JUC下面的包挑熟悉的一两个详细描述下
3、https相关
4、volatile
5、零拷贝原理
6、NIO
7、分布式锁实现
阿里-高德-Java
二面:
redis 哨兵模式
hbase 原理
mysql分表的事务
LinkedBlockingQueue和ArrayBlockingQueue的异同
a b c 线程 如何保证顺序执行
threadlocal 两个不嵌套的线程如何互相获取数据