后端开发工程师面经
文章目录
第二次面试回顾
岗位信息
-
面试时间:2025-6-6
-
面试岗位
问题1: 什么是块存储?
-
我思考 不清楚不理解,面试官非要回答,面试不说卡,我就回答 我回答20分钟
-
内容:IO栈一部分,发起aio,io_uring,底层不清楚,
-
内容:kv存储一部分,元数据。
-
然后反复重复,不怎么回答, 一致性 raid组?
问题3:什么rdma技术
-
我思考:不清楚不理解,面试官非要回答,面试不说卡,我就回答 我回答20分钟
-
我回答:减少拷贝次数,单线拷贝
-
根本不记得回答什么
### 问题4:libaio 和io_uring区别,怎么用的呢?
- 我感觉:之前看过,忘记了,面试官不说卡,我自能停止,面试官等等30分钟
- 我内容:零拷贝,减少系统调用,数据结构,
- 我的内容:纠结 大量返回怎么处理的?我发现文件处理之做一次调用,我多线程判断返回,但线程epoll处理,这个不清楚。自己纠结这个方面上。
- 我思考10分钟,面试官不停止,我自己说,不知道时候什么
> 面试官 说用减少用户层调用
问题4: 什么是系统调用
-
大脑一片空白,不急知道怎么回答
-
函数调用 堆栈,
-
在返回值纠结20分钟
-
面试不喊停,自己不会回答 30分钟。大部分思考 回答混乱
### 问题5 混合部署,缓存怎么处理的?
- 我思考:文件我不清楚page,纠结10分钟
- 我内容:1 lib 层面 清理机制 2 mds 大文件 大目录处理机制 3 存储层面 不清楚纠结10分钟,多线程下 层面
- 自己回答完毕了,还是等着回答,bache我说一下
反复纠结
### 问题6 混合部署 系统怎么优化的,性能多少
1. mds 层面
2. osd层面
3. 性能说不不出来呀
### 问题7 什么是线性一致性 ,分布式协议 怎么理解的
- 我思考 我感觉到了,就是说不出来 ,深入存储系统 看3次
- 我意识没转变过来
- 单节点:多线程 并发 无锁 原子 ,多节点 读写一致性。变量可见性
- 多节点:从一个节点写入,就从另外节点读出来。
—根本没有转变过来呀?
> 这些知识都是工作遇到的,在潜意识中 还是之前面试经典题目,现在看面试官都是项目中实际问题,完全超出我预期,在日常工作和领导汇报 根本不关心这个题目。面试就直接
> 当然 面试层次 第一层 ,调用 等待返回可以了,什么线性一致性。自己想复杂。。别人说思维混乱。—面试官还是简单的理解—自己回答偏了
拼多多-二面-服务端研发实习生
面试问题:
- 自我介绍。
- 介绍一下项目?
- 讲一下项目中某一部分,从前端请求开始到数据库大致过程,数据库表结构大致什么样,响应什么样?
- 写一下建表的 SQL 语句。
- 用户登录后可以进行哪些操作?
- 这些操作可以放到一个接口实现吗?
- Java 的 8 种基本数据类型?
- Java 的集合的继承树大概是什么样的?
- Java 的异常的继承体系大概是什么样的?
- 说一下 Java 的线程池?
- 算法题:一个 9×9 的二维数组,判断是否满足 9 个 3 × 3 的子数组都满足每行、列都不重复,且含1-9所有数字。
- 反问。
腾讯– 后端开发
- kafka的有序性保证,深入到底层
- redis持久化的整个流程
- redis分布式锁的实现,底层
- sycronized如何保证三个特性,底层
- 慢查询优化
- oom定位及解决,cpu过高定位及解决
- raft实现细节,cap,和paxos对比
- 实习项目并发度的考量
- 缓存选型
- 一道medium算法,和面试官讨论了一下输入输出限制和trade off
总计2个多小时
# 快手timeline+面经(C++)
一面(1h10min)
【八股】:
- tcp三次握手和四次挥手
- 三次握手第三次可以没有吗为什么
- 浏览器输入网址到显示的全过程
【反问】:无,面试官说超时了会议室外有人催他就赶紧下了。
二面(1h10min)
- 自我介绍
- STL中关联式容器有哪几个
- map和unordered_map区别(说了底层、时间复杂度、用法)
- unordered_map的时间复杂度一直是o(1)吗
- 为什么最坏O(n),什么情况是O(n)?
- unordered_map底层是怎么实现的(哈希函数、桶+链表)
- 除了链表有没有别的方法(开放地址法,不了解具体)
- 有一亿个string数据应该用map还是unorered_map存为什么
- 说到map底层是红黑树,了解平衡二叉树吗?
- 5个节点的平衡树,最少有多少个节点
- 了解线程和进程吗?为什么Muduo网络库用多线程而不是多进程?
- 存一个数据从内存到到磁盘,经过哪些步骤?
- 手撕:求逆波兰表达式,如string=(101+20)*30-45/5变成101 20 + 30 * 45 5 - /
1. 鼠鼠想了大概五分钟说了思路,用stack做,面试官说思路没问题
2. 然后写了十五分钟,最后输出有点小问题面试官说没关系整体是ok的
19. 反问:业务 2.进来做什么 3.要提高那些方面(多理解怎么应用)
滴滴-后端
一面50min
- 算法题:反转区间链表
- 介绍项目以及工作内容
- 深入redis,sds结构,跳表原理以及数据结构,缓存穿透如何解决,持久化机制,aof重写策略。
- java锁,Synchronized和ReentrantLock区别以及各自的实现原理,java的内存模型,Volatile关键字的作用以及实现原
- 线程切换上下文是的工作流程。
- mysql的引擎分类,事务实现,锁的分类,索引结构以及如何建立索引
- 反问:部门业务以及业务特点
二面50min
- 算法题:和大于等于目标值的最短连续子数组
- 项目介绍, 深挖项目场景,
- 事务如何保证
- 状态机的作用
- 如果重构的话如何考虑。
- 系统设计需要考虑哪些方便,如果需要跟外部合作需要考虑那几点。
- 未来的职业规划
- 反问:部门技术氛围以及工作节奏
hr面30min
- 职业规划,
- 部门介绍,优缺点,
- 项目的难点如何解决,生活和工作冲突了如何合理安排
- 反问:工作节奏以及新人培训
腾讯云智后台开发一面
- 自我介绍
- 有没有想留在现在的公司转正?
3. 介绍一下你简历上这个项目
4. 你说到你使用到短信注册登录,你讲讲你实现发送短信登录的流程
5. 你说你把用户信息存在ThreadLocal中,你讲讲你主要存储了哪些用户信息
6. 那如果你将用户信息存在ThreadLocal中,我现在有多个线程使用你这个产品,你怎么知道哪个线程对应哪个用户呢?(这里有点没太理解,没答上)
7. 你说用到了拦截器,你讲一下你用到的拦截器(后续询问是否用到了AOP)
8. 讲一下SpringBoot启动器 (这里我回答的SprintgBootApplication,不知道是否正确,或者应该回答starter相关?)
9. 讲一下依赖注入
10. Bean对象存储在哪里?
11. 你项目中用到了哪些表(后续问了很多表结构相关的问题,不一一列举了)
12. 如果当前有很多用户在抢购你的秒杀优惠券,你会怎么进行设计能够让用户有个比较好的体验?
13. 讲讲你了解的索引
14. 你讲到B+树,那么为什么要使用B+树作为数据结构呢?它好在哪里?为什么效率高?
15. B树和B+树的区别?既然B+树每次都需要查询到叶子节点,但是B树某些情况下不需要查询到叶子节点,那效率不应该更高吗?(应该是上个问题没答好,进行的追问)
16. 你讲到B+树使用叶子节点存储数据页,这个数据页的含义是什么?是分页的那个数据页吗?
17. 哪些情况下会进行回表
18. 讲一下事务的隔离级别,分别解决了什么问题
19. 可重复读可以解决幻读吗,如果不能,要怎么操作来解决幻读
20. 读提交和可重复读的区别?
21. 你使用到Redis的哪些数据类型?
22. 讲一下Redis集群
23. 详细讲一下哨兵模式,哨兵的作用是什么?
24. 你了解集群分片吗(答:不了解)
25. Redis持久化
26. 讲一下动态代理
27. 具体讲讲JDK动态代理和CGLIB动态代理的实现方式
28. 讲讲类加载过程
29. 讲一下Java 程序编译和解释的过程
30. 讲一下垃圾回收期,有哪些算法?
31. 线程池参数
32. 你讲一下Java中所用到的锁(这里答了乐观锁,悲观锁,读写锁)
33. 讲一下CAS,Java是怎么实现CAS的
34. CAS和乐观锁有什么关系?
35. 讲一下volatile的作用,实现原理是什么?它的使用场景是什么?你举个例子。
36. TCP比UDP的优势
37. 讲一下四次挥手
38. 可不可以不需要第四次挥手?为什么第四次挥手之后要等2MSL?
39. HTTP是基于哪个协议?(答 TCP)
40. HTTP的方法有哪些?(答 GET PUT DELETE)
41. HTTP是明文传输吗?HTTPS用什么方式保证了数据加密?
42. 讲一下怎么进行CA证书校验
43. 你能讲一下红黑树吗(不了解)
44. 讲一下你所知道的排序
45. 具体讲一下插入排序的实现(到这里已经被拷打昏了,应该答得不太好,实现方式应该答错了)
46. 你说插入排序时间复杂度是O(n²),那么这个时间复杂度是怎么算出来的?你具体想想真的会到O(n²)吗