C++技术面试题目

7-1 程序填空题2 (12分) 补全以下程序,使得程序输出结果与下述结果一致。 public class Main { public static void main(String[] args) { Test test = new Test(true); } } class Test { public Test(){ System.out.println(“Constructor one invoked!”); } public Test(int x){ //此处添加代码 System.out.println(“Constructor 阅读详情
 □第一题
class Base{
public:
  Base();
  ~Base();
  int getBaseNum();

private:
  int baseNum;
};

class A:public Base{
public:
  A();
  ~A();
  float getBaseNum();

private:
  float baseNum;
}
Question1: What concept is represented(表现) by the sample code above?
Choice 1: Polymorphism(继承)
Choice 2: Inheritance(多态)
Choice 3: Function overloading(函数覆盖)
Choice 4: Recursion(递归)
Choice 4: Virtual Function(虚函数)
解答:因为函数名参数相同,如果是覆盖则基类里面必须要有virtual关键字。

□第二题
typedef const char* monthTable[3];
Question2:Referring to the code above, which one of the following choices creates two monthTable arrays and initializes one of the two?
Choice1: monthTable,winter, spring;
Choice2: monthTable winter,spring;
Choice3: monthTable(winter,spring={"March","April","May"});
Choice4: monthTable winter,spring={"March","April","May"};
Choice5: monthTable,winter,spring={"March","April","May"};

□第三题
class myclass
{
  int a;
public:
  myclass(int x);
  int get();
}

myclass::myclass(int x){a=x;}
int myclass::get(){return a;}

int main()
{
  myclass ob(120);
  myclass *p;
  p = &ob;
  return 0;
}
Question3:Referring to the sample code above, how do you print the value of the object "ob"?
Choice1 cout << ob->get();
Choice2 cout << ob.get();
Choice3 cout << ob->&get();
Choice4 cout << p.get(ob);
Choice5 cout << get(ob.int a());

□第四题
class C1{
public:
  C1(){};
  C1(const C1& rhs){}
  void sayHello(){ std::cout << "Hello";}
};

class C2: public C1{
public:
  C2(){};
  C2(const C2& rhs){}
  void sayHello1(C1& rhs){rhs.sayHello();};
  void sayHello2(C1 c1){c1.sayHello();};
};

int main()
{
  C2 c2;
  C1 c1(c2);

  c2.sayHello1(c1);
  c2.sayHello2(c1);
  return 0;
}
Question:From the sample code above,how many times are the copy constructors invoked;
Choice1: C1's copy constructor is invoked zero times.
         C2's copy constructor is invoked one time.
Choice2: C1's copy constructor is invoked one time.
         C2's copy constructor is invoked two times.
Choice3: C1's copy constructor is invoked two times.
         C2's copy constructor is invoked zero times.
Choice4: C1's copy constructor is invoked two times.
         C2's copy constructor is invoked one time.
Choice5: C1's copy constructor is invoked three times.
         C2's copy constructor is invoked zero times.

□第五题
void f()
{
  int n = std::rand() % 3;
  if (n == 1)
    throw "1";
  if (n == 2)
    throw "2";
  if (n == 3)
    throw 4.5;
}

int main()
{
  try{
   f();
  }catch(...){
    return 1;
  }catch(int i){
    return 2;
  }catch(const char* cp){
    return 3;
  }
}

Question5 What is the result of executing the sample code above?
Choice1: It is unknown;it depends on the random number generated in "f()".
Choice2: The return code will always be a 1 since all exceptions will be caught at the first catch().
Choice3: The return code will always be a 2 since the random number generator was not seeded properly.
Choice4: It is unknown;it is implementation-specific.
Choice5: There is a syntax error because catch(...) is not the last catch clause.
解答:此题应该选择5。

□第六题
int f(int i){
  static int c=0;
  c++;
  switch(i){
  case 1:return f(4); break;
  case 2:return c; break;
  case 3:break;return 0;
  case 4:return f(5); break;
  case 5:return f(7); break;
  default: return c;
  }
  return f(2);
}

Question5: Referring to the sample code above, what is the return value for the function "f" when called for the first time with an initial value of 1?
Choice1: 1
Choice2: 2
Choice3: 3
Choice4: 4
Choice5: 5
解答:此题应该选择4。

□第七题
Question7: Which one of the following declarations is legal C++?
Choice1: using::std;
Choice2: using namespace std::;
Choice3: using std namespace;
Choice4: using namespace ::std::rel_ops;
Choice5: using std::;

□第八题
std::string s="abcdefabcabc";
Question8: Referring to the sample code shown above, which one of the following statements returns the position within "s" that marks the beginning of the last occurrence of "abc"?
Choice1: s.rfind("abc", std::string::npos);
Choice2: s.rfind("abc", 0, s.length());
Choice3: s.find_last_of("abc",std::string::npos,std::string::npos);
Choice4: s.find_last_of("abc",0,s.length());
Choice5: s.rfind("abc", 0, std::strlen("abc"));
解答:find_last_of返回最后一个位置;rfind逆向搜索;此题应该选择1。

□第九题
int x = 1;

for (int i=1; i < 5; i++)
{
  if (i = 3)
    continue;
  else if (i = 4)
    break;
  x++;
}

Question9: What is true about the sample code above?
Choice1: At the end of the loop,"x" holds the value 1.
Choice2: At the end of the loop,"x" holds the value 2.
Choice3: At the end of the loop,"x" holds the value 3.
Choice4: At the end of the loop,"x" holds the value 4.
Choice5: "x" is never incremented.

□第十题
class A
{
public:
  A():i(1){}
  int i;
};

class B : public A
{
public:
  B():j(2){}
  int j;
};

int f(A *p,int count)
{
  int total = 0;
  for (int i = 0; i< count; ++i)
  {
    total += p++->i;
  }
  return (total);
}

int main()
{
  B b[11];
  cout << f(b, 10);
  return 0;
}
Question10: Given the sample code above, what is the output?
Choice1: 10
Choice2: 11
Choice3: 15
Choice4: The output is undefined.
Choice5: The code does not compile.

□第十一题
An error occurred when compiling the following code:

class Foo{
public:
  Foo(int i){}
};
class Bar : virtal Foo {
public:
  Bar(){}
};

Bar b;

Question11:Referring to the scenario above,which one of the following changes allows the code to compile successfully?
Choice1: Adding "Foo(0)" to the "Bar::Bar" initializer list
Choice2: Adding "Foo(0)" to the "Bar" constructor
Choice3: Adding a constructor to "Bar" that takes an int parameter
Choice4: Adding a copy constructor to the "class Foo"
Choice5: Adding a virtual constructor to the "class Bar"
分析:虚继承,指出希望共享其虚基类的状态,对给定虚基类,无论该类在派生层次中作为虚基类出现多少次,只继承一个共享的基类子对象。
解答:没有默认构造函数则代码出错。Bar():Foo(0){}答案是Choice1。

□第十二题
class Myclass{};
static Myclass* MyFunction(int*);
Question12: Refering to the sample code above, which one of the following is the correct declararion for a function pointer to MyFunction?
Choice1: Myclass* (*f)(int*);
Choice2: (static Myclass*) (*f)(int*);
Choice3: (Myclass* f)(int*);
Choice4: Myclass* (*f)int*;
Choice5: Myclass* (*f(int*));
解答:此题答案是Choice2。

□第十三题
std::string something;
/*....*/
if ("STRING LITERAL" == something)
  std::cout << "String are Equal" << std::endl;
Question13: How does a C++ compiler interpret(解释说明)the == operator in the sample code above?
Choice1: As the == operator overloaded by the string class
Choice2: As a built-in operator
Choice3: As a cast(投掷) from std::string to (char*) followed by a comparison(比较).
Choice4: As an overloaded == operator.
Choice5: As a syntax error.
解答:这道题应该选4。

□第十四题
Question14: Which one of the following expressions is an example of a definition?
Choice1: namespace mystd = std;
Choice2: extern int i;
Choice3: typedef unsigned char byte;
Choice4: byte f();
Choice5: struct mystruct;
解答:这道题应该选4。Choice1没有这种用法,Choice2不是定义而是外部声明,Choice3是声明一个新的类型。
     Choice5 这个显然不成立,应该struct mystruct aa;才算定义。

□第十五题
for (int i=0,r = std::strlen(buf)-1;i < r;i++,r--)
{
  buf[i]= buf[r]^buf[i];
  buf[r]= buf[r]^buf[i];
  buf[i]= buf[r]^buf[i];
}
Question15: Referring to the sample code above, what are the contents of "buf" after the code is executed?
Choice1: The original content of "buf" has been reversed.
Choice2: The buffer has remained unchanged.
Choice3: Each member of the array "buf" has been incremented by 10.
Choice4: Each member of the array "buf" has been set to zero.
Choice5: The buffer has been ciphered using a caesar cipher algorithm.
解答:此题答案应该是1。

□第十六题
char* p = "hello";
char p2[] = "world";
char *p3 = new char[12];

std::strcpy(p2,p1);
std::strcpy(p3+5," ");
std::strcpy(p3+std::strlen(p2),p2);
std::strcpy(p1,p2);
std::strcpy(p2,p1);
Question16: Referring to the sample code above, which numbered line of code causes a runtime error?
Choice1: Line5
Choice2: Line6
Choice3: Line7
Choice4: Line8
Choice5: Line9
解答:此题答案是4。

□第十七题
A function threw an exception of type std::unexpected.

Question17:Referring to the scenario(想定)above,what is a logical(必然合乎逻辑)cause?
Choice1: An exception was thrown in which the type was not in the function's exception specification.
Choice2: An exception thrown is not yet caught and the destructor for an object throws an exception during the stack unwinding.
Choice3: An exception of type std::unexpected can never be thrown in a well-formed C/C++ program.
Choice4: The application was targeting one operating system,but another operating system is being used,which generated the exception.
Choice5: There was no catch all enabled in scope closest to the function call.


□第十八题
class X{
public:
 const X& operator=(const X& rhs){
   this->n = rhs.n;
   return *this;
 }
 
 const X& operator+(const X& rhs){
   this->n += rhs.n;
   return *this;
 }

 const X& operator+(const int m){
   this->n += m;
   return *this;
 }

private:
 int n;
};

int main()
{
   X a,b,c;
   //statement goes here.
}

Question18: Given the sample code above, which, if any, of the following statements CANNOT be performed?
Choice 1: a = b;
Choice 2: a = b + c;
Choice 3: a = b + 5;
Choice 4: a = b + c + 5;
Choice 5: They are all legal.
解答:此题答案是4。

□第十九题
Question 19: Which one of the following statements replaces all elements in an integer sequence that is delimited by start and end and in which the value is less than 10 with 10?
Choice 1: std::replace_if(start, end, std::bind2nd(std::less<int>(),10),10);
Choice 2: std::replace(start, end, std::bind2nd(std::less<int>(),10),10);
Choice 3: std::replace_if(start, end, std::bind2nd(std::less<int>,10),10);
Choice 4: std::replace(start, end, std::bind2nd(std::less<>(10)),10);
Choice 5: std::replace_if(start, end, std::bind2nd(std::less(10)),10);
解答:此题答案是2。

□第二十题
class A
{
public:
 A(int j=0):i(j){}
 A(const A& that) : i(that.i){}
 A& operator=(const A& that)
 {
  i = that.i; return (*this);
 }
 friend class B;
private:
 int i;
}
class B : public A
{
public:
  B(const B& that){std::cout << that.i;}
};
Question20: Given the class declaration shown above, what is the purpose of the friend declatation?
Choice 1: It serves no purpose and is unnecessary.
Choice 2: It gives "A" access to "that.i" in the copy constructor for "A"
Choice 3: It gives "B" access to "that.i" in the copy constructor for "B"
Choice 4: It gives "B" access to "A()"
Choice 5: It gives "A" access to "that.i" in the assignment operator for "A".

□第二十一题
try{
  //do something that generates an exception
}
catch(...){
  // ???
}
Question 21: Referring to the sample code above, which statement shall replace "//???" in order to send the caught(捕捉) exception to the next handler?
Choice 1: raise;
Choice 2: rethrow();
Choice 3: throw;
Choice 4: throw();
Choice 5: throw(...);

□第二十二题
class A
{protected:
  virtual void Func(){}
};

class B : virtual A
{public:
 void Func(int i = 0){}
}

class C : virtual B
{public:
 void Func(int i = 0){}
}

int main()
{
 C c;
 c.Func();
 return 0;
}

Question 22: Given the above sample code, which one of the following statements it true?
Choice 1: A::Func() is visible through class C.
Choice 2: B::Func() overrides A::Func();
Choice 3: C::Func() overrides B::Func();
Choice 4: A::Func() is visible using a class B variable.
Choice 5: C::Func() overrides A::Func();

□第二十三题
1: int i;
2: long double d;
3: unsigned float f;
4: char const *s;
5: signed const int *p;
Question 23:Referring to the sample code above, which one of the following definitions is NOT valid?(有充分证据的)
Choice 1: Line 1
Choice 2: Line 2
Choice 3: Line 3
Choice 4: Line 4
Choice 5: Line 5

C++面试题目及面试经验 C++相关知识学习 阅读详情

相关推荐

【Linux】C++后台开发面试

本文将讲述(Linux)服务器后台开发岗位的要求,包含了大部分会遇到的面试题目。掌握文中提到的技术,也算少许入门水平了,此文既是面经,也是后台开发的入门手册。无论社招还是校招,都可作为一个参考。 本文内容收集自知乎和其他博客,在此整理成章。 校招:以C++基础为主,数据结构和常见算法(ACM经典题目)是必须掌握的。 技术类面试跟学校的经验 / 社团经验 / 学习成绩 挂钩不太高,当然不是说两者...

不知鲸又是鱼 6393

R7-17 程序填空题2

补全以下程序,使得程序输出结果与下述结果一致。 public class Main { public static void main(String[] args) { Test test = new Test(true); } } class Test { public Test(){ System.out.println("Constructor one invoked!"); } public Test(int x){

hu_66666的博客 1157

读书笔记:深度学习入门-基于python的理论与实现(俗称鱼书)

终于从头到尾把鱼书看完啦,真的是非常入门,非常查漏补缺,对新手很友好,对有一定基础的人也非常不错。看完不复习等于没看,所以今天开始复盘,顺便写这篇读书笔记。希望分享给没看过这本书或者看过这本书的同僚们参考,欢迎大家指教。我将从第三章神经网络开始复习,前两章内容书里已经非常基础and清楚了。(会持续更新滴).........

博客而已 1万+

7-2 程序填空题2

## 输入格式: 无 ### 输出格式: 无 ### 输入样例: ```in ``` ### 输出样例: ```out Constructor one invoked!补全以下程序,使得程序输出结果与下述结果一致。

m0_73366316的博客 819

使用Kolla部署多节点Rocky版本OpenStack

openstack命令行客户端使用,post-deploy会在 /etc/kolla/目录下生成文件admin-openrc.sh。每次使用openstack命令时执行source /etc/kolla/admin-openrc.sh(manager节点执行)source /etc/kolla/admin-openrc.sh (将文件内容复制到/etc/profile中,即可一直生效)3.2.2 开始安装kolla-ansible,要带上--ignore-installed PyYAML,否则可能会报错。

gyc1206的博客 1927

stm32f407VET6 系统学习 day01 GPIO 配置

stm32f407VET6 系统学习 day01 GPIO 配置 LED 蜂鸣器 按键的不讲了,之前讲过了

she666666的博客 8905

50个C/C++面试题

面试题1:变量的声明和定义有什么区别  为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但是只在一个地方定义。加入extern修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。  说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间,如外部变量。  面试题2:写出bool 、int、 float、

沙漠中的一粒沙 1万+

多租户Saas架构设计分析(基础篇)

本篇先给大家介绍一下相关的概念和常见问题。 实践篇链接:https://blog.youkuaiyun.com/haponchang/article/details/104246317 SaaS简介 SaaS是Software-as-a-Service(软件即服务)的简称,“软件即服务”?是不是有点拗口?其实你就理解成为“按需租用别人提供的软件服务”就可以了,它是一种软件交付模式。...

haponchang的博客 1万+

沈师 Java程序设计 PTA 编程题答案

1. 求最大值 (10 分) 本题目要求读入2个整数A和B,然后输出两个数的最大值。 输入格式: 输入在一行中给出2个绝对值不超过1000的整数A和B。 输出格式: 对每一组输入,在一行中输出最大值。 输入样例: 在这里给出一组输入。例如: 18 -299 输出样例: 在这里给出相应的输出。例如: 18 答案: import java.util.Scanner; public class Main{ public static void main(String[] args){ S

日常记录 2万+

【Docker】一招解决超时镜像超时报错:`ERROR: Get https://registry-1.docker.io/v2/`

Docker 镜像拉取超时或失败并不是 Docker 本身的缺陷,而是网络环境和默认配置在特定场景下的限制所导致的结果。通过本文的分析可以看到,问题的核心往往集中在三个方面:网络访问延迟、DNS 解析速度以及客户端默认超时时间。针对这些问题,最直接、有效的做法是使用国内镜像加速器,这不仅能够显著提升拉取速度,还能保证在企业内网或家庭网络中更加稳定

博客 1027

从码农到生态建造者:我的一人公司运作方案

华哥·OPC 运营方案 v1.0 - 第一次迭代 🚀,搭建闭环生态系统,赋能 AI 时代的超级个体,更好的做自己,同时照亮别人。

AaronZZH 的博客 996

经典C/C++面试题目大汇总:助你轻松应对技术面试

经典C/C++面试题目大汇总:助你轻松应对技术面试 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在技术面试中,C/C++语言的掌握程度往往是衡量一个开发者技术水平的重要标准。为了帮助广大求职者和开发者更好地准备面试,我们推出了《经典C/C++面试题目大汇总(全附答案)》资源文件。这份文件包含了数百道经典的C/C++面试题目及其详细答案,涵盖了从基础知识到高级概念的各...

gitblog_09721的博客 529

YOLOv11改进 - 卷积Conv | GCNet之金箍棒块GCBlock : 重参数化捕获全局依赖 | CVPR 2025

文介绍了GCBlock在YOLOv11中的结合应用。GCBlock是GCNet的核心组件,能高效捕获特征图中的全局依赖关系,融合了非局部网络和挤压 - 激励网络的优势,降低计算成本并保障模型性能。其遵循“上下文建模 - 特征变换 - 特征融合”框架,通过全局平均池化、全连接层等操作生成注意力权重。我们将GCBlock集成进YOLOv11,替代原有的部分卷积模块,实现更高效的全局上下文建模。实验证明,YOLOv11-GCBlock在目标检测任务中表现出色,展现了GCBlock在深度学习中的广泛应用前景。

魔改工程师的博客 907

最全流媒体技术介绍,C C++面试题目

流媒体技术的特征就是流式传输,它使得流媒体数据可以像流水一样传输。流式传输主要包括两种实现方式:顺序流式传输(progressive streaming)和实时流式传输(real time streaming)。需要根据具体需求决定采用哪种方式进行流式传输,下面就对这两种传输方式进行简单介绍。

2401_84976318的博客 569

如何在MacBook上安装部署原生openclaw

本文介绍了在MacBook上安装OpenClaw的详细步骤:首先通过curl或国内镜像源安装nvm和Node.js(版本≥22),然后使用nvm安装Node.js 24并验证安装。接着通过脚本快速安装OpenClaw,完成安装后选择Qwen作为AI模型并进行OAuth认证。配置过程中可跳过联网搜索和Agent技能设置,最后选择Web界面作为呈现方式。安装完成后,系统会启动openclaw-gateway进程并打开Web界面,用户可通过简单的"hello"指令开始与AI对话。目前基础功能已

木简熙的博客 810

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大公司C++面试题目集锦:助你面试无忧

大公司C++面试题目集锦:助你面试无忧 去发现同类优质开源项目:https://gitcode.com/ 项目的核心功能/场景 全面整理C++面试题目,提升求职者面试技巧。 项目介绍 在当今竞争激烈的求职环境中,拥有扎实的C++编程能力是许多大公司面试的关键。大公司C++面试题目集锦项目旨在为广大求职者提供一份全面且实用的面试题目库,帮助他们在面试中脱颖而出。 项目技术分析 技术组成 此项目主要由...

gitblog_06795的博客 927

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C++面试题目整理

<p><a href="https://www.nowcoder.com/ta/review-c?query=&amp;asc=true&amp;order=&amp;page=1" rel="nofollow">来源</a></p> 1、写出完...

weixin_43327696的博客 174

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C/C++ 笔试、面试题目大汇总

C/C++ 笔试、面试题目大汇总 http://www.cnblogs.com/fangyukuan/archive/2010/09/18/1829871.html C/C++ 笔试、面试题目大汇总2 http://www.cnblogs.com/fangyukuan/archive/2010/09/18/1830493.html

455

好教程推荐系列:收藏的C++技术面试 -- 24K纯技术干货(题目)

作者:Oscarwin 链接:https://www.zhihu.com/question/34574154/answer/253165162 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 今年刚找完工作的应届生来答一发,校招主要考察基础和思维,主要涉及C++语言基础,数据结构与算法,TCP/IP协议,网络编程,Linux。 虽然面试技巧和心态也很重要,...

$firecat利白的代码足迹$ 945

2024年Python最新学了4年C++后,我转向了Python_学了四年c++,字节跳动技术面试题目

当转换到一种新的编程语言,尤其是与个人习惯完全不同的语言时,需要花费大量时间学习、挖掘、发现,最重要的是要明白不仅语言应该改变,编码风格和工作方法也要改变,因此需要提前做好大量准备工作。朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】。多多交流问题,互帮互助,这里有不错的学习教程和开发工具。python兼职资源+python全套学习资料。

m0_60721860的博客 724

1.c++笔试题资料

1.100条经典C语言笔试题目 https://blog.youkuaiyun.com/qq_20398345/article/details/80948014 2.腾讯c/c++笔试题 https://blog.youkuaiyun.com/lyl820/article/details/83292858 3.100条经典C语言笔试题目 https://blog.youkuaiyun.com/qq_360...

weixin_40535588的博客 183

华芯巨数C++开发笔试题目2023年春答案:助你掌握C++开发要点

华芯巨数C++开发笔试题目2023年春答案:助你掌握C++开发要点 去发现同类优质开源项目:https://gitcode.com/ 项目的核心功能/场景: 提供华芯巨数C++开发岗位笔试题目及答案,帮助开发者提升编程技能。 项目介绍 在现代软件开发领域,C++作为一种高效、功能强大的编程语言,其在性能和灵活性上的优势使其在众多行业得到广泛应用。为了选拔具备优秀C++编程能力的开发者,华芯巨数公司...

gitblog_06722的博客 543

技术类C++面试

术类C++面试  document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text");

WINCOL的专栏 1653
上一篇: 第4回 RTOS的一个例子
下一篇: 实时操作系统中的术语
进击的横打
博客等级 码龄19年 2万+粉丝 1298原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值