Q&AGroup2
Q&AGroup2
一、C/C++相关
1.语言基础
- static、const 作用?
- 引用与指针作用以及区别?
- 如何避免野指针?
- malloc、free 和 new、delete 区别?
- extern 有什么作用?
- 简述 strcpy、sprintf 与 memcpy 的区别?
- c/c++ 中强制类型转换使用场景?
- 什么时候生成默认构造函数?
- 什么时候生产默认拷贝构造函数?
- 什么是深拷贝?什么是浅拷贝?
2.STL
- vector 底层实现原理?
- vector 内存增长机制?
- vector 的 reserve 和 resize 的区别?
- vector 的元素类型为什么不能是引用?
- list 的底层实现原理?
- deque 的底层实现原理?
- 什么时候使用 vector、list、以及 deque?
- priority_queue 的底层实现原理?
- multiset 的底层实现原理?红黑树原理?
- unordered_map的底层实现原理?哈希表原理?
- 迭代器底层实现原理?以及有哪些种类?
- 迭代器失效?连续和非连续存储容器的失效?
- STL 容器的线程安全性?
3.面向对象
- 面对对象的三大特征?
- 简述多态实现原理?
- 怎么解决菱形继承?
- function,lambda,bind之间的关系
- c++ 类型推导用法
- 关键字override,final的作用
- 继承下的构造函数和析构函数执行顺序?
- 虚函数表和虚函数表指针(vptr)的创建时机?
- 虚析构函数的作用?
- 智能指针种类以及使用场景?
- c++ 11 用过哪些特性?
- 动态库和静态库的区别?
- 左值引用与右值引用的区别?右值引用意义?
二、数据结构与算法
- 用两个栈实现队列?
- 包含 min 函数的栈?
- 队列的最大值?
- 用一个栈实现另一个栈的排序?
- 如何仅用递归函数和栈操作逆序一个栈?
- 链表中倒数第 k 个节点?
- 链表中环的入口节点?
- 反转链表?
- 从尾到头打印链表?
- 两个链表的第一个公共节点?
- 第一个只出现一次的字符?
- 最长不含重复字符的子字符串?
- 字符串的排列?
- 反转字符串?
- 把数字翻译成字符串?
- 重建二叉树?
- 二叉树的下一个节点?
- 树的子结构?
- 二叉树的镜像?
- 对称的二叉树?
- 从上到下打印二叉树?
- 序列化二叉树?
- 二叉树的深度?
- 二叉树第 k 大节点?
- 树中两个节点的最低公共祖先?
- 剪绳子?
- 二进制中 1 的个数?
- 矩阵的最小路径和?
- 换钱的方法数?
- 换钱的最少货币数?
- 最长公共子序列问题?
- 最长公共子串问题?
- 数组中的最长连续序列?
- 最长递增子序列?
- 最小编辑代价?
三、操作系统
1.进程线程
- 进程和线程的区别?
- 操作系统中进程与线程切换过程?
- 请描述整个系统调用过程?
- 后台进程有什么特点?
- 进程间通信有哪几种方式?
- 操作系统中进程调度策略有哪几种?
- 线程同步的方式?
- CAS 是一种什么样的同步机制?
- CPU 是怎么执行指令的?
2.内存
- 用户态和核心态的区别?
- 内存管理有哪几种方式?
- malloc 是如何分配内存的
- 页面置换算法有哪些?
- 谈谈 cpu cache 一致性工作原理
- 写文件时进程宕机,数据会丢失吗
- 磁盘调度算法有哪些
四、MYSQL
- 数据库三大范式?
- MySQL cpu 飙升,该怎么处理?
- 如何定位以及优化 SQL 语句的性能问题?
- 什么是视图?为什么要使用视图?
- SQL 语句在 MySQL 是如何执行的?
- 索引在哪些情况下会失效?
- 索引的目的和代价分别是什么?
- 主键索引和唯一索引的区别?
- 聚集索引和非聚集索引的区别?
- 什么是覆盖索引?原理是什么?
- 什么是回表查询?原理是什么?
- 什么是最左匹配规则?原理是什么?
- 什么是索引下推?原理是什么?
- InnoDB 与 MyISAM 的区别?
- 索引为什么要用 B+树而不是二叉树或者B树?
- 数据库事务的四个特性以及含义?
- 脏读,幻读,不可重复读出现的原因原理?
- 不可重复读与幻读的区别?
- SQL 注入原理?如何避免 SQL 注入?
- MySQL 死锁问题产生的原因以及如何解决?
- MVCC 底层原理?
- MySQL 主从复制原理?
- MySQL 分库分表?
五、网络编程
- 简述 Reactor 网络编程模型?
- 比较 Reactor 和 Proactor 的区别?
- 连接断开有哪几种判定方式?
- 接收客户端连接有几种方式?
- 为什么用户态需要设置读写缓冲区?
- 水平触发和边缘触发的区别?
- CLOSE_WAIT 和 TIME_WAIT是什么?
- TCP 三次握手的过程?为啥不可两次握手?
- TCP 四次挥手的过程?
- 什么是连接的半打开,半关闭状态?
- UDP和TCP的区别
- 描述输入网址到网页显示整个流程
- linux系统如何收发网络包
- TCP是如何保证可靠性的
- 什么是MTU、MSS以及为什么要有MSS
六、设计模式
- 面对对象中有哪些设计原则?
- 开闭原则,哪些原则与它相关,分别的关系?
- 什么是里氏替换原则?
- 什么是迪米特原则?
- 什么是依赖倒置原则?
- 单例模式多线程?
- 什么是工厂模式?什么是抽象工厂?
- 什么是代理模式?应用场景是什么?
- 什么是装饰器模式?应用场景是什么?
- 什么是组合模式?应用场景是什么?
- 什么是责任链模式?应用场景是什么?
- 什么是模版方法?应用场景是什么?
- 什么是策略模式?应用场景是什么?
- 什么是观察者模式?应用场景是什么?
七、Redis
- 什么是 redis?redis 的应用场景?
- redis 的对象类型有哪些?
- 相同数量的数据hash与zset 存储占用情况?
- 基于 redis 实现限流功能有哪几种方式?
- redis 为什么是单线程?这里单线程指什么?
- redis 怎么实现分布式锁?有哪些缺陷?
- redis 怎么做高可用?
- redis不同的持久化机制都有什么优缺点?
- 什么是缓存雪崩、缓存穿透、缓存击穿?
- redis 淘汰策略有哪些?
- 分析 redis 的事务?
- 简述 redis 高可用的方案?
- 简述 redis cluster 集群的原理?
八、Kafka
- kafka 是什么?解决了什么问题?
- zookeeper 对于 kafka 的作用是什么?
- kafka 如何判断一个节点是否还活着?
- 简述 kafka 的 ack 三种机制?
- 如何控制消费的位置?
- 在分布式场景下如何保证消息的顺序消费?
- kafka 的高可用机制是什么?
- kafka 如何减少数据丢失?
- kafka 如何确保不消费重复数据?
- kafka 如何维护消费状态的?
九、docker
- 什么是 docker 镜像?
- 什么是 docker 容器?
- docker 容器有几种状态?
- DockerFile中的命令COPY和ADD命令的区别?
- 容器与主机之间的数据拷贝命令?
- 解释一下 dockerfile 的 ONBUILD 指令?
- 如何在生产中监控 docker?
- 构建 docker 镜像应该遵循哪些原则?
- 容器退出后通过ps命令查看不到数据会丢失么
十、分布式理论
- 什么是 CAP 理论?
- 什么是 Base 理论?
- 什么是 2PC(两阶段提交)?
- 什么是 Raft 协议? 解决了什么问题?
设计方案
- 2G内存在20亿个整数中找出现次数最多的数
- 100亿个URL中重复词汇的TopK问题
- 40亿个非负整数中找到未出现的数?
- 40亿个非负整数中算中位数和找出现两次的数
- 岛问题
- redis 和 mysql 缓存一致性
- 请求页面置换策略有哪些方式?区别是什么?
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.