C++牛客知识点2

2023-12-16

提示:接上文


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:接上文

12月9号

来源: 牛客网公司真题_免费模拟题库_企业面试|笔试真题

1、题目1

在C++程序中,如有如下语句:

int b = 5;

int a = 10;

int &i = b;

int *j = &a;

int *&k = j;

请问下列哪个操作不能实现把a赋值为5。答案B。

A、a = i;

B、k = &b;

C、*k = i;

D、*j = *&b;

解释:答案作对了,但是我当时对int *&k = j;是很懵逼的,看了牛客评论区,感觉有个知识盲区,就是【int &a=b这种a是指针常量】

int *&k = j;          //这里也是个声明:代表k 是 j 的另一个别名,可以把 j 和 k 等价(类型是int*)

2、题目2

64 位电脑运行 C++ 结果输出(C)

#include <iostream>
using namespace std;
 
class A {
    char a[2];
public:
    virtual void aa() {};
};
 
class B : public virtual A {
    char b[2];
    char a[2];
public:
    virtual void bb() {};
    virtual void aa() {};
};
 
class C : public virtual B {
    char a[2];
    char b[2];
    char c[2];
public:
    virtual void cc() {};
    virtual void aa() {};
    virtual void bb() {};
};
 
int main() {
    cout << sizeof(A) << endl << sizeof(B) << endl << sizeof(C);
    return 0;
}

A、8 16 24

B、16 32 36

C、16 32 48

D、8 20 24

解释:

对于对象 A,包含一个虚函数指针,因此对齐到 8 字节,然后有 2 个 char 型,最后补齐到 8 字节整倍数,因此其长度为 16 。

对于对象 B,包含一个虚函数指针,也是对齐到 8 字节,然后是 4 个 char 型,最后补齐到 8 字节整倍数,变成 16 字节。然后加上对象 A 的大小,共计 32 字节。

对于对象 C,包含一个虚函数指针,也是对齐到 8 字节,然后是 6 个 char 型,最后补齐到 8 字节整倍数,变成 16 字节。然后加上对象 B 的大小,共计 48 字节。

GCC共享虚函数表指针,也就是说父类如果已经有虚函数表指针,那么子类***享父类的虚函数表指针空间,不在占用额外的空间,这一点与VC不同,VC在虚继承情况下,不共享父类虚函数表指针

这个题目我发现其实我并没有完全理解啊,当我想验证不加virtual继承的时候,突然发现没理解

验证代码

#include <iostream>
using namespace std;

class A {
    char a[2];
public:
    virtual void aa() {};
};

class B : public virtual A {
    char b[2];
    char a[2];
public:
    virtual void bb() {};
    virtual void aa() {};
};

class C : public virtual B {
    char a[2];
    char b[2];
    char c[2];
public:
    virtual void cc() {};
    virtual void aa() {};
    virtual void bb() {};
};

int main() {
    cout << sizeof(A) << endl << sizeof(B) << endl << sizeof(C);
    return 0;
}

//8
//16
//28


这边并没有出现8-16-24是因为sizeof(c) = sizeof(a) + sizeof(b) + 3*sizeof(char) * 2 + 4,加上对齐,就是sizeof(c)  = sizeof(a) + sizeof(b) + 8+4 = 28。

不加virtual结果是这样的

#include <iostream>
using namespace std;

class A {
    char a[2];
public:
    virtual void aa() {};
};

class B : public A {
    char b[2];
    char a[2];
public:
    virtual void bb() {};
    virtual void aa() {};
};

class C : public B {
    char a[2];
    char b[2];
    char c[2];
public:
    virtual void cc() {};
    virtual void aa() {};
    virtual void bb() {};
};

int main() {
    cout << sizeof(A) << endl << sizeof(B) << endl << sizeof(C);
    return 0;
}


//8
//12
//16

这边又不不懂了,评论区有人评论: 普通继承的时候共享,虚继承的时候不共享

这边还要仔细了解下啊

3、题目3

下面程序的执行结果:答案E

class A{
    public:
        long a;
};
class B : public A {
    public:
        long b;
};
void seta(A* data, int idx) {
    data[idx].a = 2;
}
int main(int argc, char *argv[]) {
    B data[4];
    for(int i=0; i<4; ++i){
        data[i].a = 1;
        data[i].b = 1;
        seta(data, i);
    }
    for(int i=0; i<4; ++i){
         std::cout << data[i].a << data[i].b;
    }
    return 0;
}

