Q&AGroup2


一、C/C++相关

1.语言基础

  1. static、const 作用?
  2. 引用与指针作用以及区别?
  3. 如何避免野指针?
  4. malloc、free 和 new、delete 区别?
  5. extern 有什么作用?
  6. 简述 strcpy、sprintf 与 memcpy 的区别?
  7. c/c++ 中强制类型转换使用场景?
  8. 什么时候生成默认构造函数?
  9. 什么时候生产默认拷贝构造函数?
  10. 什么是深拷贝?什么是浅拷贝?

2.STL

  1. vector 底层实现原理?
  2. vector 内存增长机制?
  3. vector 的 reserve 和 resize 的区别?
  4. vector 的元素类型为什么不能是引用?
  5. list 的底层实现原理?
  6. deque 的底层实现原理?
  7. 什么时候使用 vector、list、以及 deque?
  8. priority_queue 的底层实现原理?
  9. multiset 的底层实现原理?红黑树原理?
  10. unordered_map的底层实现原理?哈希表原理?
  11. 迭代器底层实现原理?以及有哪些种类?
  12. 迭代器失效?连续和非连续存储容器的失效?
  13. STL 容器的线程安全性?

3.面向对象

  1. 面对对象的三大特征?
  2. 简述多态实现原理?
  3. 怎么解决菱形继承?
  4. function,lambda,bind之间的关系
  5. c++ 类型推导用法
  6. 关键字override,final的作用
  7. 继承下的构造函数和析构函数执行顺序?
  8. 虚函数表和虚函数表指针(vptr)的创建时机?
  9. 虚析构函数的作用?
  10. 智能指针种类以及使用场景?
  11. c++ 11 用过哪些特性?
  12. 动态库和静态库的区别?
  13. 左值引用与右值引用的区别?右值引用意义?

二、数据结构与算法

  1. 用两个栈实现队列?
  2. 包含 min 函数的栈?
  3. 队列的最大值?
  4. 用一个栈实现另一个栈的排序?
  5. 如何仅用递归函数和栈操作逆序一个栈?
  6. 链表中倒数第 k 个节点?
  7. 链表中环的入口节点?
  8. 反转链表?
  9. 从尾到头打印链表?
  10. 两个链表的第一个公共节点?
  11. 第一个只出现一次的字符?
  12. 最长不含重复字符的子字符串?
  13. 字符串的排列?
  14. 反转字符串?
  15. 把数字翻译成字符串?
  16. 重建二叉树?
  17. 二叉树的下一个节点?
  18. 树的子结构?
  19. 二叉树的镜像?
  20. 对称的二叉树?
  21. 从上到下打印二叉树?
  22. 序列化二叉树?
  23. 二叉树的深度?
  24. 二叉树第 k 大节点?
  25. 树中两个节点的最低公共祖先?
  26. 剪绳子?
  27. 二进制中 1 的个数?
  28. 矩阵的最小路径和?
  29. 换钱的方法数?
  30. 换钱的最少货币数?
  31. 最长公共子序列问题?
  32. 最长公共子串问题?
  33. 数组中的最长连续序列?
  34. 最长递增子序列?
  35. 最小编辑代价?

三、操作系统

1.进程线程

  1. 进程和线程的区别?
  2. 操作系统中进程与线程切换过程?
  3. 请描述整个系统调用过程?
  4. 后台进程有什么特点?
  5. 进程间通信有哪几种方式?
  6. 操作系统中进程调度策略有哪几种?
  7. 线程同步的方式?
  8. CAS 是一种什么样的同步机制?
  9. CPU 是怎么执行指令的?

2.内存

  1. 用户态和核心态的区别?
  2. 内存管理有哪几种方式?
  3. malloc 是如何分配内存的
  4. 页面置换算法有哪些?
  5. 谈谈 cpu cache 一致性工作原理
  6. 写文件时进程宕机,数据会丢失吗
  7. 磁盘调度算法有哪些

