C++后台开发重要知识点总结

作者:快乐的码农
链接: https://www.nowcoder.com/discuss/57942
来源:牛客网

算法

  1. 排序:

    • 冒泡排序
    • 简单选择排序
    • 直接插入排序
    • 折半插入排序
    • 希尔排序
    • 快速排序
    • 归并排序
    • 堆排序
    • 基数排序
    • 计数排序
      各种排序的时间复杂度,空间复杂度,是否稳定,时间复杂度是否与初始序列有关?
  2. 查找:二分查找,lower_bound, upper_bound

  3. 分治与递归:逆序对数,大数相加,大数相乘

  4. 贪婪算法

  5. 动态规划:背包问题,找零钱问题,最长公共子序列(LCS)
  6. BFS,DFS,最短路径(Dijkstra算法,Floyd算法)
  7. 字符串匹配算法:KMP算法,BM算法,Sunday算法

  8. 补充:Top-K算法,Bitmap算法, Bloom Filter算法,一致性哈希算法,8数码问题(A*算法,B*算法,IDA*算法)

数据结构

  1. 线性表:数组,栈,队列,链表特点以及应用场景。
  2. 数组:老鼠走迷宫问题,稀疏矩阵压缩
  3. 链表:单链表逆序,单链表去重,单链表删除结点(仅给出删除结点),两个链表交叉求交叉点,判断单链表是否有环以及确定环的入口结点。
  4. 二叉树:二叉树的遍历(递归,非递归),层次遍历;
  5. 二叉树求深度,宽度;二叉树镜像;创建二叉树;
  6. 哈夫曼树,哈夫曼编码。BST, AVL(AVL单侧旋转,双侧旋转),红黑树(红黑树的特征)。
  7. 图:邻接矩阵,邻接表,拓扑排序,最小生成树,trie树
  8. 补充:跳跃表,hashtable

C++

  1. C与C++的区别(面向对象的特点)
  2. 指针和引用的区别?
  3. 悬空指针和野指针有什么区别?
  4. 什么是内存泄漏?怎么产生的?如何检测?
  5. static和const区别?
  6. const和define的区别?
  7. struct和class的区别?
  8. sizeof和strlen的区别?
  9. 32位,64位系统中,各种常用内置数据类型占用的字节数?
  10. virtual, inline, decltype,volatile,static, const关键字的作用?使用场景?
  11. C++中函数指针的作用?由那些属性唯一决定一个函数指针?
  12. C++中如何唯一确定一个重载函数?重载函数默认初始化方式?
  13. C++多态的实现机制?虚函数表的内部实现机制?
  14. C++中重载,覆盖,隐藏的区别?
  15. 深拷贝与浅拷贝的区别?
  16. 派生类中构造函数,析构函数调用顺序?
  17. C++类中数据成员初始化顺序?
  18. 结构体内存对齐问题?结构体/类大小的计算?
  19. static_cast, dynamic_cast, const_cast, reinpreter_cast的区别?
  20. shared_ptr, unique_ptr, weak_ptr的区别?auto_ptr与shared_ptr的区别?weak_ptr主要是为了解决什么问题的?shared_ptr的内部实现?
  21. new/delete和malloc/free的区别?
  22. strcat,strcpy,strncpy,memset,memcpy的内部实现?
  23. new operator, operator new, placement new的区别?
  24. 单例模式?懒汉式?饿汉式?
  25. C++中有哪些容器(序列容器,关联容器)?vetor与list的区别?set与unordered_set的区别?

操作系统

  1. 操作系统加载流程?
  2. 进程与线程的区别和联系?
  3. 进程的常见状态?以及各种状态之间的转换条件?
  4. 静态链接与动态链接的优缺点?
  5. 死锁?死锁产生的条件?预防、避免死锁的方法?
  6. 进程间通信的方式?各种方式的区别以及应用场景?
  7. 经典同步问题解法:生产者与消费者问题,哲学家进餐问题,读者写者问题。
  8. 线程同步的方式?各种方式的区别?
  9. 虚拟内存?使用虚拟内存的优点?
  10. Linux下进程的内存布局?
  11. 页面置换算法?LRU Cache算法?
  12. Linux IO多路复用的机制:select,poll,epoll。三种复用机制的区别与联系?

计算机网络

  1. OSI 7层网络模型中各层的名称及其作用?
  2. TCP/IP 4层网络模型名称及其作用?
  3. OSI 7层网络中各层的常见协议以及协议作用?
  4. OSI网络模型中工作在各个层次的物理设备以及其作用?
  5. IP层功能?如何用int型变量保存一个IPv4地址?
  6. TCP协议(重点):TCP3次握手,4次挥手详细过程。TCP滑动窗口,拥塞控制,流量控制原理。TCP 建立、断开连接过程中13中状态以及各种状态之间的转换条件? TCP粘包问题?如何解决?
  7. UDP协议:头信息?使用场景?如何使用UDP建立可靠连接?
  8. http协议:各个版本的区别?http请求头,响应头常用属性?常用状态码及其含义?
  9. socket编程:服务端,客户端建立TCP连接调用那些函数?分别对应什么状态?
  10. Linux 常用网络命令的原理:ping, traceroute
  11. 浏览器中点击一个超链接到显示对应页面的全过程?
  12. DNS的作用?什么时候使用TCP?什么时候使用UDP?

数据库

  1. MySQL中MyISAM与InnoDB的区别?
  2. MySQL中索引内部实现是什么?MyISAM和InnoDB中使用的B+树有什么区别?B树和B+树的区别?
  3. SQL常用查询语句的使用?各种连接(外连接,内连接,全连接)的区别?
  4. 数据库范式?1,2,3,BCNF,4, 5
  5. 事务?事务的特点?事务的四个隔离级别,各个级别解决的问题?
  6. 索引?适合创建索引的条件?不适合创建索引的条件?
  7. 索引优化策略?五个优化级别
  8. 存储过程?
  9. 触发器?
  10. 日志
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值