一、cpp 八股
1.c 语言和 c++区别
c++提供了管理资源的 raii 方法,自动管理资源的分配和释放,c++提供了类型安全的保证,比如 static_cast 可以在编译期间确保类型转换安全。
c++增加了容器和算法,它们通过迭代器连接起来,算法可以通过迭代器操作不同的容器。
2.c++获得私有成员的方法
最普遍最好的方法就是使用 get 和 set 方法,缺点是增加了函数调用的开销,第二种方法是使用友元,友元函数和友元类比如测试需要了解对象的状态,有必要,第三种方法是使用指针,通过对象布局的了解,比如使用初始位置加偏移然后使用对应的类型解引用。
3.c++的类型转换和 c 的区别
c 的类型转换包括隐式转换和显式转换,显式转换是小括号加转换的类型,没有编译期间的类型检查。c++提供了比如 static_cast 相关类型转换,const__cast 是增加和去除常量属性,dynamiccast 是向下类型转换,最后是 reinterpret_cast。c++方便 debug 也适合编译期间检查。
4.const 和 static 的区别
const 提供了一种生命周期内不能被改变的保证,编译期间会检查是否违背了,如果程序员希望改变该值需要去除 const 属性。static 改变作用域和生命周期,如果是全局变量就变成文件私有,如果是局部变量就初始化一次,如果是类内成员则需要在类外初始化。
二、infra 相关知识了解
今天看的是概述知识:scaling law 是指大模型的能力和模型的参数,计算量以及数据规模有关,其中模型参数和数据规模最好并行去增加,涌现是指随着模型的增大,模型的外推能力,也就是在非训练过程中出现任务上表现的能力变得更好了。
三、算法
1.a*b+a+b
左右加 1 就变成了因式分解,这是一个数学问题
2.买卖股票问题
如果是可以买卖 k 次就增加第三个参数
如果是有冷冻期就把第二个维度变成 0、1、2 三个情况分别代表持有股票,进入冷冻期,可以买且身上没有股票
如果是有交易费在卖出的时候 dp 要减去
总结,算法有时候比较看运气的就是看能不能想到问题等价于什么,我想了很久二分查找。