A、11111111

B、12121212

C、11112222

D、21212121

E、22221111

3、题目3

下面程序的执行结果:答案E

class A{
    public:
        long a;
};
class B : public A {
    public:
        long b;
};
void seta(A* data, int idx) {
    data[idx].a = 2;
}
int main(int argc, char *argv[]) {
    B data[4];
    for(int i=0; i<4; ++i){
        data[i].a = 1;
        data[i].b = 1;
        seta(data, i);
    }
    for(int i=0; i<4; ++i){
         std::cout << data[i].a << data[i].b;
    }
    return 0;
}

A、11111111

B、12121212

C、11112222

D、21212121

E、22221111

解释:

首先明确, A类 大小为 4字节;B 类大小为 8字节
因为B继承自A,基类A有一个long,4字节,派生类B继承A的long加上自身定义了一个long,4+4=8个字节。

所以,A类指针+1移动4字节,B类指针+1移动8字节,所以A类指针和B类指针的移动步长不相同

void seta(A* data, int idx)  { data[idx].a = 2;  }
由代码可知,此处传入的实参为B类,而形参却为A类,所以这里就是使用基类A类指针来操作,子类B类的数据。
因为A类和B类指针步长不同的原因,就会出现指针实际操作的目标地址,与想象中的目标地址不相同

下面展示,此例题中,因为指针步长不同的原因,所对应的操作地址

在这里插入图片描述

因此每执行一次此函数,就会进行4字节对应地址的数据替换。

所以答案就为22221111
因此类推,若将此函数void seta(A* data, int idx);中的A类改为B类,就不会存在指针步长不同的问题,答案就会是21212121

个人感想,这个题目还涉及到有个点就是实参和形参是基类和子类的时候,指向的数据内存其实是实现的内存空间,后面这个点加以注意。这个好像经常出现的情况,比如基类指针指向子类对象或者基类对象,情况是不用的。

12月10号

牛客网公司真题_免费模拟题库_企业面试|笔试真题

1、题目1

通过基类对象名、指针只能使用从基类继承的成员。答案A

A、T

B、F

解释:这个题目就涉及到一个问题,基类指针、子类指针、基类对象、子类对象等问题。

我来整理一下吧,

就是基类指针可以指向基类和子类对象。但是基类指针指向子类对象不能访问子类的新的成员。子类指针指向基类对象有风险。

基类指针指向子类对象需要使用虚函数virtual实现多态,即调用子类的重写的成员函数。基类指针指向基类虚函数,还是调用基类虚函数。即基类指针调用实际指向的对象中的虚函数。

基类指针只能访问基类的重定义函数。子类对象只能访问子类的重定义函数。

传参时,比如子类传给基类,这边搞不清了。不过上述都对应题目和解答,再回顾一下就可以。

看上述的解答,子类传参赋给基类,还是调用子类的虚函数。调用不是虚函数则调用基类的成员函数。基类传给基类不用说了。基类传给子类有风险。

下面代码是验证上面的表述

class A
{
    public:
    A()
    {

    }
    virtual ~A()
    {

    }
    void funWithoutVirtual()
    {
        std::cout << "it is A funWithoutVirtual()" << endl;
    }
    virtual func()
    {
        std::cout << "it is A func()" << endl;
    }
    int funcA()
    {
        std::cout << "it is A funcA()" << endl;
    }
};


class B : public A
{
    public:
    B()
    {

    }
    virtual ~B()
    {

    }
    void funWithoutVirtual()
    {
        std::cout << "it is B funWithoutVirtual()" << endl;
    }
    virtual func()
    {
        std::cout << "it is B func()" << endl;
    }

    int funcB()
    {
        std::cout << "it is B funcB()" << endl;
    }
};

void testFunc(A* a)
{
    a->func();          //看下子类传给基类是不是正常调用子类虚函数,验证是的
    //a->funcB();         //error: 'class A' has no member named 'funcB'
}

int main()
{

    A* a = new A;
    a->func();
    //a->funB();


    B b;
    b.funcA();      //验证子类对象可以基类成员,可以

    A* a2 = new B;
    a2->func();     //看下基类指针指向子类对象是否正常调用子类虚函数,验证是的

    testFunc(&b);


    return 0;
}

