头条技术面试深度解析:项目架构、Redis类型、分布式锁及同步机制详解

头条新闻

头条技术面试深度解析:项目架构、Redis类型、分布式锁及同步机制详解

第二轮技术会议,17:00~20:25,晚餐时间hr。那位女士还体贴地带我去体验了传说中的头条餐厅,全程不超过半小时。

聊聊项目,画出项目架构图,画出用户从发起请求到收到响应经过了哪些服务以及每个服务做什么的流程图。

谈谈项目中遇到的困难和挑战以及你是如何解决的

redis中有几种​​类型&底层是如何实现的&项目中什么地方使用什么类型以及如何使用

redis如何实现分布式锁,zk如何实现分布式锁,两者的区别。如果服务还没有执行,说明redis中的分布式锁已经过期。如何解决这个问题呢?

Synchronized底层实现、编译后添加到方法中和添加到synchronized代码块的区别、类锁、对象锁

锁升级流程

Java运行时区域以及各个区域的作用,GC的理解,Java内存模型以及为什么这样设计

了解索引、组合索引、索引最佳实践

你用过 countDownLatch 吗?项目中如何使用呢?你对aqs的理解是什么?

要编写生产者-消费者问题并考虑高并发情况,可以使用Java类库并在白纸上编写代码。

如下图

设计发行者时,要考虑集群和高并发。要求发行人生成的ID具有增加的趋势。通过ID可以区分是今天生成的ID还是昨天生成的ID,但是生成的ID不能直接包含日期,必须有一定的混淆功能,在白纸上写代码。

在两位数数组中,每个元素可以向上、下、左、右四个方向走,以找到最长的递增路径。如下图所示,最长的递增路径就是红色字体的路径。在一张白纸上编写代码。

美团

电话面试(40分钟)+三轮现场技术面试(3.5小时)+HRBP面试(30分钟)

数据库和缓存一致性问题。先更新数据库,再更新缓存。如果数据库更新了,但是缓存还没有更新,有请求进来,访问了缓存中的数据,怎么办?

聚集索引/非聚集索引,mysql索引的底层实现,为什么不用B树,为什么不用hash,叶子节点是存储数据还是指向数据的内存地址,几个需要注意的地方使用索引时

mysql默认的事务隔离级别,mvcc、rr如何实现,rc如何实现

你了解MySQL间隙锁吗?你了解僵局吗?编写一条会导致死锁的 SQL 语句。如何解决僵局? MySQL有提供什么机制来解决死锁吗?

说说对GC的理解,什么是垃圾,GC算法有哪些,垃圾收集器有哪些,cms和g1的区别,emm,还有一个直击灵魂的问题。你看过cms的源码吗?我笑哭了。

您是否曾经排查过在线 oom 问题以及如何排查它们?

你用过jvm自带的工具吗以及如何使用它们?

假设有一个如下图所示的full gc图片。垂直方向是内存使用情况,水平方向是时间。这个full gc问题你是如何排查的以及你提到的问题如何解决【原创公众号:贝拉的技术轮】

谈谈你对Java中集合类的理解,项目中用过哪些集合类,用在什么地方,怎么用。

了解CAS、CAS引起的问题以及如何解决这些问题

易失性底层、同步底层、锁升级过程、MESI

ehcache支持哪些缓存?

有没有关于juc的研究?请告诉我。

聊聊项目,画出项目架构图,画出用户从发起请求到收到响应经过了哪些服务以及每个服务做什么的流程图。

谈谈项目中遇到的困难和挑战以及如何解决的。您将特别详细地了解该项目。

如何保证RocketMQ消息的顺序以及如何解决重复消费的问题

如何保证项目中接口运行幂等

下面讲一下我们对redis的理解,在项目中怎么用,用在什么地方,为什么用。

哨兵机制和redis这两种备份方式的区别,项目中使用的是哪一种,为什么

下面讲一下分布式锁的理解

项目中如何进行系统监控

