熬夜爆肝千万字,最新1千道大厂面试题

本类文档用于整理收集全网优秀的技术文章,开源项目, 经典论文,面试题,行业分享等资料,整理成册,免费分享给相关技术的开发人员;涉及到技术点c/C++历年【字节、百度、京东、腾讯、阿里等一线互联网大厂】  (校招、社招)面试题及答案。

特殊说明:转载之公众号《深入浅出cpp》。|仅供本人学习使用

答案链接:************

一、C/C++语言(36)

1.1语言

  • static、 const 作用
  • 引用与指针作用以及区别?
  • 如何避免野指针?
  • malloc、 free和new、 delete 区别? malloc 申请空间失败怎么办?
  • extern 有什么作用?
  • 简述strcpy、 sprintf 与memcpy 的区别?
  • c/c++ 中强制类型转换使用场景?
  • 什么时候生成默认构造函数?
  • 什么时候生产默认拷贝构造函数?
  • 什么是深拷贝?什么是浅拷贝?默认拷贝构造函数是哪种拷贝?什么时候用深拷贝?

1.2标准库

  • vector 底层实现原理?
  • vector 内存增长机制?
  • vector 的reserve和resize 的区别?
  • vector 的元素类型为什么不能是引用?
  • list 的底层实现原理
  • deque 的底层实现原理
  • 什么时候使用vector、 list、 以及deque?
  • priority_ _queue 的底层实现原理
  • map、 set、 multimap、 multiset 的底层实现原理?红黑树原理?
  • unordered_ map、 unordered_ set 的底层实现原理?哈希表原理?
  • 迭代器底层实现原理?以及有哪些种类?
  • 迭代器失效?连续存储容器的失效?非连续存储容器的失效?以及分别的处
  • 理方式?
  • STL容器的线程安全性

1.3面对对象

  • 面对对象的三大特征
  • 简述多态实现原理
  • 怎么解决菱形继承?
  • 函数重载和重写的区别?
  • 运行期多态的实现原理? .
  • 虚函数的调用过程?
  • 继承下的构造函数和析构函数执行顺序?
  • 虚函数表和虚函数表指针(vptr)的创建时机?
  • 虚析构函数的作用?
  • 智能指针种类以及使用场景?
  • c++ 11用过哪些特性?
  • 动态库和静态库的区别?
  • 左值引用与右值引用的区别?右值引用的意义?

二、设计模式(14)

2.1设计原则

  • 面对对象中有哪些设计原则?
  • 简述开闭原则,哪些原则与它相关,分别是什么关系
  • 什么是里氏替换原则?
  • 什么是迪米特原则?
  • 什么是依赖倒置原则?

2.2创建型

  • 单例模式多线程?
  • 什么是工厂模式?什么是抽象工厂?应用场景是什么

2.3结构型

  • 什么是代理模式?应用场景是什么?
  • 什么是装饰器模式?应用场景是什么?
  • 什么是组合模式?应用场景是什么?
  • 什么是责任链模式?应用场景是什么?

2.4 行为型

  • 什么是模版方法?应用场景是什么?
  • 什么是策略模式?应用场景是什么?
  • 什么是观察者模式?应用场景是什么?

三、算法和数据结构(35)

3.1 栈、队列

  • 用两个栈实现队列
  • 包含min函数的栈
  • 队列的最大值
  • 用一个栈实现另一个栈的排序
  • 如何仅用递归函数和栈操作逆序一个栈

3.2链表

  • 链表中倒数第k个节点?
  • 链表中环的入口节点?
  • 反转链表?
  • 从尾到头打印链表
  • 两个链表的第一个公共节点

3.3字符串

  • 第一个只出现一次的字符
  • 最长不含重复字符的子字符串
  • 字符串的排列
  • 反转字符串
  • 把数字翻译成字符串

3.4二叉树

  • 重建二叉树
  • 二叉树的下一个节点
  • 树的子结构
  • 二叉树的镜像
  • 对称的二叉树
  • 从上到下打印二叉树
  • 序列化二叉树
  • 二叉树的深度
  • 二叉树第k大节点
  • 树中两个节点的最低公共祖先

3.5动态规划、贪心

  • 剪绳子
  • 二进制中1的个数
  • 矩阵的最小路径和
  • 换钱的方法数
  • 换钱的最少货币数
  • 最长公共子序列问题
  • 最长公共子串问题
  • 数组中的最长连续序列
  • 最长递增子序列
  • 最小编辑代价