12月11号

牛客网公司真题_免费模拟题库_企业面试|笔试真题

1、题目1

在64位系统中,有如下类:

class C
{
public:
    char a;
    static char b;
    void *p;
    static int *c;
    virtual void func1();
    virtual void func2();
};

那么sizeof(C)的数值是(D)

A、9

B、17

C、32

D、24

解释:参考答案:应该是D sizeof(类)计算的是类中存在栈中的变量的大小,而类中的b和*c都是static静态变量,存在全局区中,因此不在计算范围之内,于是只剩下char a,void *p和两个virtual虚函数,a是char类型,占用一个字节,p是指针,在64位系统的指针占用8个字节,而两个虚函数只需要一个虚函数表指针,也是八个字节,加上类中的对齐方式(char a对齐时后面补上7个字节),故答案为24.

评论区一个评论:

1 sizeof是用来计算栈大小,不涉及全局区,故类的静态成员大小sizeof不涉及。

2 本题中的虚函数属于同一个类,故只需要一个指针指向虚函数表,所以在64位系统中占用8个字节。就算本题有100个虚函数,那么也只占用8个字节。

综上,占用栈空间的成员有:a, p, func1, func2,由于64位对其,故总空间为8+8+8=24字节。

2、题目2

以下程序的打印结果是(A)

#include<iostream>
using namespace std;
 
void swap_int(int a , int b)
{
    int temp = a;
    a = b;
    b = temp;
}
 
void swap_str(char*a , char*b)
{
    char*temp = a;
    a = b;
    b = temp;
}
 
int main(void)
{
    int a = 10;
    int b = 5;
    char*str_a = "hello world";
    char*str_b = "world hello";
    swap_int(a , b);.
    swap_str(str_a , str_b);
    printf("%d %d %s %s\n",a,b,str_a,str_b);
 
    return 0;
}

A、10 5 hello world world hello

B、10 5 world hello hello world

C、5 10 hello world world hello

D、5 10 world hello hello world

解释

#include<iostream>
using namespace std;

void swap_int_with_yinyong(int &a , int &b)
{
    int temp = a;
    a = b;
    b = temp;
}

void swap_int_with_pointer(int* a , int* b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}

void swap_str(char*a , char*b)
{
    char*temp = a;
    a = b;
    b = temp;
}

void swap_str_with_pointer(char**a , char**b)
{
    char*temp = *a;
    *a = *b;
    *b = temp;
}

int main(void)
{
    int a = 10;
    int b = 5;
    char*str_a = "hello world";
    char*str_b = "world hello";
    printf("before exchange: %d %d\n",a,b);
    swap_int_with_yinyong(a , b);
    printf("exchange a b with yinyong:");
    printf("%d %d\n",a,b);

    printf("\nbefore exchange: %d %d\n",a,b);
    swap_int_with_pointer(&a , &b);
    printf("exchange a b with pointer:");
    printf("%d %d\n",a,b);

    printf("\nbefore exchange: %s %s\n",str_a,str_b);
    swap_str(str_a , str_b);
    printf("exchange str useless:");
    printf("%s %s\n",str_a,str_b);

    printf("\nbefore exchange: %s %s\n",str_a,str_b);
    swap_str_with_pointer(&str_a , &str_b);
    printf("exchange str with pointer:");
    printf("%s %s\n",str_a,str_b);

    return 0;
}


//before exchange: 10 5
//exchange a b with yinyong:5 10
//
//before exchange: 5 10
//exchange a b with pointer:10 5
//
//before exchange: hello world world hello
//exchange str useless:hello world world hello
//
//before exchange: hello world world hello
//exchange str with pointer:world hello hello world

12月14号

牛客网公司真题_免费模拟题库_企业面试|笔试真题

1、题目1

下面有关c++内存分配堆栈说法错误的是?答案D

A、对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制

B、对于栈来讲,生长方向是向下的,也就是向着内存地址减小的方向;对于堆来讲,它的生长方向是向上的,是向着内存地址增加的方向增长。

C、对于堆来讲,频繁的 new/delete 势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。对于栈来讲,则不会存在这个问题