如何理解Spring中的AOP、IOC、DI?你读过Spring源代码吗?

你读过MyBatis源代码吗?

告诉我一个你最了解的框架和你的理解。

如何理解分布式事务,为什么会出现这个问题,如何解决,你了解哪些分布式事务中间件?

下面说一下分库分表的理解

hystrix功能&如何在项目中使用&hystrix如何检测断路器是否需要打开/关闭&hystrix实现原理,除了hystrix你还知道其他熔断器和限流中间件吗?告诉我你知道多少

杜波,有人知道吗?

如何理解java和mysql中的乐观锁和悲观锁

一致的散列

滴滴

三轮现场技术面试+一轮HRBP面试(4小时5分钟)

讲项目,画项目架构图,画流程图,说明用户从发起请求到收到响应,经历了哪些服务,每个服务做了什么,讲数据库设计。

你处理过线上的oom问题吗?你是怎么对付他们的?

你是否遇到过在线服务器CPU占用这么高的情况?怎么处理呢?

您在网上遇到过其他问题吗?您是如何处理的?

对线程池的了解,在项目中用在什么地方,怎么用,用了Excutor框架中的哪个实现类,为什么用这个?

了解CAS、CAS引起的问题以及如何解决这些问题

易失性底层、同步底层、锁升级过程、MESI

了解mysql索引、了解组合索引以及索引的最佳实践

分布式锁的实现,redis分布式锁&zk分布式锁的对比

如何实现唯一ID,雪花的实现原理,雪花有什么问题,如何避免根据订单号推断今天的订单量

如果使用栈结构实现在线功能,那么在使用过程中需要注意哪些问题,为什么?

如何理解线程安全

如何理解接口幂等性以及在项目中如何保证接口幂等性

如何理解微服务,如何划分服务,可以分为哪些方面,为什么这样划分,微服务带来什么好处和坏处,如何看待这个问题

如何认识网关、网关带来的好处和坏处以及如何解决

hystrix函数&如何在项目中使用&hystrix如何检测断路器是否需要打开/关闭&hystrix实现原理

如何理解命令模式和观察者模式?手写观察者模式或命令模式的代码。也可以使用策略模式。

掌握常用的设计模式有哪些,如何在项目中使用,为什么用这个而不用那个,亲手写出线程安全的单例模式

如何设计闪购系统

如果我现在想达到每秒10万个请求,又无法突破限流,我该怎么设计呢?

假设双十一0:00有大量订单请求。如何将这些订单分成数据库和表格呢?为什么?

服务A调用服务B中的接口,服务B调用服务C中的接口。如何实现如果服务B响应服务A成功,服务C也必须成功响应服务B。需要考虑系统性能问题。

使用递归时要注意什么?一般可以用什么来代替递归写法?

有两个表,表a和表b。编写SQL,只查询a表的数据,只查询b表的数据,同时查询a表和b表的数据。

你知道spring源码吗?

你知道myBatis源代码吗?

mysql 事务隔离级别,mvcc

我:既然现在很多业务线都是Go,那你有没有考虑过把剩下的业务线转成Go?

采访者:我认为语言只是一个工具,语言不应该成为影响发展的因素。

面试官说的有道理。

京东

电话面试(30分钟)+两轮现场技术面试(1小时40分钟)。 12点50分面试完,就让我先回来。稍后HR会电话联系我。一周后,面试官问我是否还会考虑京东。 ,对不起,我不再考虑了。希望我们以后还有机会再次合作。

最终修改的属性在定义时不会被初始化。它在无参构造函数中初始化。可以吗?为什么?

谈谈你对Java中集合类的理解,项目中用过哪些集合类,在什么地方使用,如何使用,以及为什么不使用其他集合类。

hashMap,concurrentHashMap的底层实现,

列表删除是如何实现的?遍历的时候可以删除吗?为什么?

redis中有哪些数据结构?你知道它的底层实现是如何实现的吗?与java中类似数据结构的比较

redis是单线程还是多线程?为什么这么快?

