开发算法岗八股技术实战面经containing各大互联网
这份面经是笔者从3月初开始面试到五月初的所有公司的经典面视问题和答案的总结,这里分享一下。有了这份面经,只能说乱杀好吧,是包赢的!剩下做好准备起飞,芜湖!
下个月笔者会更新记录自己的实习过程,想了解的可以关注一下,为秋招做准备。
当然,现在笔者身处公司学习加班(今天本来是休息的),祝各位过期的小朋友节日快乐呐!
new和malloc的区别?
语法:
new 是 C++ 中的运算符,用于动态分配内存并调用对象的构造函数来初始化内存。malloc 是 C 和 C++ 中的函数,用于分配指定大小的内存块,但不会调用对象的构造函数。
类型安全:
new 是类型安全的,它会根据分配的类型来确定所需的内存大小,并返回正确类型的指针。malloc 返回的是 void* 类型的指针,需要手动进行类型转换,容易出错。
构造函数:
new 在分配内存后会调用对象的构造函数,用于初始化对象。
malloc 只是分配了内存空间,不会调用对象的构造函数,需要手动初始化对象。
返回值:
new 返回指向动态分配的对象的指针。
malloc 返回指向动态分配的内存块的指针。
释放内存:
delete 用于释放由 new 分配的内存,并调用对象的析构函数。
free 用于释放由 malloc 分配的内存。
C++里面适合查找的数据结构 ?
std::map 和 std::unordered_map:
std::map 是一个基于红黑树实现的关联容器,它提供了对键值对进行有序存储和快速查找的功能。
std::unordered_map 是一个基于哈希表实现的关联容器,它提供了快速的插入、删除和查找操作,但不保持元素的顺序。
std::set 和 std::unordered_set:
std::set 是一个基于红黑树实现的有序集合,它保持元素的顺序并提供快速的查找操作。
std::unordered_set 是一个基于哈希表实现的无序集合,它提供了快速的插入、删除和查找操作。
std::multimap 和 std::unordered_multimap:
std::multimap 和 std::unordered_multimap 是允许重复键的关联容器,它们提供了对键值对进行存储和查找的功能。
std::set 和 std::unordered_set 的多重映射:
如果你需要存储多个相同键对应的值,你可以使用 std::multiset 和 std::unordered_multiset,它们允许重复元素的存在。
std::vector 和 std::deque:如果你需要根据索引来查找元素,可以使用 std::vector 或 std::deque,它们提供了快速的随机访问功能。但需要注意,查找操作的时间复杂度为 O(1),而插入和删除操作的时间复杂度为 O(n)。
For 里面写成了死循环,对cpu有什么影响?
for 循环是一种常用的循环结构,如果循环条件没有被正确设置,可能会导致死循环,即循环永远不会结束。这样的死循环会导致 CPU 不断地执行循环体内的代码,占用 CPU 资源,并且可能会导致程序的崩溃或系统的不稳定。
具体对 CPU 的影响取决于死循环中的代码,如果循环体内有大量的计算或者 I/O 操作,那么 CPU 使用率会很高,系统可能会变得非常缓慢ÿ