C++常见面试题
致力于C++面经分享
一枚小菜程序员
大家好,俺是 干啥啥不行,吃饭第一名,称霸幼儿园
展开
-
基于低层平衡树的key-value容器
template<typename T>struct Node{ Node<T>* left; Node<T>* right; T val; T key; T height; Node() {}; Node(const T &m_val = T(), const T &m_key = T()) :val(m_val), key(m_key), left(nullptr), right(nullptr) {};};template&.原创 2022-05-23 20:15:16 · 80 阅读 · 0 评论 -
基于低层哈希表的key-value容器(map容器)
template<typename T,typename V>struct LNode { T key; V value; LNode * next; LNode(const T m_key, const V m_value) :key(m_key), value(m_value), next(nullptr) {};};template<typename T, typename V>class hash_map{public: void insert(T .原创 2022-05-23 20:14:34 · 149 阅读 · 0 评论 -
手撕智能指针------------------------SmartPointer
-------------------------------------------------------分割线-------------------------------------------------------------有参数构造、拷贝构造、等号重载 、*重载 、& 重载 、指针数量getCountPtr、析构函数。class SmartPoint{public: SmartPoint(T* Ptr ) :_mPtr(Ptr) { if (this-&g..原创 2022-05-20 15:16:27 · 200 阅读 · 0 评论 -
排序算法 面试必备
快速递归 挖坑法void quick_sort(vector<int>& nums, int l, int r){ if (l + 1 > r) return ; int first = l, last = r - 1, key = nums[first]; while (first < last) { while (first < last && key <= nums[last]) { last--; } n原创 2022-05-19 15:13:13 · 192 阅读 · 0 评论 -
关于linux 一些命令(& || && | 1> > 2>&1)解释
在linux中,&和&&,|和||介绍如下: & 表示任务在后台执行,如要在后台运行redis-server,则有redis-server & && 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo '2' | 表示管道,上一条命令的输出,作为下一条命令参数,如 echo 'yes' | wc -l || 表示上一条命令执行失败后,才执行下一条命令,如 ...原创 2022-05-18 10:07:21 · 456 阅读 · 0 评论 -
strlen与sizeof的区别
1、strlen是函数,sizeof是运算符2、strlen只能计算字符串的长度,而且要想得到正确的长度,字符串后面必须包含’\0’,sizeof的参数可以是数组、指针、类型、对象、函数等3、在计算字符数组的时候strlen算的是实际有的字符数,而sizeof计算的是数组的大小举个例子:#include <stdio.h>#include <string.h>int main(){ char str[20] = "123456789"; printf("s.原创 2022-05-17 15:22:31 · 9107 阅读 · 2 评论 -
面试题之协程的定义与分类
协程的定义:协程是一种程序组件,是由子例程(过程、函数、例程、方法、子程序)的概念泛化而来的,子例程只有一个入口点且只返回一次,而协程允许多个入口点,可以在指定位置挂起和恢复执行。这是从直观上对协程的概念所做的理解,与1980年Marlin的论文中给出的定义类似,也是被广为引用的协程定义:协程的本地数据在后续调用中始终保持 协程在控制离开时暂停执行,当控制再次进入时只能从离开的位置继续执行协程的分类协程的分类:对称与非对称协程控制传递机制的不同区分出了对称(Symmetric)和非对原创 2022-05-09 11:25:53 · 204 阅读 · 0 评论 -
面试题 寻找链表中环入口 或者 寻找链表的中点 (快慢指针)
给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。解法1 C++:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* EntryNodeOfLoop(ListNode* pHead...原创 2022-04-04 17:52:44 · 626 阅读 · 0 评论 -
顺网科技面试题 select poll epoll多路io复用都说一说
基本介绍IO 多路转接也称为 IO 多路复用,它是一种网络通信的手段(机制),通过这种方式可以同时监测多个文件描述符并且这个过程是阻塞的,一旦检测到有文件描述符就绪( 可以读数据或者可以写数据)程序的阻塞就会被解除,之后就可以基于这些(一个或多个)就绪的文件描述符进行通信了。通过这种方式在单线程 / 进程的场景下也可以在服务器端实现并发。常见的 IO 多路转接方式有:select、poll、epoll。多线程 / 多进程并发主线程 / 父进程:调用 accept() 监测客户端连接请求 如果.原创 2022-04-04 17:47:39 · 1140 阅读 · 0 评论 -
鲁大师面试题 拥塞控制算法有哪些,这样实现?
先解释啥是拥塞控制:拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提:网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。拥塞控制方法慢开始: 所谓慢启动,也就是TCP连接刚建立,一点一点地提速,试探一下网络的承受能力,以免直接扰乱了网络通道的秩序。1) 连接建好的开始先初始化拥塞窗口cwnd大小为1,表明可以传一个MSS大小的数据。2) 每当收到一个ACK,原创 2022-04-04 17:33:45 · 440 阅读 · 0 评论 -
最近最少使用缓存(LRU) 面试必考
运用所掌握的数据结构,设计和实现一个LRU (Least Recently Used,最近最少使用) 缓存机制实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value)如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达...原创 2022-03-27 20:31:28 · 110 阅读 · 0 评论 -
HTTP请求详细过程
一. 输入地址 当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址。对于 google的chrome 的浏览器,他甚至会直接从缓存中把网页展示出来,就是说,你还没有按下 enter,页面就出来了。二.浏览器查找域名的IP 请求一旦发起,浏览器首先要做的事情就是解析这个域名,一般来说,浏览器会首先查看本地硬盘的 hosts 文件,看看其中有没有和这个域名对原创 2022-03-08 17:15:31 · 3542 阅读 · 0 评论