c++ 面试题

文章目录

  • c++面试准备
    • 语法
      • 前++和后++
    • 网络
      • 简述三次握手
    • 内存
      • 程序在内存中如何分布
    • 数据库
      • 索引失效的发生场景
      • 常用索引
      • 常用索引结构
      • 什么是ACID(数据库事务特性)
      • mysql的锁分为哪些类别

c++面试准备

语法

前++和后++

  1. STL中只能使用前++, 返回的是迭代对象引用,否则返回一个无用且已销毁的对象
  2. 针对基础类型前++先加后返回,后++ 先返回再加

网络

简述三次握手

  1. 客户端

内存

程序在内存中如何分布

程序一般运行在虚拟内存上,通过映射,程序可以看起来运行在一段连续的内存上,内存地址从低到高分别放着, 系统预留空间,程序代码段,data段(用来存放全局static,文本常量),bss段(存放未初始化的static),堆,栈

数据库

索引失效的发生场景

使用explain SQL查看执行计划

  1. select * from tableA where 带索引的字段条件 or 不带索引的字段条件
  2. select * from tableA where 带索引字段 like ‘%XXX’
  3. select * from tableA where 字符串字段 = 2222 ;这里必须用引号包起来
  4. select * from tableA where 带索引字段 - 5 = 6; 不能在索引字段上进行计算
  5. 联合索引只查索引后边的单个字段

常用索引

  1. unique 唯一索引
  2. parimary key 主键索引
  3. index 普通索引
  4. fulltext 全文索引
  5. 组合索引

常用索引结构

  1. B tree 普通二叉树,应注意数据不能偏向太大,否则一端太长会变成线性查找
  2. RBT (red-black-tree) 红黑树,接近平衡二叉树,但允许出现 max_deep - min_deep <= 1,所以相对调整次数更少,同时兼顾索引调整速度
  3. 太深了,后边再学

什么是ACID(数据库事务特性)

  1. 原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚
  2. 一致性(Consistency),数据库事务必须从一个状态一起切换到另一个状态,比如交易成功,并扣款成功
  3. 隔离性(Isolation)AB两个用户同时操作,只能有一个生效后才让另一个开始编辑
  4. 持久性(Durability)事务一旦提交对数据库的修改是要被长久保存下去的

mysql的锁分为哪些类别

  1. 按模式
    • 悲观锁
    • 乐观锁
  2. 按范围
    • 行锁
    • 页锁
    • 表锁
    • 全局锁
  3. 按属性
    • 共享锁
    • 排他锁

你可能感兴趣的:(c++,开发语言)