D、一般来讲在 32 位系统下,堆内存可以达到4G的空间,但是对于栈来讲,一般都是有一定的空间大小的。

解释:我做对了,但是对于D选项还是不太懂。看了解释,32位系统寻址大小是2^32=4,294,967,296Byte(字节)。2^32=4,294,967,296Byte(字节)/1024(KB)=4,194,304KB=4,194,304KB/1024(M)=4096M=4GB;

而且评论区有人这样说:一般0~3G是用户空间,3G~4G是内核空间, 所以堆内存不应该达到4G。

2、题目2

What’s the runtime behavior of below code piece?(单选B)

int *p = (int *)malloc(sizeof(int));
p = NULL;
free(p);

A、Compiling error: free can't be applied on NULL pointer

B、Memory leak happens

C、Dangling pointer is generated

D、May crash when free() is called with NULL input

解释:这题做对了。但是是查了下free空指针后。

free可以作用于空指针,不会报错。

Dangling pointer悬挂指针、空指针。指指针对应的内存空间已经释放了,但是指针依然指向那块内存空间。这种指针指向的内存空间释放后没有置空的指针,就叫Dangling pointer。处理方法,指向内存空间释放后指针置空。

12月15号

牛客网公司真题_免费模拟题库_企业面试|笔试真题

1、题目1

下列说法错误的是(ABCD)

A、派生类不能访问通过私有继承的基类的保护成员

B、多继承的虚基类不能够实例化

C、如果基类没有默认构造函数,派生类就应当声明带形参的构造函数

D、基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现

解释:我自己选的是C。

这里还有个知识点盲区就是虚基类。

未完待续......


总结

总结牛客C++题目错题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++牛客知识点2 的相关文章

  • 如何在特定时间以毫秒精度触发 C# 函数?

    我有两台计算机 它们的时间通过 NTP 同步 确保时间仅相差几毫秒 其中一台计算机将通过 TCP 向另一台计算机发送一条消息 以在两台计算机上的未来指定时间启动某个 c 函数 我的问题是 如何在特定时间以毫秒精度 或更好 触发 C 中的函数
  • ASP.NET Web 应用程序中的身份验证遇到问题

    我正在尝试对从登录页面登录我的 Web 应用程序的用户进行身份验证 我正在使用本教程 http support microsoft com kb 301240作为指南 它几乎准确地解释了我希望做什么 但是当我输入用户名和密码时 验证不起作用
  • 自动映射器多对多 stackoverflowException

    我遇到以下映射的堆栈溢出 Mapper CreateMap
  • 局部函数声明有什么用处吗?

    大多数像我这样的 C 程序员都曾犯过以下错误 class C int main C c declares a function c taking no arguments returning a C not as intended by m
  • 在没有 epsilon 的情况下可以将浮点数与 0.0 进行比较吗?

    我知道 要比较两个浮点值 需要使用一些 epsilon 精度 因为它们并不精确 但是 我想知道是否存在边缘情况 我不需要那个 epsilon 特别是 我想知道这样做是否总是安全的 double foo double x if x lt 0
  • 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?

    我有一个新安装的 MySQL 服务器 它监听 localhost 3306 从 Qt 应用程序连接到它的正确方法是什么 原来我需要将MySQL添加到ODBC数据源 我在遵循这个视频教程后做到了这一点 https youtu be K3GZi
  • 嵌入资源文件的路径

    我的资源文件中有一个图标 我想引用它 这是需要图标文件路径的代码 IWshRuntimeLibrary IWshShortcut MyShortcut MyShortcut IWshRuntimeLibrary IWshShortcut W
  • ContentDialog 未与 UWP 中心对齐

    据我所知 ContentDialog的默认行为应该是使其在 PC 上居中并在移动设备上与顶部对齐 但就我而言 即使在 PC 上我也将其与顶部对齐 但我不明白发生了什么 我正在使用代码隐藏来创建它 这是我正在使用的代码片段 Creates t
  • 将 dataGridView 中选定的行作为对象检索

    我有一堂这样的课 public partial class AdressBokPerson public long Session get set public string F rnamn get set public string Ef
  • opencv中如何去除二值图像噪声?

    将图像转换为二值图像 黑白 后如果有任何噪音怎么办 我消除了那些不需要的噪音 您可以看到下图的黑色区域内有一些白噪声 我该如何去除噪声 使用opencv http img857 imageshack us img857 999 blackn
  • 如何减少 MinGW g++ 编译器生成的可执行文件的大小?

    我有一个简单的 Hello world C 程序 在 Win XP 下由 MinGW g 编译器编译为 500kB 可执行文件 有人说这是由于iostream的库和静态链接libstdc dll Using s链接器选项有点帮助 减少了 5
  • 如何自定义 Google 测试失败消息?

    我编写了一个如下所示的 Google 测试 它将一些计算值与 CSV 文件中预期存储的值进行比较 class SampleTest public testing Test public void setupFile const std st
  • 如何从外语线程调用Python函数(C++)

    我正在开发一个程序 使用 DirectShow 来抓取音频数据 媒体文件 DirectShow 使用线程将音频数据传递给回调 我的程序中的函数 然后我让该回调函数调用另一个函数 Python 中的函数 我使用 Boost Python 来包
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file
  • 您对“大规模 C++ 软件设计”的看法 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 正在阅读亚马逊评论 https rads stackoverflow com amzn click com 0201633620 and ACC
  • 在 C# 中使用命名空间别名有什么好处? [复制]

    这个问题在这里已经有答案了 使用命名空间别名有什么好处 仅仅是为了简化编码吗 仅当与类发生冲突时我才使用名称空间别名 对我来说 这根本没有简化 我的意见是 如果没有必要 就不要使用
  • C 变量声明的效率 [重复]

    这个问题在这里已经有答案了 例如 在 C 中声明一个变量需要多长时间int x or unsigned long long var 我想知道它是否会让我的代码在类似的事情中更快 for conditions int var 0 code 这
  • 为什么在构造函数中设置字段是(或不是)线程安全的?

    假设您有一个像这样的简单类 class MyClass private readonly int a private int b public MyClass int a int b this a a this b b public int
  • 如何在 C 中创建最低有效位设置为 1 的掩码

    这个功能如何运作 最低有效 n 位设置为 1 的掩码 Example n 6 gt 0x2F n 17 gt 0x1FFFF 我根本不明白这些 尤其是 n 6 gt 0x2F 另外 什么是面膜 通常的方法是采取1 并将其左移n位 这会给你类
  • 如何使用 C# 为 azure devops 变量赋值

    我有 selenium C 测试脚本 可以从浏览器获取令牌 我有两个 azure devops 任务 一个用于执行 selenium 测试 另一个用于执行 API 测试 我想将 selenium 测试获取的令牌传递给 API 测试执行任务

