CPP 选手秋招学习笔记 day31

一、机试

主要是华为机试

1.安排会议室问题

考察对优先队列的使用,具体做法是用多个 vector 分别存储计划在每层参加会议的组以及组的人数。

从顶层往下遍历因为每组要求会议室楼层的组只能往下去安排。

2.判断函数最大栈空间以及在最大栈空间下的最长调用链

考察的是关于图的知识,第一个是怎么去存储图的节点,用 adj 的 Pair,每个是一个 vector

对于环,可以用一个 vector 存储从头开始的节点,然后每个放入 vector 中的他连接的那些节点入度减 1。

然后对于每个节点存储一个到当前节点开始的最大栈空间和最长链

最后遍历一遍返回结果。

3.岛屿数量问题

考察的是 DFS,每次就把岛屿连通的陆地标记,或者把它们变成非岛屿

二、面试相关

1.分布式锁的实现

用 key 表示锁,value 表示是否加锁,然后 set nx 无锁就创建并加锁,delete 会释放锁。

分布式锁过期时间避免锁不被释放,同时多节点避免服务不可用。

对于 value 每个要设置独一无二的值,避免被其他节点误删。

2.Redis 的原子性

一个是通过原子加和原子减实现,另一个是通过 lua 脚本打包,不会被打断,还有就是通过加锁。

总结:关于图的用 queue 可以实现去判断有无环。

相关推荐
linx2951 小时前
单元三 · 那 C 的底层知识怎么办
c语言·开发语言·数据结构·c++·嵌入式硬件
汉克老师2 小时前
GESP 六级明日冲刺:最后一晚只抓两个大方向
c++·gesp·小学生·学c++编程
神仙别闹2 小时前
基于 QT(C++)开发的地铁换乘系统
数据库·c++·qt
Dr_Fourier3 小时前
mmap的使用与底层原理
linux·c++
Tairitsu_H3 小时前
[C++] C++11右值引用与移动语义揭秘
开发语言·c++·c++11·右值引用·移动语义
(Charon)3 小时前
【C++】 定时器进阶:多层时间轮原理与任务迁移
c++
蒸蒸yyyyzwd3 小时前
cpp 选手备战秋招学习笔记 day32
c++·笔记·面试
汉克老师4 小时前
GESP 四级明日冲刺:最后一晚只抓两个大方向
c++·gesp·小学生·学c++编程