CPP 选手秋招学习笔记 day31

一、机试

主要是华为机试

1.安排会议室问题

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

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

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

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

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

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

最后遍历一遍返回结果。

3.岛屿数量问题

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

二、面试相关

1.分布式锁的实现

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

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

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

2.Redis 的原子性

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

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

相关推荐
小小龙学IT3 小时前
snap7 开源西门子 S7 通信协议库深度解析
c++·开源
小溪学编程4 小时前
从 C++ 的规范变迁看语言发展
jvm·c++·面试
ShineWinsu5 小时前
对于Redis:string类型的解析
java·c++·redis·分布式·缓存·面试·string
YYYing.6 小时前
【设计模式系列 (七) 】桥接模式
c++·后端·设计模式·桥接模式
高山有多高6 小时前
【Linux笔记】Linux自定义Shell
linux·c++
悠仁さん7 小时前
【C++】vector 类
开发语言·c++
_upupup7 小时前
智能指针的原理及简单模拟实现(C++)
开发语言·c++
l1t7 小时前
DeepSeek总结的OpenZL压缩变换器
c++·算法
郝学胜-神的一滴7 小时前
C++ Templates 01:拨开迷雾,读懂C++模板经典著作
开发语言·c++·程序人生·游戏·游戏引擎·软件构建
坤坤子吖7 小时前
算法学习——高精度加减乘除
c++·笔记·学习·算法