一面
# 2024-04-28 蚂蚁一面
- 简单做个自我介绍
- 讲一下wecrush项目大概是做什么的,包括盈利模式是什么样的,微服务是怎么拆分的
- 地理信息怎么计算,如何确保准确性(提到了单元测试)
- 怎么确保单元测试能写好
- 问seecooker和lars是什么,学校作业还是?(一个是大作业,另一个是比赛项目)
- 让讲讲seecooker是干什么的(感觉这个面试官很关注产品的具体业务)
- 讲讲怎么实现的菜谱推荐
- 讲讲点赞业务怎么实现?怎么解决并发问题和一致性缓存问题?我说可以加个消息队列进行失败重传,他问消息队列挂了怎么办……
- 项目是怎么管理的(git)
- git常用命令
- 问Java,问final关键字(答的有问题)
- 指令重排,怎么解决(volatile),volatile的原理
- 讲讲spring的核心思想,什么是ioc,没有ioc是啥样的
- 讲讲mysql事务隔离级别(他们是真喜欢问这个问题)
- 关系型数据库三个范式
- 问常见排序算法,快速排序怎么实现
- 问怎么找图里两个节点的最短路径(知道用dijkstra但不会呃呃)
- 问微博热点事件,服务器宕机的原因?怎么解决
- 分布式事务,完全不了解
- 设计一个抢红包系统,怎么保障
- 问平时怎么自主学习,对新技术有关注吗
- 反问环节,问对自己的评价,面试官说,首先肯定我的交流能力和表达能力,思维反应很快,能够快速get到问题关键点,沟通成本很低,以及觉得我很自信,但结构化表达能力有些欠缺,感觉像是想到哪里讲哪里(确实,需要改进),最后感觉基本功还是可以的,但还需要继续深入了解更多底层的东西
# 2024-04-25 蚂蚁一面
- 可以讲一下JVM做了哪些事情,如何进行的GC?
- 还知道其他的垃圾回收算法吗?
- 关于JVM,你知道有哪几种实现呢?
- Java有一个特性是多态,在Java语言中多态是通过什么机制实现的?
- Java是怎么知道你是调用的哪个子类的重写方法的?ps:估计面试官是搞C++的,Java是单继承哪有这个问题
- 你项目中的微服务是什么关系呢?
- 服务的调用关系是什么样子的呢?
- 单体服务和微服务比较各有什么优劣势呢?
- 那别的微服务之间通信是用什么方式的?
- rpc通信和http通信对比有什么优劣势?
- 对docker有了解是么?
- docker和虚拟机Linux和JVM的差异?
- 项目相关
- 实习相关
# 2024-04-13 蚂蚁一面
- 自我介绍,现有技术栈和未来的计划
- 你对Java的了解有多少
- 对Java虚拟机是否了解,虚拟机模型、栈、对象管理
- 堆是如何管理对象的
- 分代GC中分了哪些代,OOM溢出可能是什么原因
- 不同代GC回收的策略,逃逸的过程
- 标记复制和标记整理的区别
- 在新生代中用标记清除的方式会有什么问题
- 讲讲你在实习中做的报警平台项目
- 报警的意义,你做的工作
- 项目是单机处理的还是有集群,多少台实例
- 是否有遇到分布式的场景
- 分布式事务一般是怎么实现(2PC、3PC)
- 2PC的准备阶段是否需要锁定资源
- 3PC能避免死锁吗
- 对TCC这种分布式事务的模式有了解吗
- 锁在操作系统中的语义
- 多线程情况下为什么会有线程安全的问题
- 每次都从主存读共享变量,还有没有线程安全问题
- 如何理解内存可见性和原子性
- 什么是线程饥饿?读锁和写锁在非公平机制下,会不会出现线程饥饿
- MySQL的索引是什么数据结构实现的?为什么
- 聚簇索引和非聚簇索引的区别
- 用非聚簇索引,实现频繁翻页,会有什么问题
- 最左匹配的原则,为什么
- 搜索中的倒排索引结构?如何排序?如何算得分
- 对TF-IDF模型有没有了解
- 如何计算term和doc之间的匹配度
# 2024-04-09 蚂蚁电话面面面经
- Redis的优缺点
- Redis的数据类型、List的常用命令
- memCache了解过没
- 消息队列的可靠性、幂等性如何实现
- 高并发场景下的幂等性如何保证
- Redis cluster了解过没? 说一下哨兵机制。
- 说一下乐观锁与悲观锁、数据库如何实现的
- 场景题:用户后台 写配置信息 读多写少。
- 数据读多写少的情况下如何设计存储结构?数据库 + 分布式缓存。
- 如何快速地保持缓存数据库的数据一致性?
- 先写数据库后删缓存时 删缓存失败了应该给用户返回成功还是失败?
- 如果返回失败可能会产生那些问题?
- 返回成功如何保证数据一致性?
- 热点Key如何处理?
# 2024-04-01 蚂蚁一面
- 自我介绍
- 你的项目上线了吗(回答:无),那么我们来看技术点吧
- 类反射 为变量开辟空间的方法
- 索引 B+树, 对某个列创建索引时是需要重新开辟一个B+树创建吗(不明白他的意思,胡扯一通)
- redis 的持久化策略
- 消息队列的消息可靠性原理 RabbitMQ的选型
- spring springMVC SpringBoot之间的关系 大概感觉没什么好问的吧,又转回项目尝试史里淘金
- 编辑距离算法 余弦相似度算法
- NLP自然语言处理 词向量
- 你对大语言模型怎么看(我说有一些了解 ,但是我更熟悉图像处理,他说那我们来讲讲图像处理吧,)
- 图像处理方案
- 全连接 卷积和池化 以及卷积为什么能抽象出图像特征
- 你平时用什么语言训练模型,用什么框架
- 学校有没有给你们新开什么有关AI的课,你们哪些课与AI有关
- 为什么要来搞java
- 反问 我问他什么时候能出结果 他说一周内 最快两三天
# 2024-4-1 平台技术事业群智能引擎技术
- k8s有哪些常见组件,各个组件的作用
- listwatch机制
- 如何监控pod健康状态
- 如何创建线程池
- 线程池工作原理
- 如何设置核心线程数、最大线程数
- 线程间通信方式
- wait/notify和Condition间的区别
- 介绍下知道的设计模式
- 模板方法模式使用场景
- volatile
- 可见性和指令重排序底层实现
- 线程有哪些状态
- 为什么要关注线程状态
- 为什么要关注JVM相关问题
- MySQL最左匹配原则
- explain的作用,有哪些字段
- MySQL如何解决幻读
# 2024-03-26 蚂蚁电话面
- 自我介绍
- 自己介绍一个项目,然后根据项目问了些问题,一些优化怎么做
- 自己介绍redis相关(属鼠从单线程、I/O多路复用讲到各种数据结构和底层实现,再讲到集群),听到这就又问了如果自己实现集群会怎么做
- 简单java相关八股(抽象类,抽象类和接口区别,线程安全的集合,多线程安全性如何保证)
- 什么适合入职,能工作多久
- 反问
# 2024-03-26 蚂蚁一面
- Java的聊天室是怎么做的?工厂模式分成几种类型?
- 用编译原理实现加减乘除
- 看过spring的书吗,讲讲内容
- linux分成哪些流
- 加减幂怎么实现
- 看过哪些源码,怎么实现的
- 多核cpu 改了一个cpu的内容,其他cpu怎么发现
- websocket怎么实现的
- 操作系统位数和cpu位数的关系
- 北向接口和南向接口 哪个存储缓存
- 操作系统底层原理
- 操作系统什么场景使用多线程,怎么设置
- beanfactory怎么做的,看过源码吗
- threadlocal源码
- future除了接受异步任务结果,还能干嘛
- fork join区别
- concurrentHashMap源码
- String源码怎么设计的,与操作系统相关联的设计
- 基于socket设计了哪些系统?怎么实现的
- 除了java还会哪些语言吗?
# 2024/3/19 蚂蚁一面
项目相关:
- 项目拷打以及场景问题解决
- 联合索引加一个字段有什么负面影响 回答了实践测试发现了查询效率的提升,但是是会对增删维护的负担增加,并且会占用更多磁盘空间。
- 项目里使用了redis,使用的时候有什么注意事项 这里结合项目来答的,提到了在使用时更新大量缓存阻塞主线程执行的情况,项目使用了管道解决。 一般可以结合内存管理(淘汰)、持久化、高可用来说
- 什么量级的场景适合使用时序数据库 回答 因为没有具体使用过,但是有了解一般在监控运维、工业生产、IoT这样的场景使用
- 实时数据库的数据采集以及维度指标(roleKey)命名规则的设计要点 唯一性、有效期。不了解
- 如何判断程序有没有内存泄漏 内存监控工具 JVisualVM、Profile内存分析
- 如何定位哪个位置的内存泄露 用工具分析heap Dump 文件,查看对象的引用关系、实例数量以及对象占用内存等信息,找出位置。 内存分析工具钟查看对象引用链,找出持有对象引用的地方。 分析代码
- linux如何找占用内存最高的进程
- 操作系统如何避免内存碎片
- 什么情况操作系统会出现内存碎片 分外部碎片和内部碎片答
- 解释一下一致性哈希,接着问哈希环增加节点,会影响多少节点做数据迁移,并画在白纸上
- 解释一下两阶段提交
- Coordinator在二阶段收到参与者提交完成通知后挂了,Participant怎么办
- 智力题,在白纸上描四个点,任意连三个构成一个三角形,口述实现判断第四个点和当前三角形位置关系的思路
- 二叉树的z字形层序遍历输出
# 2024-01-20 蚂蚁一面
- 问项目
- Hashmap怎么解决冲突?怎么判断key相等?
- Hashcode对数组长度取模定位数组下标,这一块有没有什么优化策略?(答的高低位异或运算,给自己挖坑…)
- 为什么要用高低做异或运算?为什么非得高低16位做异或?(深挖,懵了…)。
- 讲讲Threadlocal?threadlocalmap被谁引用?
- Concurrenthashmap怎么保证可见性?如果用volatile修饰,那么这个被修饰的共享字段是什么?
- 举簇和非举簇索引的区别?B+树叶子节点除了存储数据还有什么?
- 二级索引叶子节点存储的是什么?索引下推是什么?
- 手撕:删除字符串列表中包含指定字符的所有元素,给出java代码。
# 2023-06-13 蚂蚁 暑期实习 面经
- 深挖项目、结合项目提问
- 事务传播
- 事务和锁、锁失效
- jmm
- 异常
- 深挖项目(幂等性、并发、分布式、场景题等等)
- 手撕算法(链表相交、层序遍历)
- tcp重传
- jvm内存
- gc算法
- g1、cms
- hashmap、concurrenthashmap
- threadlocal