四、操作系统(17)

4.1进程线程

  • 进程和线程的区别?
  • 操作系统中进程与线程切换过程?
  • 请描述整个系统调用过程?
  • 后台进程有什么特点,如果要你设计一一个进程是后台进程,需要考虑什么?
  • 进程间通信有哪几种方式?
  • 操作系统中进程调度策略有哪几种?
  • 线程同步的方式?
  • CAS是一种什么样的同步机制?
  • CPU是怎么执行指令的?

4.2内存

  • 用户态和核心态的区别?
  • 内存管理有哪几种方式?
  • 分页和分段有什么区别?
  • 页面置换算法有哪些?
  • 什么是虚拟内存?
  • 为什么虚拟地址空间切换会比较耗时?
  • 虚拟内存和物理内存怎么对应?
  • 请求页面置换策略有哪些方式?他们的区别是什么?各自有什么算法解决?

五、数据库(32)

5. 1 mysql

  • 数据库三大范式?
  • MySQL cpu飙升,该怎么处理?
  • 如何定位以及优化SQL 语句的性能问题?或者如何解决慢查询问题?
  • 什么是视图?为什么要使用视图?
  • SQL语句在MySQL 是如何执行的?
  • 索引在哪些情况下会失效?
  • 索引的目的和代价分别是什么?
  • 主键索引和唯一索引的区别?
  • 聚集索引和非聚集索引的区别?
  • 什么是履盖索引?原理是什么?
  • 什么是回表查询?原理是什么?
  • 什么是最左匹配规则?原理是什么?
  • 什么是索引下推?原理是什么?
  • InnoDB 与MyISAM 的区别?
  • 索引为什么要用B+树,而不是二又树或者B树?
  • 数据库事务的四个特性以及含义?
  • 数据库的脏读,幻读,不可重复读出现的原因原理,解决办法?
  • 不可重复读与幻读的区别?
  • SQL注入原理?如何避免SQL注入?
  • MySQL死锁问题产生的原因以及如何解决?
  • MVCC底层原理?

5.2redis

  • 什么是redis? redis 的应用场景?
  • redis的对象类型有哪些,底层实现用了哪些数据结构?
  • redis中相同数量的数据,对比分别使用hash 与zset 存储的空间占用情况?
  • 基于redis 实现限流功能有哪几种方式?
  • redis 为什么是单线程?这里单线程指什么?为什么这么快?
  • redis 怎么实现分布式锁?有哪些缺陷?
  • redis怎么做高可用?
  • redis 持久化有哪些,不同的持久化机制都有什么优缺点?
  • 什么是缓存雪崩、缓存穿透、缓存击穿?分别有哪些解决方案?
  • redis 淘汰策略有哪些?
  • 分析redis的事务?

六、网络(15)

6.1网络编程

  • 简述Reactor 网络编程模型?
  • 比较Reactor 和Proactor 的区别?
  • 连接断开有哪几种判定方式?
  • 接收客户端连接有几种方式?
  • 为什么用户态需要设置读写缓冲区?

6.2网络原理

  • 水平触发和边缘触发的区别?在边缘触发下,一一个socket 已读取200然后不再处理,是不是剩下的300就永远无法读取?
  • CLOSE_ WAIT和TIME_ _WAIT 是什么?如何排查?有什么意义?
  • TCP三次握手的过程?为什么不可以是两次握手?
  • TCP 四次挥手的过程? TIME_ _WAIT 为什么至少设置两倍的MSL时间?
  • 什么是连接的半打开,半关闭状态?
  • linux 10模型有哪几种?简述10多路复用机制?
  • 阻塞10和非阻塞10的区别?
  • select. pol1、 epoll 三者的区别?
  • 为什么边緣触发一定要用非阻塞10?
  • 描述10多路复用机制

七、分布式和集群(44)

7.1分布式理论

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

7.2 kafka

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

7.3gRPC

  • gRPC服务端启动流程?
  • gRPC 服务类型有哪些?
  • 一个connection 可以同时处理多个stream, 那keepalive 是针对stre设置的,还是针对connection 设置的?
  • 多路复用指的是什么?
  • 如何自定义resolver ?
  • 如何自定义balance?
  • 如何实现gRPC全链路追踪?
  • 客户端connection 连接状态有哪些?
  • 客户端如何获取服务端的服务函数列表?
  • gRPC 如何为每个stream 进行限流?什么是flow control?

