小红书一面

岗位是:KVcache/高性能缓存开发

上来先让做自我介绍(这里切出来看自己写好的自我介绍了),自我介绍完后因为听面试官声音有点小就又切出来提音量了,然后面试官就恼火了,说别一直切屏,他那边一直弹提醒(赛码网面试不写代码的时候切屏也会提醒,注意一下),之后就是面试官自我介绍,开始八股:

1. 智能指针有哪些以及适用场景
2. c++中有哪些常用的锁,使用场景是什么(这块问的很多,但是答得不够流利,得练习)
3. 自旋锁和排他锁有什么区别
4. 如何排查进程中cpu最繁忙的api或者说函数(这里没整过不太会,说的gdb写个脚本查看,太夸张了,下来查了一下大概是`top`+`perf`+`pstack`, top(或者htop可以更直观的查看cpu各个核心的使用率以及进程的资源占用,top -H -p PID也可以直接查看进程中的线程CPU占用)查看高消耗CPU的进程,然后执行pred top -p PID即会显示进程中系统调用和模块(可执行命令,链接库等内容)所占用CPU的百分比,然后pstack -TID(或PID)打印线程的调用栈(PID就是打印所有线程的调用栈),就可以排查高占用的进程以及函数。
可以举一反三一下:内存,磁盘等IO占用率高如何排查?
5. STL标准库中哪些容器是用树实现的,哪些容器是用哈希表实现的。
6. 项目里的thread_local高并发内存池,三级缓存是怎么做的,使用什么数据结构管理这些缓存页以及分割为大小不一的对象的。
7. 手撕:hashmap,要求使用开放地址法里的线性探测法实现,实现put和get函数(这个线性探测法第一次写,直接写成index一直++寻找空的了,面试官提醒要考虑最后找不到回来从头找的情况,因为可能hash算出来的key直接在最后,直接index++然后认为hash桶不足然后rehash的话可能会频繁发生rehash)
8. 反问:业务,是小红书哪儿做分布式高性能缓存的团队,还是需求挺多的,然后现在一个小组大概8个人主要做缓存这一块,处理一些什么什么的具体问题。

这个小红书的面试官真的是雷厉风行,大开大合的那种,30min急速八股然后手撕结束,一点实习没问,恼火恼火的也快,然后问问题的时候也会回答的很细很多,经常他回答的时候我都插不上话,如果不挂我的话,那我觉得他性格还不错,挂我我就要怪他调个音量就恼火我了
全部评论

相关推荐

1.在内容社区平台如小红书的用户增长中,如何设计一个跨渠道的营销策略来提升DAU/MAU?请结合一个你主导过的类似项目,阐述策略框架和关键指标评估。追问1:你提到的策略中,哪些数据模型(如归因模型)用于量化跨渠道贡献?如果实际效果未达预期,你如何迭代?追问2:在这个项目中,如何处理渠道间的用户重叠和预算分配,以避免资源浪费?2.面对用户行为变化(如从图文到短视频的趋势)你如何制定阶段性市场传播策略来强化平台行业地位,并直接驱动用户增长?追问1:请举例说明你如何通过A/B测试验证传播策略的有效性,并量化对MAU的贡献?3.在开拓新市场渠道时,如何高效整合内外部资源来实现用户拉新目标?请描述一个你负责的完整营销项目流程。追问1:项目中,你如何评估渠道ROI,并决定是否扩展或放弃某个渠道?4.如何通过创新获客路径(如线下活动或跨平台合作)挖掘新增长点?请分享一个成功案例,包括用户行为洞察和执行细节。5.在用户增长策略中,如何平衡短期拉新与长期留存?请从一个项目角度分析你的方法论。6.针对内容平台的行业趋势(如AI生成内容的影响),你如何判断并探索新获客机会?请结合业务视角说明7.如何制定多渠道用户增长策略以实现特定拉新目标(如季度新增用户数)?请阐述项目规划到执行的闭环。8.在市场资源整合中,如何从规划到落地执行一个完整的营销campaign来提升平台影响力?9.如何通过用户行为研究优化增长策略,例如利用线下渠道或活动运营?请分享一个项目示例。
查看13道真题和解析
点赞 评论 收藏
分享
1、给一个字符串str='10+10*5-8',实现加减乘除,输出结果---PDDdef calculate(s):s = s.replace(' ', '')stack = []num = 0op = '+'  # 初始操作符设为 '+'for i, char in enumerate(s):# 判断字符串是否只包含数字字符(0 - 9)if char.isdigit():# 多位数处理num = num * 10 + int(char)# 遇到运算符或到达末尾时,处理前一个操作符if char in '+-*/' or i == len(s) - 1:if op == '+':stack.append(num)elif op == '-':stack.append(-num)elif op == '*':stack.append(stack.pop() * num)elif op == '/':prev = stack.pop()if prev // num < 0 and prev % num != 0:stack.append(prev // num + 1)  # 向零取整else:stack.append(prev // num)op = charnum = 0return sum(stack)str_expr = '10+10*5-8'result = calculate(str_expr)print(result)2、给定一个二维数组(矩阵)要求按照螺旋顺序输出所有元素def spiral_order(matrix):if not matrix or not matrix[0]:return []result = []top, bottom = 0, len(matrix) - 1left, right = 0, len(matrix[0]) - 1while top <= bottom and left <= right:# 1. 从左到右遍历上边界for col in range(left, right + 1):result.append(matrix[top][col])top += 1  # 上边界下移# 2. 从上到下遍历右边界for row in range(top, bottom + 1):result.append(matrix[row][right])right -= 1  # 右边界左移# 3. 从右到左遍历下边界(需检查 top <= bottom)if top <= bottom:for col in range(right, left - 1, -1):result.append(matrix[bottom][col])bottom -= 1  # 下边界上移# 4. 从下到上遍历左边界(需检查 left <= right)if left <= right:for row in range(bottom, top - 1, -1):result.append(matrix[row][left])left += 1  # 左边界右移return result3、给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素(前 K 个高频元素)---阿里4、给你一个非负整数数组 nums 和一个整数 target 。向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 :(目标和)---阿里
点赞 评论 收藏
分享
09-24 09:36
门头沟学院 Java
小红书java面经自我介绍(一面没问项目)询问学习了多久的java?1.Hashmap的数据结果组成?2.Hashmap是线程安全的吗?3.CurrentHashmap是线程安全的吗?4.CAS操作5.如何解决hash冲突?(听过)6.手撕   在本地手写单列模式  (双重检验锁试) 然后让写一个颜色工厂实例 (没写出来,讲了一下思路)小红书Java实习一面1.@Autowired和@Resource的区别,(Autowired翻译是自动装配)1.注解@Autowired和@Resource的区别?@Auowired是如何注入的?2.Spring和Spring boot的区别?Spring Boot 比 Spring优化在哪里,为什么更轻量级?3.Spring的自动装配过程,如何识别出要装配的类?会扫描全部的类吗?4.Spring AOP有哪些注解?5.List有哪些线程安全的类,哪些非线程安全的类?ArrayList和 LinkedList 的区别?ArrayList 的扩容机制?LinkedList的删除操作是 O(1)的吗?6.讲一下Syncronized关键字的底层实现原理。介绍一下偏向锁,轻量级锁。volatile有哪些作用?- Synchronized:通过对象头和 Monitor 实现线程同步,依赖底层 Mutex Lock- 偏向锁:减少无竞争时的锁开销,记录线程 ID- 轻量级锁:多线程交替执行时避免重量级锁的性能消耗- Volatile:保证可见性和禁止指令重排序,不保证原子性7.讲一下单例模式有哪几种实现方式lan,e,双8.final关键字修饰变量,方法,类,有什么区别?修饰方法的话,里边的数据能修改吗?修饰类的话,里边的方法可以修改吗?里边的方法可以被重写吗?可以通过反射来修改里边的属性吗?无论什么情况下都可以通过反射来修改吗?9.讲一下Java面向对象的三大特性。说一下你对多态的理解10.线程池有哪些参数,分别讲一下有什么作用?拒绝策略有哪几种?11.Executors工具类可以用来创建线程池对吧,那么里边具体有哪些方法?12.Object类中包含哪些方法?wait()和 sleep() 有什么区别?getClass(),hashCode(),wait(),equals(),clone(),toString(),notify(),notifyAll13.死锁发生的原因。如何解决死锁问题?14.介绍一下双亲委派机制,使用场景,有什么好处?15.类加载的过程。16.什么时候会发生old GC,年轻代和老年代的比例。讲一下GC回收过程。年轻代的一块region一般是多大?年轻代专门存储大对象的空间是哪里?Old GC 和 Minor GC的区别? 常见的GC Root类型有哪些?17.类的对象头里边存有什么数据?18.TCP/IP有哪几层?每一层分别有哪些协议?报文段的最大限制是多少字节?这个主要是受什么限制导致的? 描述一下TCP流量控制的滑动窗口机制19.介绍一下DNS协议,DNS协议在哪一层?20.讲一下Redis的缓存穿透,缓存击穿,缓存雪崩,他们的解决方案分别有什么? Redis里边有一些数量很少,但是访问很频繁的热key,如何高效的,快速的把他们找出来21.https 协议和 http 的区别? 如何通过TLS/SSL协议建立加密通道,描述一下这个过程手撕,判断链表是否成环,如果成环求环的长度。6.26北京经纬恒润java校招一面0 刚才介绍的流程落到代码实现能说一下嘛(开了共享打开了一下idea给面试官看代码)1 final关键字的作用2 抽象类和接口的区别3 如果抽象类被继承的子类没有实现其全部抽象方***怎么样4 结合你的项目举例说明你是怎么用线程池的5 用过什么设计模式吗6 介绍一下你用的策略模式7 spring的aop8 结合设计模式说说aop的实现9 静态代理两种方法的特点10 说说反射的作用和优缺点11 redis的持久化机制有哪些12 hashmap的使用场景6.24美团财务后端面经1 注册中心不可用了微服务之间还能相互调用吗2 rpc调用过程3 看你用了redis和es,为什么用了多个缓存组件4 redis单线程效率为什么快Redis 采用单线程模型的设计,主要是为了提升性能、简化逻辑并避免多线程带来的复杂性。以下是其核心优势和原因:Redis 的单线程模型避免了多线程之间的竞争问题。多线程需要使用锁机制来保证数据一致性,这会带来额外的开销,例如加锁、解锁和线程切换。同时,多线程可能导致死锁问题,增加了代码的复杂性。而单线程模型确保了所有请求的串行执行,不需要额外的锁机制,从而提高了稳定性和执行效率(1)(2)。Redis 使用 I/O 多路复用机制(如 epoll),使单线程能够同时处理多个客户端请求。这种机制避免了 I/O 阻塞问题,并且由于 Redis 的操作大多是内存操作,速度极快,单线程足以支撑高并发场景(1)(2)。Redis 的核心操作简单且高效,主要是基于内存的键值存储,操作复杂度通常为 O(1) 或 O(log N)。5 redis有哪些数据结构6 使用redis集群的话,数据分区过程是什么样7 es的分词过程有了解吗1. 连接ElasticSearch2. 创建索引并设置分词器3. 索引文档4. 执行分词查询5. 处理查询结果8 MongoDB和mysql实用场景区别,优缺点MongoDB适合用于大数据量、高并发、非结构化数据的场景,而MySQL则更适合需要强一致性和复杂事务处理的关系型数据场景(1)。9 mysql的acid如何实现undo log。如果事务失败或调用了rollback,InnoDB会利用undo log将数据回滚到修改前的状态(1)。MySQL通过redo log来实现持久性。InnoDB在事务提交时会将操作记录到redo log,并调用fsync接口将其写入磁盘。如果MySQL宕机,重启时可以通过redo log恢复数据(2)。MySQL通过锁机制和**MVCC(多版本并发控制)**来实现隔离性。一致性确保事务执行前后数据库的状态是一致的。10 事务隔离级别的读已提交和可重复读怎么实现在数据库中,事务隔离级别中的读已提交(Read Committed)和可重复读(Repeatable Read)主要通过锁机制和多版本并发控制(MVCC)来实现11 mysql的索引的建立选择和依据12 你去建立索引要考量的因素有哪些13 mysql适合范围查询吗14 tcp怎么解决数据损坏丢包乱序问题15 算法:反转链表快手-增量投放部门 1面 2025-07-15-19:30项目:拼团 rag&mcp(完全不感兴趣) 动态线程池说一下在项目实现的时候遇到的非常难忘的事情。规则树模式 ✅人群标签 ✅领域驱动设计的好处 (✅❌,答得一般,没答到要点)动态配置中心设计 ✅动态降级和切量降级的目的 ✅你是否知道规则树模式的其他场景 ❌介绍策略模式 ✅拼团营销策略是否可以叠加?✅责任链模式的设计实现 ✅你是否知道责任链应用的其他场景?❌你为什么使用mq通信,而不是用rpc进行微服务通信?❌项目做过压测吗?❌动态线程池的几个参数和执行流程 ✅创建对象有几种方式?❌反射的使用场景 ❌线程池核心线程数应该怎么设计 ✅手撕:线程1-100循环打印 不会,换题。BM16 删除有序链表中的重复元素-I字节生活服务后端一面自我介绍,拷打项目我有 10 万个路径规则,然后我要怎么存储这些路径规则?然后当一个请求 path 传过来的时候,我该怎么快速判断它是否在这路径规则里面?redis和数据库同步策略热点数据更新,redis一瞬间失效会有什么问题,怎么解决?算法:最长无重复子串(限时5min)字节 一面根据简历问项目,你觉得项目比较难的点?你的延时任务怎么实现的?kafka的延迟队列怎么实现?kafka优先队列?对比一下kafka和rabbitmq?rabbitmq 和 消费者之间采用什么模式?Spring AOP有实现过代理模式吗?说一下mysql隔离级别?讲一下redis的Zset的底层数据结构?优先队列实现?讲讲java、kafka、rabbitmq 的延迟队列?算法题: 简单的在图中dps字节实习面经Redis 数据结构Redis 分布式架构分布式锁实现OSI 七层模型空Channel算法题:最长回文子串字节后端一面java面经说说项目背景说说项目里的防超买你说用到了rabbitmq,如何保证可靠性算法 寻找两个不定排序有重复的数组的中位数字节后端实习一面面经总共面试了一个小时,汗流浃背了自我介绍项目的拷打(大约15分钟)Java八股:线程进程区别使用多线程还是多进程僵尸线程计算机网络:tcp/ip网络分层tcp和udp区别以及使用领域阻塞控制(是我在前面提到了这个)MySQL八股事务级别,能防止哪些问题临时表算法怎么使用1到5的随机选择器实现1到7的随机选择器 二叉树不相邻节点之和最大值
点赞 评论 收藏
分享
评论
点赞
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务