面试C++软件开发需要具备什么知识(面试题)-----持续更新

本文详细介绍了C++面试中常见的知识点,包括C++基础,如struct与class的区别,STL库的组成部分及其工作原理,特别是顺序容器如vector、deque、list的特性和使用注意事项。同时,深入讲解了数据结构,如红黑树的基础知识,以及C++中的算法和数据结构应用,如查找、排序、递归等。此外,还涉及到了计算机基础,如TCP/IP连接建立与数据库的相关概念。
摘要由CSDN通过智能技术生成
  • 一:C/C++基础
  • struct与class的区别 :
  • 相同点:都可以包含成员函数、都可以继承、都可以实现多态

    不同点:struct是数据结构的实现体默认的访问权限是public,class是对象的实现体默认的访问权限是private

            Struct不可以用作定义模板参数,class可以用作定义参数模板

  • STL库的介绍 :
  • STL:标准模板库,体现了泛型化编程思想,泛型也是一种软件复用技术:需求、概念、模型、容器、算法、迭代子 .从根本上来说,STL是一些容器(list、map、set、map等)、算法和迭代器的集合

    STL组件共分为6类:

  • Container(容器)-------各种基本数据结构
  • Adapyer(适配器)-------可改变Containers、Iterators、Function object接口的一种组件
  • Algroithm(算法)-------各种基本算法如sort、search。。。等
  • Iterator(迭代器)------连接containers和algorithms
  • Function object(函数对象)
  • Allocator(分配器)
  • STL内存分配 :小型区块所可能造成的内存碎片问题,STL设置了双层级配置器
  • >128字节调用:一级配置器

    <128字节调用:二级配置器

  • 顺序容器
  • vector:
  • O(1)时间的快速访问
  • 插入或删除到非尾结点位置所需时间时间复杂度O(n),在尾增加或删除元素所需要时间为O(1)
  • 扩容规则:重新申请一个2倍大的内存空间;将原先空间内容拷贝过来,将原内容释放,将内存交给操作系统。
  • 新建一个vector时,会给它分配一个连续的内存空间,如std::vector<int> vec,当通过push_back向其中加入元素时,如果初始分配空间已满,就会引起vector扩容。

  • 注意事项:vector在插入、删除、扩容之后,都会引起迭代器的失效。
  • 底层数据结构:数组,特点是连续存储、支持快速访问
  • 建议:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值