IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 面试题目汇总 -> 正文阅读

[C++知识库]面试题目汇总

1,for循环的时间复杂度

?

for(int i=0;i<N;i++)
{
   for(int j=i;j<N;j++)
   {
     //此处运行次数:N+N-1+N-2+...+1=1+2+3+...+N=N(N+1)/2
   }
}
for(int i=0;i<N;i++)
{
   for(int j=i+1;j<N;j++)
   {
     //此处运行次数N-1+N-2+N-3+...+1=1+2+3+...+N-1=N(N-1)/2
   }
}

2,变量的声明和定义

3,关于存储区域描述错误的是

char buff[] = "abc";//栈
char *pStr1 = "123456";//pStr存储在栈区,“123456”存储在常量区
char *pStr2 = new char[256];//pStr2在堆区,分配的内存也在堆区

4,友元函数可以访问 类的公有、保护和私有成员

5,联合程序的输出结果 266?

union {
    int i;
    char x[2];
}a;
int main(){
    a.x[0] = 10;
    a.x[1] = 1;
    printf("%d",a.i);
    return 0;
}

6,构造函数和析构函数

7,反转链表

struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};

ListNode* reverseList(ListNode* head) {
    ListNode* curr = head;
    ListNode* prev = nullptr;
    while (curr){
        ListNode* next = curr->next;
        curr->next = prev;
        prev = curr;
        curr = next;
    }
    return prev;
}

8,指定数组nums,将数组中的0全部移动到数组的末尾,维持其他所有非0元素的相对位置,空间复杂度为o(1),时间复杂度为O(n)

#include <vector>
#include <iostream>

std::vector<int> MoveAllZeroToTall(std::vector<int>& nums){
    int n = nums.size();
    int left = 0;
    int right = 0;
    while (right < n){
        if (nums[right]){
            std::swap(nums[left],nums[right]);
            left++;
        }
        right++;
    }
    return nums;
}

int main(){
    std::vector<int>nums{0,8,0,12,34,0,89};
    nums = MoveAllZeroToTall(nums);
    for (int i = 0; i < nums.size(); ++i) {
        std::cout << nums[i] << " ";
    }
}

9,linux 常用命令

10,下面哪些不属于字节流?

11,关于PV操作的理解

12 内存的静态分配方式和动态分配方式

13 MySQL的数据库事务的隔离级别 对资源消耗最大的是

14 Linux扩展虚拟内存? 将/dev/sda5格式化为交换分区的指令是

15 关于epoll叙述正确的是

EPOLL事件有两种模型 Level Triggered (LT) 和 Edge Triggered (ET):

  • LT(level triggered,水平触发模式)是缺省的工作方式,并且同时支持 block 和 non-block socket。在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作。如果你不作任何操作,内核还是会继续通知你的,所以,这种模式编程出错误可能性要小一点。
  • ET(edge-triggered,边缘触发模式)是高速工作方式,只支持no-block socket。在这种模式下,当描述符从未就绪变为就绪时,内核通过epoll告诉你。然后它会假设你知道文件描述符已经就绪,并且不会再为那个文件描述符发送更多的就绪通知,等到下次有新的数据进来的时候才会再次出发就绪事件。如果一直不对这个fd进行I/O操作,导致fd变为未就绪时,内核同样不会发送更多的通知,因为only once。所以这种方式下,出错率比较高,需要增加一些检测程序。

epoll的优点:

  • 没有最大并发连接的限制,能打开的FD的上限远大于1024(1G的内存上能监听约10万个端口);
  • 效率提升,不是轮询的方式,不会随着FD数目的增加效率下降。只有活跃可用的FD才会调用callback函数;即Epoll最大的优点就在于它只管你“活跃”的连接,而跟连接总数无关,因此在实际的网络环境中,Epoll的效率就会远远高于select和poll。
  • 内存拷贝,利用mmap()文件映射内存加速与内核空间的消息传递;即epoll使用mmap减少复制开销。

1、listen fd,有新连接请求,对端发送普通数据?触发EPOLLIN。
16 接口中 定义static方法正确的是

static void method1(){};  个人感觉
static protected void method2(){}
static void method4();
static public void method3();

?17 需要被重写的方法 使用哪个关键字进行修饰?

18? 完全二叉树

preview

19? 等概率下 查找成功的平均查找长度

20 查看linux系统中/etc/fstab文件的第一列和第三列

21 Kruskal 和 Prim算法相关知识

22 贪心算法 的理解

23 对表执行 select 操作 不会激活 触发器

  • 触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等

24 解决临界区资源互斥应该遵循的原则

25? 代码 消消乐?

?

#include <iostream>
#include <vector>
int n;