四、MYSQL

  1. 数据库三大范式?
  2. MySQL cpu 飙升,该怎么处理?
  3. 如何定位以及优化 SQL 语句的性能问题?
  4. 什么是视图?为什么要使用视图?
  5. SQL 语句在 MySQL 是如何执行的?
  6. 索引在哪些情况下会失效?
  7. 索引的目的和代价分别是什么?
  8. 主键索引和唯一索引的区别?
  9. 聚集索引和非聚集索引的区别?
  10. 什么是覆盖索引?原理是什么?
  11. 什么是回表查询?原理是什么?
  12. 什么是最左匹配规则?原理是什么?
  13. 什么是索引下推?原理是什么?
  14. InnoDB 与 MyISAM 的区别?
  15. 索引为什么要用 B+树而不是二叉树或者B树?
  16. 数据库事务的四个特性以及含义?
  17. 脏读,幻读,不可重复读出现的原因原理?
  18. 不可重复读与幻读的区别?
  19. SQL 注入原理?如何避免 SQL 注入?
  20. MySQL 死锁问题产生的原因以及如何解决?
  21. MVCC 底层原理?
  22. MySQL 主从复制原理?
  23. MySQL 分库分表?

五、网络编程

  1. 简述 Reactor 网络编程模型?
  2. 比较 Reactor 和 Proactor 的区别?
  3. 连接断开有哪几种判定方式?
  4. 接收客户端连接有几种方式?
  5. 为什么用户态需要设置读写缓冲区?
  6. 水平触发和边缘触发的区别?
  7. CLOSE_WAIT 和 TIME_WAIT是什么?
  8. TCP 三次握手的过程?为啥不可两次握手?
  9. TCP 四次挥手的过程?
  10. 什么是连接的半打开,半关闭状态?
  11. UDP和TCP的区别
  12. 描述输入网址到网页显示整个流程
  13. linux系统如何收发网络包
  14. TCP是如何保证可靠性的
  15. 什么是MTU、MSS以及为什么要有MSS

六、设计模式

  1. 面对对象中有哪些设计原则?
  2. 开闭原则,哪些原则与它相关,分别的关系?
  3. 什么是里氏替换原则?
  4. 什么是迪米特原则?
  5. 什么是依赖倒置原则?
  6. 单例模式多线程?
  7. 什么是工厂模式?什么是抽象工厂?
  8. 什么是代理模式?应用场景是什么?
  9. 什么是装饰器模式?应用场景是什么?
  10. 什么是组合模式?应用场景是什么?
  11. 什么是责任链模式?应用场景是什么?
  12. 什么是模版方法?应用场景是什么?
  13. 什么是策略模式?应用场景是什么?
  14. 什么是观察者模式?应用场景是什么?

七、Redis

  1. 什么是 redis?redis 的应用场景?
  2. redis 的对象类型有哪些?
  3. 相同数量的数据hash与zset 存储占用情况?
  4. 基于 redis 实现限流功能有哪几种方式?
  5. redis 为什么是单线程?这里单线程指什么?
  6. redis 怎么实现分布式锁?有哪些缺陷?
  7. redis 怎么做高可用?
  8. redis不同的持久化机制都有什么优缺点?
  9. 什么是缓存雪崩、缓存穿透、缓存击穿?
  10. redis 淘汰策略有哪些?
  11. 分析 redis 的事务?
  12. 简述 redis 高可用的方案?
  13. 简述 redis cluster 集群的原理?

八、Kafka

  1. kafka 是什么?解决了什么问题?
  2. zookeeper 对于 kafka 的作用是什么?
  3. kafka 如何判断一个节点是否还活着?
  4. 简述 kafka 的 ack 三种机制?
  5. 如何控制消费的位置?
  6. 在分布式场景下如何保证消息的顺序消费?
  7. kafka 的高可用机制是什么?
  8. kafka 如何减少数据丢失?
  9. kafka 如何确保不消费重复数据?
  10. kafka 如何维护消费状态的?

九、docker

  1. 什么是 docker 镜像?
  2. 什么是 docker 容器?
  3. docker 容器有几种状态?
  4. DockerFile中的命令COPY和ADD命令的区别?
  5. 容器与主机之间的数据拷贝命令?
  6. 解释一下 dockerfile 的 ONBUILD 指令?
  7. 如何在生产中监控 docker?
  8. 构建 docker 镜像应该遵循哪些原则?
  9. 容器退出后通过ps命令查看不到数据会丢失么

十、分布式理论

  1. 什么是 CAP 理论?
  2. 什么是 Base 理论?
  3. 什么是 2PC(两阶段提交)?
  4. 什么是 Raft 协议? 解决了什么问题?

设计方案

  1. 2G内存在20亿个整数中找出现次数最多的数
  2. 100亿个URL中重复词汇的TopK问题
  3. 40亿个非负整数中找到未出现的数?
  4. 40亿个非负整数中算中位数和找出现两次的数
  5. 岛问题
  6. redis 和 mysql 缓存一致性
  7. 请求页面置换策略有哪些方式?区别是什么?