Juya Cai

现代cpp及cpp后端架构学习笔记

RAII惯用法 RAII:Resource Acquisition Is Initialization,资源获取即初始化。在C++中,RAII是一种资源管理的技术,通过在对象的构造函数中获取资源,然后在对象的析构函数中释放资源,来管理资源的生命周期。RAII的核心思想是:将资源的生命周期与对象的生命周期绑定在一起,通过对象的构造和析构来管理资源的生命周期。 简单来说就是资源的获取都在构造函...

面试自我介绍

老师你好! 我叫蔡俊源,来自华南理工大学软件学院,就读的专业是软件工程,目前是大三在读。很荣幸这次能够参加微信后台开发岗的面试。 首先,我想简单介绍一下我的项目经验,我一共有三段项目经验,分别是在一个叫DragonOS的开源操作系统社区里进行持续性的代码贡献,这个操作系统项目所用的语言是RUST,涉及的模块主要是网络相关的。在社区工作的期间一共完成三个功能的贡献,一是完成alarm系统调...

算法(四)--双指针 && 滑动窗口 && 数组

双指针 当需要多次重复的遍历数组时,使用指向头尾的双指针并同时移动它们可以大大减少重复遍历的次数。 双指针的作用就在于可以跳过无用解。通过使用两个指针(通常一个指向数组的开始,另一个指向数组的末尾)并根据一定的条件同时移动这两个指针,可以有效地在遍历数组时减少不必要的重复遍历,从而提高算法的效率。此外,双指针技术还可以帮助跳过那些不满足特定条件的无用解,进一步优化搜索或计算过程。 两数之...

算法(二)--二叉树

二叉树 二叉树基础及其常见类型 二叉树的重要性将贯穿开发始终。很多实用且复杂的数据结构式基于二叉树的,比如红黑树(二叉搜索树)、多叉树、二叉堆、图、字典、并查集,二叉树是非常重要的基础。如果你想掌握上面的数据类型,掌握二叉树的重要性不言而喻。 同时很多算法思想可以被抽象为二叉树。常见的是回溯算法、动态规划,其过程可以视为二叉树的深度遍历。 满二叉树 中间节点都有左右子节点。深度...

算法(三)--链表

链表 tip:链表旋转操作如果是自己的size整数倍,等于没有操作。所以需要先把旋转次数对size取余。 time %= size LRU缓存机制 Leetcode 146 使用双向列表和哈希表: 双链表存储一个节点被使用(get或者put)的时间戳,且按最近使用时间从左到右排好序,最先被使用的节点放在双链表的第一位,因此双链表的最后一位就是最久未被使用的节点; 哈希表存储ke...

算法(一)--回溯

前言 本心得会将常见的算法解题思路按模块进行拆分讲解。模块分别是:双指针、链表、二叉树、回溯、二分查找、栈堆、贪心、动态规划、图论。斯认为新接触到一道算法题时,可以尝试将其识别为某模块的题目,应用相应模块的通用解法进行解题。但具体问题具体分析,通用解法只是提供一个启发,需要我们在不断的刷题中磨砺手感和技巧。 回溯算法 回溯算法本质上是暴力穷举算法,和我们常见的深度搜索算法DFS算法非常...