int main(){
    std::cin >> n;
    getchar();
    std::string input_string{};
    std::getline(std::cin,input_string);
//    std::cout << input_string;
    std::vector<int>base(4,0);
    for (int i = 0; i < n; ++i) {
        base[input_string[i]-'0']++;
    }
    std::cout << std::min(base[0],base[1]) * 2 + std::min(base[2],base[3]) * 2 << std::endl;

//    for (int i = 0; i < n; ++i) {
//        std::cout<< input_nums[i] << " ";
//    }
}

26 web页面级优化描述

27 数组基本有序的时候,下面哪个算法对数组排序的时间复杂度最低

28 进程进入等待状态有哪几种方式

29 栈的入栈序列为 1,2,3,.......,n 出栈顺序为P1,P2,P3 .......Pn,如果P2 = 3,P3的可能取值的个数是 n-1

30? 以下哪种http状态下,浏览器会产生两次http请求?( )A 304;B 404 C 403? D 302

  • 302临时重定向,会产生两次http请求,软件开发中一般用于跨域请求先请求跨域凭证,再访问跨域后的网络资源。
  • 304:客户端申请的资源存在,但是条件不满足
  • 302:临时重定向
  • 404:NOT FOUND
  • 400:存在语法错误

31?容器底层使用了namespace,linux内核中 PID namespace是如何实现的

32? ping命令是属于tcp/ip的哪一层?应用层

32??如果事务T获得了数据项Q上的排它锁,则T对Q ( ? )? 既可以写也可以读

  • 链接:https://www.nowcoder.com/questionTerminal/30da7fd9af91446d9b71b162eb8070b2
  • 来源:牛客网
  • 共享锁【S锁】 又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
  • 排他锁【X锁】又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读取和修改A。

33 n个数值选出最大的m个数值(3<m<n) 最小的时间复杂度是?

  • 最简单的方法:将n个数排序,排序后的前k个数就是最大的k个数,这种算法的复杂度是O(nlogn)
  • O(n)的方法:利用快排的patition思想,基于数组的第k个数来调整,将比第k个数小的都位于数组的左边,比第k个数大的都调整到数组的右边,这样调整后,位于数组右边的k个数最大的k个数(这k个数不一定是排好序的)
  • O(nlogk)的方法:先创建一个大小为k的最小堆,接下来我们每次从输入的n个整数中读入一个数,如果这个数比最小堆的堆顶元素还要大,那么替换这个最小堆的堆顶并调整
  • n个数值选出最大m个数(3<m<n)的最小算法复__牛客网

34 6行5列 数组按照列序为主要顺序进行存储,基地址为1000,每个元素占据2个存储单元,则第三行第4列的元素(假定无第0行第0列)的地址是

  • 1042 注意 是按照列进行存储

35 将N条长度均为M的有序链表进行合并,合并以后的链表也保持有序,时间复杂度为()?

36 邻接表表示图的时候 拓扑排序时间复杂度

时间复杂度?

void recursive(int n,int m,int o){
    if (n <= 0){
        printf("%d,%d\n",m,o);
    } else{
        recursive(n-1,m+1,o);
        recursive(n-1,m,o+1);
    }
}

对于IP地址 130.63.160.2? MASK为255.255.255.0? 子网号为?? 未解决

  • 160
  • 63.160
  • 160.2
  • 130.63.160?

主机甲和主机乙之间建立了一个TCP连接,双方持续有数据传输,且数据没有差错和丢失。如果甲收到一个来自乙的TCP段,这个段的序号为1913,确认序号为2046,有效载荷为100字节,则甲立即发送给乙的TCP段的序号和确认序号分别是?

  • 2046 2013
  • 2047 2012
  • 2046 2012
  • 2047 2013

建立连接的时候,哪一个数据包发送顺序是正确的TCP握手协议过程??

  • SYN+ACK ,SYN+ACK ,SYN
  • SYN,SYN,ACK
  • SYN,SYN+ACK,SYN+ACK
  • SYN,SYN+ACK,RST
  • 都不正确

主机甲和主机一建立一个TCP连接,甲的拥塞控制初始的阈值是32kb,甲向乙始终以MSS=1kb大小的段发送数据,并一直有数据 的发送,乙为这个连接分配的16kb的接收缓存,并对每个数据段进行确认,忽略传输的延迟,如果乙收到的数据全部存入缓存,不被取走,则甲从连接建立成功时刻起,未发送超时的情况下,经过了4个RTT之后,甲的发送窗口大小是?

  • 8kb
  • 16kb
  • 1kb
  • 32kb

某个主机的ip地址是180.80.77.55 子网掩码是255.255.252.0 如果这个主机向所在子网发送广播分组,则目的地址可以是?

  • 180.80.76.255
  • 180.80.77.255
  • 180.80.76.0
  • 180.80.79.255

对于第二范式的理解正确的是?

  • 在第一范式的基础上,任何非主属性不依赖于其他非主属性
  • 在第一范式的基础上,非码属性必须完全依赖与码
  • 数据库的每一列都是不可分割的原子数据项
  • 上述说法均错误

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:08:38  更:2021-09-14 13:08:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 13:47:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计