2019秋招面试知识点总结:C++、const、define与数组链表解析

需积分: 12 27 下载量 152 浏览量 更新于2024-07-18 2 收藏 6.43MB PDF 举报
"2019年秋招面试总结,涵盖了C++、宏定义与const的区别、数组与链表的对比等内容,旨在帮助求职者准备面试。" 在2019年的秋季招聘面试中,面试者们面临的是互联网大厂的严格筛选。为了帮助后来的求职者更好地应对面试,这份总结提供了丰富的知识点。首先,让我们深入了解一下C++中的指针和引用。 指针在C++中是一个变量类型,它可以不被初始化,但在使用前必须确保其有效。指针可以改变其指向的内存地址,但这也带来了潜在的风险,如野指针和无效指针。为了避免这些问题,程序员需要对指针的使用进行严谨的检查。 引用则不同,它是一个对象的别名,实际上并不分配新的内存空间。引用在定义时就必须初始化,并且一旦绑定到一个对象,就不能再改变。引用常用于函数参数传递,因为它避免了对象的拷贝,提高了效率。const int &a = b 创建了b的常量引用,这意味着a只能读取b的值,不能改变。 接下来,我们探讨define和const的区别。const定义的常量是有类型的,而#define只是简单的文本替换,没有类型检查。因此,使用#define定义常量可能导致一些类型安全问题。此外,define可以防止头文件重复包含,而const不行。在某些情况下,内联函数可以替代#define,提供更高级别的控制,尤其是在调试阶段。内联函数的使用在内核编程中很常见,它们可以避免函数调用的开销,但是否真正内联取决于编译器的优化设置。 数组和链表是两种常见的数据结构。数组存储在连续的内存区域,查找速度快,但插入和删除操作复杂,可能需要重新分配内存,效率较低。相比之下,链表的插入和删除操作相对简单,但查找速度慢,因为需要遍历链接。数组的大小在创建时固定,不易扩展,而链表的大小可以在运行时动态调整。 面试中,这些基础概念的扎实掌握是非常关键的,它们反映了候选人的基础知识和编程素养。对于准备面试的学弟们来说,了解并熟练应用这些知识点,无疑会增加成功的机会。