c++vstextouta怎么用_清小C面试记

公元9102年11月28日,清小C心情兴奋而忐忑

cd6da988b766fbeba33a4065a2751986.png

昨天他收到了某互联网巨头公司的通知

今天他就要去面试了!

e4f5791e00c4a57ce30b87062177294e.png

昨晚他就上网搜索了好多面试注意事项

可谓万事俱备

5704fcb7b7b8f427b98a36c3b97ca354.png

不过他唯一有点担心的是他在简历里写了……

2529dceadedaa9e490f1e7a8f1d0af32.png

其实他也不知道怎样才算精通C++

不过本着“听过=了解,用过=熟悉”的原则

何况他还在书店里看过

《30小时精通C++》的封皮

那么写自己“精通C++”,不是问题!

0781bddd478997036fd3cc74af966c4b.png 866fb6251a160552dcc203e4700aef20.png

来到面试的地点

面试官是个脑袋锃亮的大叔

他微笑着让清小C坐下

翻起了他的简历

052008d7a0a65ab58e99f6a0613e74c3.png

面试官

0b1560d99c846087e38f7e29c924a672.png

呦呵,你这里写的是精通C++是吧?

7879a0c7a0eccc0296650e1f64f8e1cc.png

嗯… 

(心里慌得不行,不会要露馅吧?)

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png 0b1560d99c846087e38f7e29c924a672.png

(露出了诡异的微笑)那给你3分钟,先写个模板元编程实现的编译期堆排序吧。

7879a0c7a0eccc0296650e1f64f8e1cc.png

???

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

清小C露出了黑人问号脸:???

但也只能硬着头皮在纸上写下了:

#include

using namespace std;

int main(){

(中间不会了)

    return 0;

}

0b1560d99c846087e38f7e29c924a672.png

看来你不太懂模板啊,那我们来点简单的。来说说你觉得C和C++有什么区别吧。

7879a0c7a0eccc0296650e1f64f8e1cc.png

区别…在于艹的个数。

C++:C艹,

by the way,

C#:C艹艹。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png 0b1560d99c846087e38f7e29c924a672.png

嗯哼?

7879a0c7a0eccc0296650e1f64f8e1cc.png

开个玩笑。

大概,C++就是带类的C吧…

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png 0b1560d99c846087e38f7e29c924a672.png

哎,小伙子,你这样不行啊。建议你以后写简历,就写精通VS的安装与卸载,精通C++的拼写,精通Windows系统的开关机,这样真实且像你。

7879a0c7a0eccc0296650e1f64f8e1cc.png

嘤嘤嘤……

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png 0b1560d99c846087e38f7e29c924a672.png

从你刚进来,你的秀发就已经出卖了你。你看,要像我这样的发型,说自己精通C++才有人信嘛,诶,等等,我发型呢…没事,这不重要。让我来告诉你C和C++的一些区别吧。以下是一些知识点,快拿小本本记下来。

7879a0c7a0eccc0296650e1f64f8e1cc.png

  ~小本本:

1.C语言诞生得比较早,当时的人们还习惯于汇编语言,而且也还没有比较统一、通用的操作系统,因此C语言可以看作是“高级的汇编语言”,比较贴近底层硬件,其目标就是比汇编语言更方便、易懂。

C++大大提高了抽象层次,支持模块化编程,有很多设计模式可以使用,提高了程序员的效率。而且支持泛型程序设计,还不会离硬件太远,非常适合用来写一些基础架构软件和大型软件。

2.C是面向过程的语言,而C++是面向对象的语言。C++中除了类与对象、继承、多态等OOP语言必备的内容,还支持模板、重载、异常处理等,还有一个功能强大的标准模板库STL。当然C++也支持C风格,也可以写面向过程的代码。

3.在动态内存管理上,C语言是通过malloc和free来进行堆内存的分配和释放,而C++是通过new和delete来管理堆内存的。

具体来说:

(1)malloc只负责开辟内存,用户需要自己初始化;而new不但开辟内存,还可以进行初始化。

(2)malloc函数开辟内存需要传入字节数,返回值需要强制转换成指定类型的地址;而new是运算符,开辟内存时需要指定类型,返回指定类型的地址,不需要进行强制转换。

(3)malloc开辟的内存都是通过free来释放的;而new出来的释放对应用的是delete,如果是数组,就用delete[]。

(4)malloc开辟内存失败返回NULL,而new开辟内存失败会抛出bad_alloc类型的异常。

4.C++比C多了一个类作用域。此外,C++支持namespace名字空间,可以由用户自己定义新的名字空间作用域,避免全局的名字冲突问题。

5.输入输出方式不一样。C的printf/scanf,和C++的cout/cin,前者是C的库函数,后者是ostream/istream类的对象。

0b1560d99c846087e38f7e29c924a672.png

(喝了一口水,说道)说了那么多,让我们举个例子看看。就比如说,有个任务,要造出一辆汽车,并把它开进车库。这时候用C和C++就很不一样。你先说说你打算怎么做吧。”

7879a0c7a0eccc0296650e1f64f8e1cc.png