redis hash中的某个key太大,变成了String类型的大key。如何处理以及在使用过程中如何避免出现此问题?

项目中哪些地方使用了设计模式以及如何使用它们?你能画出你熟悉的设计模式的UML图吗,手写单例模式,静态内部类实现的手写单例模式?

我们来谈谈mysql索引。实际工作中,哪些场景使用b+tree索引,哪些场景使用hash索引?

解释一下可以看到什么信息,什么信息意味着什么,解释下面列出的结果

你读过Spring源代码吗?你能告诉我更多吗?

你看过MyBatis源代码吗?你能告诉我更多吗?

cas、cas的缺点以及如何解决

aqs,如何实现countDownLatch

线程池是如何实现的,核心线程数和最大线程数设置为多少,为什么要这样设置,项目中的什么地方用到了线程池,使用时要注意什么?

mysql事务隔离级别,幻读,脏读,项目中使用什么事务隔离级别以及为什么

volatile的底层原理和synchronized的实现机制,

了解XA和TCC,了解分布式事务框架及其缺点

feign 和 dubbo,把你知道的都说出来

尤里卡和动物园管理员,尽可能多地告诉我

hystrix和sentinel,告诉我你知道的一切

春云阿里巴巴,你知道的都告诉我吧

分库、表、读写分离的理解。尽可能多地告诉我你所知道的。

画出Java线程的几种状态以及状态之间的转换的图。

说说项目,画出项目架构图,画出用户从发起请求到收到响应经历了哪些服务的流程图,以及每个服务做了什么事情。说说数据库设计具体到一些表是什么字段【原创公众号:贝拉的技术轮】

emm我们部门比较大,所以可能需要加班,加班到凌晨两三点,或者通宵达旦,也就是大促销期间。你能接受吗?

emm也会加班到十点。这不是在大促销期间,但也不是每天都有。这是一种不正常的情况。你能接受吗?你住在哪里?来这里需要多长时间?你有男朋友吗?

我们一起去吃午饭吧。我们这里有员工餐厅。不不不,我要回家吃饭了。

以下是我在tmdj以外的公司面试中遇到的一些问题。 tmdj 里问过的我就不重复了。我只会写下我还记得的具体公司的面试题。

其他的

火币:

四轮技术面试+一轮HR面试(4小时)。后来HR妹子告诉我,他们一般都是两轮技术面试,因为技术面试完之后面试官就再也没有找到她了,然后,emm,又来了又一轮技术面试,又一轮技术面试,我哭了伴随着笑声

Kafka如何保证消息的顺序消费?向消费者组添加新的消费者是否会提高消息消费的速度?如果我想提高消息消费速度该怎么办?

redis的几种数据结构和底层,如何在项目中使用redis

哨兵机制、选举算法

一致的散列

redis是单线程还是多线程?为什么这么快?

复用的几种方法及其区别

线程池的理解,如何在项目中使用,如何在多个线程之间共享数据,如何在多个进程之间共享数据

hashMap、concurrentHashMap的区别以及底层实现、hashMap和hashTable的区别

什么是红黑树,什么是b树,为什么hashMap中使用红黑树而不是其他树?

mysql索引的理解,为什么mysql索引使用b+tree而不是b-tree或者其他树,为什么不使用hash索引

数据库与缓存双写一致性问题

日常购物:

三轮技术面试+一轮HRBP面试

使用了Object类的哪些方法以及如何使用它们?

Java是如何实现序列化的? Serialization底层是如何实现的?

countDownLatch是如何实现的

项目中如何实现监控报警机制?告诉我们你所知道的。

在线服务器CPU这么高,如何处理这个问题

服务A调用服务B,用户请求服务A,发现返回很慢。如何定位这个问题呢?

你还记得TIME_WAIT是什么状态吗?网络什么情况下会出现这种状态?

链接我:

第二轮技术面试+一轮HR面试

1、内核态和用户态,cas和soout,哪个是用来切换内核态和用户态的?

2. 哪些典型应用使用udp?