7.4etcd

  • etcd 中一个任期是什么意思?
  • etcd中raft状态机是怎么样切换的?
  • 如何防止candidate 在遗漏部分数据的情况下发起投票成为leader?
  • etcd某个节点宕机后会怎么做?
  • 为什么Raft 算法在确定可用节点数量时不需要考虑拜占庭将军问题?
  • 如何选举出leader 节点?
  • 怎么保证数据一致性?

7.5docker /k8s

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

7.6数据库集群

  • MySQL 主从复制原理?
  • MySQL 分库分表?
  • 简述redis 高可用的方案?
  • 简述redis cluster 集群的原理?

八、设计方案(7)

8.1发散题

  • 只用2GB内存在20亿个整数中找到出现次数最多的数
  • 找到100亿个URL中重复的URL及搜索词汇的Top K问题
  • 40亿个非负整数中找到未出现的数
  • 40亿个非负整数中找到出现两次的数和所有数的中位数
  • 岛问题

8.2综合题

  • redis 和mysq1缓存一致性
  • 设计一个海量定时器方案,时间跨度毫秒级到年
#八股文怎么学习?##面经##面试题刺客退退退##通用面试题#
全部评论

相关推荐

#社招##社招可私信#(分享下面试经验,,要是有朋友看上我的,求内推)刚面了下上海的一家* 一个是面试我业务上的问题, 有以下几点* 问我优化上的问题* 1、问我在项目中做了哪些优化,    我主要是讲解webpack打包构建相关的优化 比如 thread-loader 开启多进程;开启lazyCompilation;升级webpack,开启持久化缓存等    同时还说的项目的结构的优化,比如抽离公共组件,动态加载模块,引入eslint规范之类* 2、另外还问我业务相关的,比如遇到什么难题  我回答:其实在实际场景中,如果一定遇到实在解决不了到问题,一定要及时求助,在实际开发中,不怕你不会,就怕你不说...balabala* 另一方就就是八股文 + 场景题了* 1、比如浏览器缓存:我答了强缓存 、协商缓存 、启动缓存    接着他深入问我:浏览器第一次请求服务器,或者刷新页面请求服务器等,使用到了什么缓存,,,我感觉说的有点模糊,所以就只说了肯定不是强缓存* 2、然后问了我vue2和vue3的区别  我的回答:    一个是Proxy取代defineProperty,我就直接手写了个reactive() + track() + trigger() 来实现响应式,同时对比了下defineProperty    还问我了2 和 3 diff算法的区别,我只知道2是双端比较法,详细说了这个,3的最长递增子序列法我不太清楚,感觉答的不好...    另外的一些区别,比如写法之类的,因为太表层了,就没说* 3、问我react和vue的区别      我的核心思路是两点      一个是围绕着 react的核心是 immutable来答, vue是 mutable来答      另外一个就是从渲染流程来答 react的渲染流程分为render + commit阶段,着重讲了render阶段 生成vdom, fiber 和 diff 比较的过程....      对于一些其他的 其实vue3的写法,我感觉向react靠近,比如我在vue3项目中就经常用到了jsx, 然后支持ts语法等等,也都比较灵活* 4、问我全局存储状态      我回答 vue中是vuex  react是redux      不过我还说,在实际项目中,我图方便,对于一些全局常量我就直接挂载window下,一些小的不用一直存储的变量,就直接使用$bus, 然后一个大模块内,就直接使用provide + inject* 5 另外还问到了我小程序的  我是使用wechat原生开发中工具,,就着重讲了下双线程,以及它与react vue相似的地方* 6 js相关的,问了我闭包,,我本想手撕下代码写个防抖节流之类的,他说节省时间随便说说就好,* 7 问了我浏览器优化指标  我回答了 lcp 以及 实际项目中我如何针对lcp做优化的  然后说了下fid* 8 问了我css相关了, 比如在less中用变量 实现动画之类的,还问了我echarts的实现原理  在实际项目中 我很少用这些  直接用一个ui库,,然后对margin padding 之类缝缝补补,,css相关的我太菜了  我本来想说echarts是怎么用的,,他直接打断我说原理,我就一脸懵总体来说,我的缺点还是对css不太熟悉另外,求内推!!!!
查看11道真题和解析
点赞 评论 收藏
分享
2 34 评论
分享
牛客网
牛客企业服务