太easy了,一共四步。造车,打开车库,把车开进去,关上车库。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png 0b1560d99c846087e38f7e29c924a672.png

咳…咳…算了,你别再说话了。让我带着你看看用C和用C++的区别,编程时要善于和程序语言“对话”。就像这样。

7879a0c7a0eccc0296650e1f64f8e1cc.png

C是个高冷的DIY狂人,态度较为冷淡。如果你痴迷于DIY,什么都想靠自己做,我们一般只会用3个字来形容——C语言。不过当年他们大佬,在记事本里,拿机器语言写程序,那我用C写这么个小东西,不是问题。

c8b885748b257b45d6d228fde015b4b7.png

VS,启动!

Hi,C语言。我需要构造一辆汽车,并把它放进车库。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C

哦。

7879a0c7a0eccc0296650e1f64f8e1cc.png

你能帮我做吗?

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C

哦。

7879a0c7a0eccc0296650e1f64f8e1cc.png

那…怎么弄出一辆汽车呢?

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C

DIY.

7879a0c7a0eccc0296650e1f64f8e1cc.png

(你只好百度一下,发现要malloc一片内存)

我要用malloc函数申请一块内存放汽车啦。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C

哦。

7879a0c7a0eccc0296650e1f64f8e1cc.png

然后是构造汽车了,怎么办呢?

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C

你猜。

7879a0c7a0eccc0296650e1f64f8e1cc.png

(于是你去翻阅了《汽车是如何造成的》)

我已经定义了一个汽车的数据结构,

然后呢?

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C

继续猜。

7879a0c7a0eccc0296650e1f64f8e1cc.png

好吧,我再照猫画虎,

构造一个车库吧。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C

哦。

7879a0c7a0eccc0296650e1f64f8e1cc.png

(于是你又去翻阅了《车库是如何建成的》)

车库也构造出来了呢,现在你帮我把汽车放进去吧。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C

哼。

7879a0c7a0eccc0296650e1f64f8e1cc.png

(经过一通搜索,你终于找到了正确的方法)

好吧,都放进去了。现在输出一下看看。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C

烫烫烫烫烫…

7879a0c7a0eccc0296650e1f64f8e1cc.png

哼,我去找C++玩了。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C++比较年轻,平易近人。

C艹,帮我个忙好吗?

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C艹

滚。

7879a0c7a0eccc0296650e1f64f8e1cc.png

(说好的平易近人呢?)

dbq,尊敬的C++先生,帮我构造一辆汽车并放进车库好吗?

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C艹

好的呀。我这里有好多祖传的汽车类可以给你继承,有丰田、奥迪、宝马…你要是要迈巴赫、兰博基尼啥的也有啊。只要你认他们为爸爸,你就拥有了他们的一切,哦,除了构造函数和析构函数外。而且你还可以认好多好多爸爸…然后你还可以在此基础上自由发挥,弄点你自己的玩意出来。就好比,虽然爸爸已经很强大,但你总也得靠自己做点事情…

7879a0c7a0eccc0296650e1f64f8e1cc.png

emmm,我还是喜欢朴实无华一点的,随便来个国产牌子的汽车类吧,顺带车库类也随便来一个就行。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C艹

ok.用new运算符来申请一块动态内存哦。

7879a0c7a0eccc0296650e1f64f8e1cc.png

好的,那现在来构造吧。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C艹

你可以自己选择车型、最快时速、车身长宽、车重…这些参数,对了你有喜欢的颜色吗?可以直接上色哦,亲。

7879a0c7a0eccc0296650e1f64f8e1cc.png

呃…

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

(经过困难的选择后,你终于构造出了汽车和车库)

现在怎么放进去呢?

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C艹

我选的这个车库类里有个AddCar函数,有接口的,你可以直接用。但是我没法告诉你它是怎么操作的。

7879a0c7a0eccc0296650e1f64f8e1cc.png

太好了,我正好不想知道。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

C艹

编译运行,我的速度极快呢。呃…等等,怎么报了100个错误…这是你的问题,你自己解决。

7879a0c7a0eccc0296650e1f64f8e1cc.png

“写bug三分钟,debug三小时”什么的最喜欢了!

三小时后,一辆国产的、最快时速200km/h、车身长4.5米、宽1.8米、重1.2吨、黑色的…红旗H5型小汽车就被放进了某国内建筑公司设计的、位于北京的、占地面积约为50平米…的小车库里。

好是好,就是太多选择了也是烦恼啊。我再去找找Python看。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

Python,帮我把汽车放进车库吧。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

Python

直接import这个“开车进库”的模块,然后run即可。

7879a0c7a0eccc0296650e1f64f8e1cc.png

哇,这么厉害的吗。给Python倒一杯卡布奇诺好吧,开始你的编程秀。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

半天后

小老弟,你怎么回事?Python你快点啊,这你也要弄半天吗?…

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

Python

哼,慢有慢的好…

7879a0c7a0eccc0296650e1f64f8e1cc.png

再见。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

(你又回到C那里,摆弄一番后,不禁感叹:)

Python真香!

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

在被各种语言摩擦了一番后

清小C决定去找大佬求助

清小C气喘吁吁地找到两位大佬