3、你了解线程池以及如何在项目中使用吗?

4、计算密集型/IO密集型任务的核心线程数和线程池最大线程数如何分别设置?为什么他们要这样设置?

5、假设我下午5点要和5个人开会,但这5个人现在外出不在公司,但今天会回来问,我应该如何召开这个会议?用Java并发知识回答

网点通:

5个多小时,中午连饭都没吃。下午面试的时候真的很饿,下午就死了很多脑细胞。

我当场就提出了要约,但从他家出来的时候我想的是,早知道下午会这样,还不如中午吃完午饭回家好好享受一下。睡觉。

想去他家的朋友要认真写代码,多看一下Java中一些方法的实现,因为上机考试题要求不能使用Java中提供的方法,得自己写,然后准备算法很好。

算法题

[1,1,2,2,3,4,4,5,5,5] 查找独特元素(人力车)

反转链表需要时间复杂度 O(N) 和空间复杂度 O(1)(火币)

斐波那契数列的非递归实现(爱奇艺)

本周股市价格为[2,6,1,4,8]。找出哪一天买入和哪一天卖出以获得最大利润。最大利润是多少(爱奇艺)

按箭头方向查找二叉树(金山云)

使用id关联表abc查找阴影部分的数据(金山云)【原创公众号:贝拉的科技轮】

一个整数无序数组,里面三个数之和只等于一个目标值,求这三个数(小米)

链表问题(小米)

扑克问题(小米)

有十张扑克牌,从上面开始,取出一张放在桌子上,然后再抽出一张放在扑克牌的底部,如此循环,直到你的牌中没有更多的牌为止。手。此时桌子上的牌的顺序正好是1 2 3 4 5 6 7 8 9 10。需要写代码找出原来的顺序

手写大堆(linkedMe)

手写LRU算法(火币)

字符串加法(滴滴)

两个数字字符串不能直接转换为 int 或 double。然后求这两个数字的和。返回值仍然是一个字符串。需要 15 分钟,并且要求没有错误。

寻找目标价值位置(滴滴)

有一个二维数组。该数组按水平和垂直顺序排列。找到目标值的位置。需要 10 分钟。

查找字符串“efabcbaefehiabcba”中最长的回文数,且不去重(美团)

要反转 int 类型的值 x,不要借用 String,只需使用 int。 && 对于这个程序,编写其合适的测试用例(美团)

Top K 问题(每日搜索)

人力资源面试

真诚待人,以真心换真心,不欺骗,HR问问题时如实回答即可。拒绝报价时,请礼貌地说话。

尖端

其实在面试过程中,你可以感觉到哪些面试官是真心欣赏你,哪些只是想找能干的人。最后你一定要去一个欣赏你的面试官,因为待遇真的会不一样。同样(假设我有经验丰富的领导,他们只是想让我工作。我非常感谢我以前遇到的每一位领导。他们欣赏我,给我空间,让我做我想做的事。非常感谢。你们)。

好了,免费安利链接来了,你不能学会受苦,你不能学会被愚弄。

《深入理解Java虚拟机》《Java并发编程艺术》《Java并发编程实践》《MySQL技术内幕InnoDB存储引擎》《Redis设计与实现》《JVM G1源码分析与调优》《重新定义Spring》云实践》《Redis深度奇遇:核心原理与应用实践》《Spring技术内幕》《myBatis技术内幕》

《深入反汇编Java虚拟机》等。个人感觉Geek Time和Nuggets Booklet还是有很多非常好的专栏的。 emm,我不会再安装它们了。我自己没有上述一些书籍/专栏。读完之后我就溜走了

亲爱的读者,采访已经发表。如果您觉得对您有帮助,记得点击“阅读”。欢迎关注、收藏、转发、阅读。

不要只是马来人,记得和Bella一起读书学习,一起成为更好的自己,成为你想要的自己~

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

27阅读

java中冒号,java双冒号

2026年09月06日

26阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

28阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

25阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

25阅读