c++面试常见题_第1页
c++面试常见题_第2页
c++面试常见题_第3页
c++面试常见题_第4页
c++面试常见题_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 内存内存 在 C 中 内存分成 5 个区 他们分别是堆 栈 自由存储区 全局 静态 存储区和常量存储区 栈栈 在执行函数时 函数内局部变量的存储单元都可以 在栈上创建 函数执行结束时这些存储单元自动被释放 栈内存分配运算内置 于处理器的指令集中 效率很高 但是分配的内存容量有限 堆堆 就是那些由 new 分配的内存块 他们的释放编译器不去管 由我们的应用程序去控制 一 般一个 new 就要对应一个 delete 如果程序员没有释放掉 那么在程序结束后 操作系统会自动回收 自由存储区自由存储区 就是那些由 malloc 等分配的内存块 他 和堆是十分相似的 不过它是用 free 来结束自己的生命的 全局全局 静态存储区静态存储区 全局变量和静态变量被分配到同一块内存中 在以前的 C 语言中 全局变量又 分为初始化的和未初始化的 在 C 里面没有这个区分了 他们共同占用同一 块内存区 常量存储区常量存储区 这是一块比较特殊的存储区 他们里面存放的是常量 不允许修 改 typedef 和和 define 的区别的区别 define 是预处理指令 在编译预处理时进行简单的替换 不作正确性检查 不管含义是否正确都会进行替换 只有在编译已被展开的源程序时才会发现可 能的错误并报错 typedef 是在编译时处理的 它在自己的作用域内给一个已经存在的类型一 个别名 静态成员函数的作用静态成员函数的作用 主要是为了调用方便 不需要生成对象就可以调用 malloc free 和和 new delete 的区别的区别 malloc 是 c c 的标准库函数 new 是 c 的运算符 malloc 向系统申请分 配指定 size 个字节的内存空间 返回类型是 void 类型 void 表示未确定类 型的指针 C C 规定 void 类型可以强制转换为任何其它类型的指针 new 动态创建对象时 只需指定其数据类型 而不必为该对象命名 new 表达式返 回指向该新创建对象的指针 我们可以通过指针来访问此对象 用类创建一个对象 怎么检测对象是否创建失败用类创建一个对象 怎么检测对象是否创建失败 如果创建失败 对象的值应该为 NULL 如果对象不为 NULL 表明创建成功 指针和引用的区别指针和引用的区别 1 指针保存的是所指对象的地址 引用是所指对象的别名 指针需要通过 解引用间接访问 而引用是直接访问 2 指针可以改变地址 从而改变所指的对象 而引用必须从一而终 3 引用在定义的时候必须初始化 而指针则不需要 4 指针有指向常量的指针和指针常量 而引用没有常量引用 5 指针更灵活 用的好威力无比 用的不好处处是坑 而引用用起来则安 全多了 但是比较死板 volatile 的作用的作用 因为访问寄存器比访问内存单元的速度要快很多 所以编译器一般都会作 减少内存存取的操作 即将内存变量缓存到寄存器 但当使用 volatile 声明变量 的时候 系统总是重新从它所在的内存读取数据 不会再做代码优化 数据结构 操作系统 进程与线程进程与线程 进程进程是具有一定独立功能的程序在某个数据集合上的一次运行活动 进程是 系统进行资源分配资源分配和调度调度的一个独立单位独立单位 线程线程是进程的一个实体 是 CPU 调度调度和分派分派的基本单位基本单位 它是比进程更小的 能独立运行的基本单位 线程自己基本上不拥有系统资源 只拥有一点在运行中必 不可少的资源 如程序计数器 一组寄存器和栈 但是它可与同属一个进程的其他 的线程共享进程所拥有的全部资源 一个线程可以创建和撤销另一个线程 同一个进程中的多个线程之间可以并 发执行 它与同进程中的其他线程共享数据 但拥有自己的栈空间 拥有独立 的执行序列 进程和线程的主要差别主要差别在于它们是不同的操作系统资源管理方式 进程有 独立的地址空间独立的地址空间 一个进程崩溃后 在保护模式下不会对其它进程产生影响 而线程只是一个进程中的不同执行路径 线程有自己的堆栈和局部变量 但线线 程之间没有单独的地址空间程之间没有单独的地址空间 一个线程死掉就等于整个进程死掉 所以多进程多进程 的程序要比多线程多线程的程序健壮健壮 但在进程切换时 耗费资源较大 效率要差一 些 但对于一些要求同时进行并且又要共享某些变量的并发操作 只能用线程 不能用进程 优缺点优缺点 线程执行开销小 但不利于资源的管理和保护 进程刚好相反 进程间的通信进程间的通信 管道管道 pipe 又称无名管道 是一种半双工的通信方式 数据只能单向流 动 而且只能在具有亲缘关系的进程间使用 进程的亲缘关系通常是指父子进 程关系 有名管道有名管道 named pipe 有名管道也是半双工的通信方式 但是它允许无 亲缘关系进程间的通信 信号量信号量 semophore 信号量是一个计数器 可以用来控制多个进程对共 享资源的访问 它常作为一种锁机制 防止某进程正在访问共享资源时 其他 进程也访问该资源 因此 主要作为进程间以及同一进程内不同线程之间的同 步手段 消息队列消息队列 message queue 消息队列是由消息组成的链表 存放在内核中 并由消息队列标识符标识 消息队列克服了信号传递信息少 管道只能承载无 格式字节流以及缓冲区大小受限等缺点 信号信号 sinal 信号是一种比较复杂的通信方式 用于通知接收进程某个事 件已经发生 共享内存共享内存 shared memory 共享内存就是映射一段能被其他进程所访问 的内存 这段共享内存由一个进程创建 但多个进程都可以访问 共享内存是 最快的 IPC 方式 它是针对其他进程间通信方式运行效率低而专门设计的 它 往往与其他通信机制 如信号量 配合使用 来实现进程间的同步和通信 套接字套接字 socket 套接字也是一种进程间通信机制 与其他通信机制不同 的是 它可用于不同主机之间的进程通信 线程间的通信方式线程间的通信方式 锁机制锁机制 包括互斥锁 条件变量 读写锁 互斥锁提供了以排他方式防止数据 结构被并发修改的方法 读写锁允许多个线程同时读共享数据 而对写操作是 互斥的 条件变量可以以原子的方式阻塞进程 直到某个特定条件为真为止 对条件的测试是在互斥锁的保护下进行的 条件变量始终与互斥锁一起使用 信号量机制信号量机制 Semaphore 包括无名线程信号量和命名线程信号量 信号机制信号机制 Signal 类似进程间的信号处理 计算机网络 TCP 与与 UDP 的区别的区别 TCP 提供面向连接的 可靠的数据流传输 而 UDP 提供的是非面向连接的 不 可靠的数据流传输 TCP 传输单位称为 TCP 报文段 UDP 传输单位称为用户数据报 TCP 注重数据安全性 UDP 数据传输快 因为不需要连接等待 少了许多操作 但是其安全性却一般 TCP 对应的协议和 UDP 对应的协议 TCP 对应的协议 1 FTP 定义了文件传输协议 使用 21 端口 2 Telnet 一种用于远程登陆的端口 使用 23 端口 用户可以以自己的身份 远程连接到计算机上 可提供基于 DOS 模式下的通信服务 3 SMTP 邮件传送协议 用于发送邮件 服务器开放的是 25 号端口 4 POP3 它是和 SMTP 对应 POP3 用于接收邮件 POP3 协议所用的是 110 端口 5 HTTP 是从 Web 服务器传输超文本到本地浏览器的传送协议 UDP 对应的协议 1 DNS 用于域名解析服务 将域名地址转换为 IP 地址 DNS 用的是 53 号 端口 2 SNMP 简单网络管理协议 使用 161 号端口 是用来管理网络设备的 由于网络设备很多 无连接的服务就体现出其优势 3 TFTP Trival File Transfer Protocal 简单文件传输协议 该协议在熟知端口 69 上使用 UDP 服务 TCP 协议是如何来保证传输的可靠性协议是如何来保证传输的可靠性 1 合理分片 数据被分割成 TCP 认为的最合适发送的数据块 2 当 TCP 发出一个报文段后 就启动一个定时器 用来等待目的端确认收到这 个报文段 若没能及时收到这个确认 TCP 发送端将重新发送这个报文段 超 时重传 3 TCP 收到一个发自 TCP 连接的另一端的数据后就将发送一个确认 不过这个 确认不是立即就发送 而是要推迟几分之一秒后才发送 4 TCP 将保持它的首部和数据的检验和 5 流量控制 当接收方来不及处理发送方的数据 能提示发送方降低发送的速 率 防止包丢失 6 拥塞控制 当网络拥塞时 减少数据的发送 在浏览器中输入在浏览器中输入 后执行的全部过程后执行的全部过程 1 客户端浏览器通过 DNS 解析到 的 IP 地址 220 181 27 48 通 过这个 IP 地址找到客户端到服务器的路径 客户端浏览器发起一个 HTTP 会 话到 220 181 27 48 然后通过 TCP 进行封装数据包 输入到网络层 2 在客户端的传输层 把 HTTP 会话请求分成报文段 添加源和目的端口 如服务器使用 80 端口监听客户端的请求 客户端由系统随机选择一个端口 如 5000 与服务器进行交换 服务器把相应的请求返回给客户端的 5000 端 口 然后使用 IP 层的 IP 地址查找目的端 3 客户端的网络层不用关心应用层或者传输层的东西 主要做的是通过查 找路由表确定如何到达服务器 期间可能经过多个路由器 这些都是由路由 器来完成的工作 我不作过多的描述 无非就是通过查找路由表决定通过那 个路径到达服务器 4 客户端的链路层 包通过链路层发送到路由器 通过邻居协议查找给定 IP 地址的 MAC 地址 然后发送 ARP 请求查找目的地址 如果得到回应后就 可以使用 ARP 的请求应答交换的 IP 数据包现在就可以传输了 然后发送 IP 数据包到达服务器的地址 http 中的中的 GET 和和 POST 有什么区别有什么区别 GET 一般用于获取 查询资源信息 POST 一般用于更新资源信息 Get 传输的数据量小 因为受 URL 长度限制 但效率较高 POST 可以传输大量数据 所以上传文件时只能用 POST 方式 GET 是不安全的 因为 URL 是可见的 可能会泄露私密信息 如密码等 POST 较 GET 安全性较高 数据库 当前应用最广泛的数据模型是关系模型 E R 模型属于概念模型也即信息模型 层次模型 采用的是树 二叉树 的结构来表达实体和实体间联系 网状模型 采用的是图的结构来表达实体和实体间联系 对象模型 就是用的面向对象的思想 用对象和其之间的联系来表达实体和 实体间联系 关系模型 就是用的二维表 外模式有多个 概念模式和内模式只有一个 实体完整性规则规定基本关系的所有主属性都不能取空值 外模式 概念模式在逻辑设计阶段得到 内模式在物理设计阶段得到 模式 Schema 定义 也称逻辑模式或概念模式 是数据库中全体数据的 逻辑结构和特征的描述 是所有用户的公共数据视图 外模式 External Schema 定义 也称子模式 Subschema 或用户模式 是数据库用户 包括应用程序员和最终用户 能够看见和使用的局部数据的逻 辑结构和特征的描述 是数据库用户的数据视图 是与某一应用有关的数据的 逻辑表示 内模式 Internal Schema 定义 也称存储模式 Storage Schema 它是 对数据物理结构和存储方式的描述 是数据在数据库内部的表示方式 共享锁共享锁 S 锁 又称读锁 若事务 T 对数据对象 A 加上 S 锁 则事务 T 可以读 A 但不能修改 A 其他事务只能再对 A 加 S 锁 而不能加 X 锁 直到 T 释放 A 上的 S 锁 这 保证了其他事务可以读 A 但在 T 释放 A 上的 S 锁之前不能对 A 做任何修改 排他锁排他锁 X 锁 又称写锁 若事务 T 对数据对象 A 加上 X 锁 事务 T 可以读 A 也可以修改 A 其他事务不能再对 A 加任何锁 直到 T 释放 A 上的锁 这保证了其他事务在 T 释放 A 上的锁之前不能再读取和修改 A 数据库系统数据库系统包括数据库数据库和数据库管理系统 数据库管理系统 事务 Transaction 是访问并可能更新数据库中各种数据项的一个程序执行单 元 unit 是恢复和并发控制的基本单位 事务应该具有 4 个属性 原子性 一致性 隔离性 持续性 这四个属性 通常称为 ACID 特性 原子性原子性 atomicity 一个事务是一个不可分割的工作单位 事务中包括的 诸多操作要么都做 要么都不做 一致性一致性 consistency 事务必须是使数据库从一个一致性状态变到另一个 一致性状态 一致性与原子性是密切相关的 隔离性隔离性 isolation 一个事务的执行不能被其他事务干扰 即一个事务内 部的操作及使用的数据对并发的其他事务是隔离的 并发执行的各个事务之间 不能互相干扰 持久性持久性 durability 持续性也称永久性 permanence 指一个事务一旦 提交 它对数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论