瘫坐在椅子上

d47799f63ab3827ea125d77b86072a8d.png

清先生,您好。

有什么事我们能帮到您?

7879a0c7a0eccc0296650e1f64f8e1cc.png

我要说的事

(停顿了一下)

你们千万别害怕。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

(两大佬战术后仰)

f5e049efb79ee199ef50381c92ade861.png

清先生,我们是大佬。

我们不会怕。

7879a0c7a0eccc0296650e1f64f8e1cc.png

我刚才,

又用C++写了3个小时Bug,

还找不出哪里错了。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png d47799f63ab3827ea125d77b86072a8d.png

C++是哪一位?

7879a0c7a0eccc0296650e1f64f8e1cc.png

不是哪一位,

就是那个面向对象的,

支持模板、重载、异常处理的,

自带标准模板库的C++啊!

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png 027ebc5aef3731ee2351795f4665b7e1.png

大佬B在纸上写了一个C,并展示

比这多点儿。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png 027ebc5aef3731ee2351795f4665b7e1.png

大佬B在C后面加上了#,再展示

比这少点儿。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png 027ebc5aef3731ee2351795f4665b7e1.png

大佬B把纸转180°

又加了一竖

后面又写了个几个字母

(Python)

比这速度快点。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png d47799f63ab3827ea125d77b86072a8d.png

大佬A拿过纸

写下了加瓦

(Java)

(无奈摊手)C++啊,就是那种抽象程度很高的、程序猿都爱用的C++啊。它说我编程技术菜,试问谁不知道?它疯狂地给我报错,不给我编译运行,我还看不懂错哪了,每次都得花3小时以上看几行代码的bug…

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png 4275834d5160cc3464e28659e7516ea6.png

大佬B忍不住笑了

你笑什么?

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png 027ebc5aef3731ee2351795f4665b7e1.png

我想起高兴的事情。

7879a0c7a0eccc0296650e1f64f8e1cc.png

什么事?

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png 027ebc5aef3731ee2351795f4665b7e1.png

我是项目经理,不用自己写代码。

7879a0c7a0eccc0296650e1f64f8e1cc.png d47799f63ab3827ea125d77b86072a8d.png

大佬A也忍不住噗嗤一笑

你又在笑什么?

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png d47799f63ab3827ea125d77b86072a8d.png

我也是项目经理。

7879a0c7a0eccc0296650e1f64f8e1cc.png

你们都是给好多程序猿提要求的?

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png 4275834d5160cc3464e28659e7516ea6.png

对…对

d47799f63ab3827ea125d77b86072a8d.png

喂!我再重申一遍!

我没在开玩笑!

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png d47799f63ab3827ea125d77b86072a8d.png

对…对…好…呵呵哈哈哈哈…

7879a0c7a0eccc0296650e1f64f8e1cc.png f5e049efb79ee199ef50381c92ade861.png

(冷静下来)我们言归正传啊,你刚才说的这个C++,它好玩吗?

7879a0c7a0eccc0296650e1f64f8e1cc.png

它不是好不好玩的问题。它真的是那种,那种很少见的那种,每次编译都给你报几百个错误,看着你debug几个小时,de到忘乎所以、飘飘欲仙、最后头发都没了才肯罢休…

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png 4275834d5160cc3464e28659e7516ea6.png

啊哈哈哈哈哈…

7879a0c7a0eccc0296650e1f64f8e1cc.png

你们欺人太甚!

一直笑我,都没停过。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png f5e049efb79ee199ef50381c92ade861.png

清先生,我们受过专业的训练。不管多好笑,我们都不会笑。除非忍不住。

7879a0c7a0eccc0296650e1f64f8e1cc.png d47799f63ab3827ea125d77b86072a8d.png

不如这样,清先生,您先回去把VS卸了。我们这边商量一下看怎么办,再通知您好吗?

7879a0c7a0eccc0296650e1f64f8e1cc.png

行,那你们可得快点啊。

再多找几个大佬想想办法。

7879a0c7a0eccc0296650e1f64f8e1cc.png a4dc36bf07fe8ea65931555a197e3e8b.png

清小C刚走,大佬A&B……

4275834d5160cc3464e28659e7516ea6.png

啊哈哈哈哈哈…

d47799f63ab3827ea125d77b86072a8d.png

清小C闻声回头

2db63d8770e5360c289d74bb21101b24.png f5e049efb79ee199ef50381c92ade861.png

(保持严肃脸)清先生?

d47799f63ab3827ea125d77b86072a8d.png

清小C简直不敢相信这一切

骂骂咧咧地走了…

0e81bb283f265c51fb94bc6c9afdba77.png

走到楼梯上,突然打滑了…

0f8e38ab142f9aebf107f2b92ec3576d.png

于是,梦醒了,清小C呆呆地望着电脑上依旧不知从何下手的大作业和推送作业。世界归于平静,明天又将是新的一天……

5704fcb7b7b8f427b98a36c3b97ca354.png

【参考资料】

[1]CSDN:C++经典面试题 | malloc和new的区别?

https://blog.csdn.net/weixin_39411321/article/details/89311059

编辑 | 张灿睿、李保罗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值