随机推荐

  • google Protobuf

    之前一直把第三方开源库protobuf编译 但是么用过没了解过 这次正好看到这篇文章 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 网易看到的protobuf的新闻 然后百度查到原文 记录一下
  • Jenkins部署python接口自动化测试

    一 点击新建Item 二 指定源码和分支 私钥位置 C Users Administrator ssh 文件下 三 构建脚本编写 四 构建后操作 指定输出的 allure 结果目录 总结 感谢每一个认真阅读我文章的人 作为一位过来人也是希望
  • arm平台编译so文件回顾

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 几个点 二 回顾过程 1 上来就执行Makefile 2 编译第三方开源库 a文件 2 1 build sh脚本 2 2 Make
  • 聊聊Api接口优化的几个方法!

    我负责的系统到2021年初完成了功能上的建设 开始进入到推广阶段 随着推广的逐步深入 收到了很多好评的同时也收到了很多对性能的吐槽 刚刚收到吐槽的时候 我们的心情是这样的 当越来越多对性能的吐槽反馈到我们这里的时候 我们意识到 接口性能的问
  • 14:00面试,14:08就出来了,问的问题有点变态。。。。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到5月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • 性能测试工具 —— 掌握JMeter性能测试工具的入门要点!

    JMeter 是一款很优秀的开源性能测试工具 从性能工具的原理划分 Jmeter工具和其他性能工具在原理上完全一致 工具包含4个部分 1 负载发生器 通过多线程模拟并发 对目标产品产生负载 2 用户运行器 通常是一个脚本运行引擎 用户运行器
  • 报错处理集

    这个报错处理集的错误来源于编译arm平台的so文件产生的 但是后续可以补充成linux一个大的错误处理集 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 第一次整理的时间是2023年12月8日10
  • 测出Bug就完了?从4个方面教你Bug根因分析

    01 现状及场景 1 缺失bug根因分析环节 工作10年 虽然不是一线城市 也经历过几家公司 规模大的 规模小的都有 针对于测试行业很少有Bug根因环节 主流程基本上都是测试提交bug 开发修改 测试验证 发送报告 测试环节结束 往往有下面
  • 欧拉操作系统

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 这个章节主要是介绍一下欧拉操作系统 欧拉系
  • STM32超声波——HC_SR04

    文章目录 一 超声波图片 二 时序图 三 超声波流程 四 单位换算 五 取余计算 六 换算距离 七 超声波代码 一 超声波图片 测量距离 2cm 400cm 二 时序图 1 以下时序图要先提供一个至少10us的脉冲触发信号 告诉单片机我准备
  • 商城免 费搭建之java鸿鹄云商 java电子商务商城 Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c

    saas云平台 打造全行业全渠道全场景的saas产品 为经营场景提供一体化解决方案 门店经营区域化 网店经营一体化 本地化 全方位 一站式服务 为多门店提供统一运营解决方案 提供丰富多样的营销玩法覆盖所有经营场景 助力商家成功 系统稳定压倒
  • Jmeter+ant+jenkins接口自动化测试

    平台简介 一个完整的接口自动化测试平台需要支持接口的自动执行 自动生成测试报告 以及持续集成 Jmeter 支持接口的测试 Ant 支持自动构建 而 Jenkins 支持持续集成 所以三者组合在一起可以构成一个功能完善的接口自动化测试平台
  • Java版企业电子招标采购系统源码—鸿鹄电子招投标系统-企业战略布局下的采购寻源

    项目说明 随着公司的快速发展 企业人员和经营规模不断壮大 公司对内部招采管理的提升提出了更高的要求 在企业里建立一个公平 公开 公正的采购环境 最大限度控制采购成本至关重要 符合国家电子招投标法律法规及相关规范 以及审计监督要求 通过电子化
  • Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis tbms

    功能描述 1 门户管理 所有用户可在门户页面查看所有的公告信息及相关的通知信息 主要板块包含 招标公告 非招标公告 系统通知 政策法规 2 立项管理 企业用户可对需要采购的项目进行立项申请 并提交审批 查看所有的立项信息 主要功能包含 招标
  • Java版直播商城规划:电商源码、小程序、三级分销与免费搭建全攻略

    SAAS云平台 打造全行业全渠道全场景的SaaS产品 为店铺经营场景提供一体化解决方案 门店经营区域化 网店经营一体化 本地化 全方位 一站式服务 为多门店提供统一运营解决方案 提供丰富多样的营销玩法覆盖所有经营场景 助力商家成功 系统稳定
  • 如何使用Fiddler进行弱网测试

    测试APP web经常需要用到弱网测试 也就是在信号差 网络慢的情况下进行测试 我们自己平常在使用手机APP时 在地铁 电梯 车库等场景经常会遇到会话中断 超时等情况 这种就属于弱网 普通的弱网测试可以选择第三方工具对带宽 丢包 延时等模拟
  • 字节跳动面试挂在2面,复盘后,决定二战.....

    先说下我基本情况 本科不是计算机专业 现在是学通信 然后做图像处理 可能面试官看我不是科班出身没有问太多计算机相关的问题 因为第一次找工作 字节的游戏专场又是最早开始的 就投递了 投递的是游戏测试开发岗 字节是自己投的第一家公司 也是第一家
  • 【C++】手撕string思路梳理

    目录 基本思路 代码实现 1 构建框架 2 构建函数重载 3 迭代器 4 遍历string 5 resetve 开空间 insert任意位置插入push back append 按顺序依次实现 6 erase删除 clear清除 resiz
  • 醒醒吧,这才叫自动化测试最全教程,看完可就业!

    最近看到很多粉丝在后台私信我 叫我做一期自动化测试的教程 其实关于这个问题 我也早就在着手准备了 我录制了一整套完整的Python自动化测试的教程 都上传在网盘里 大家有兴趣的可以去看一下 一 自动化测试概念 Python自动化测试就是把以
  • C++牛客知识点2

    提示 接上文 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门技术也越来越重要 很多人都开启了学习机器学习 本文就