昨天C++面试的几道小题,看你自己能答好几道?

towriting 2012-02-19 02:51:05
昨天面试时,一个年轻的GG问的我的一些问题,自己感觉一道都没答好,请大家安慰我一下。
本人工作两年,水平一般,请问能答好以下所有问题的程序员值多少钱?

1. 讲一讲STL中用到了哪些你感兴趣的设计模式?
2. auto_ptr是如何保证资源的释放?析构是如何在异常发生的情况下依然保证资源的释放?
3. 结构化异常的实现原理?
4. 左值与右值的区别,举例说明?
5. 用win32汇编描述函数的调用过程?
6. C++最新标准中,你感兴趣的地方是什么,用过什么特性?
7. 讨论模板定义声明分离式编译,支持这种特性的编译器?(他说了一种编译器支持分离编译,忘记名字了)

...全文
5005 108 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
108 条回复
切换为时间正序
请发表友善的回复…
发表回复
EstherT 2012-02-28
  • 打赏
  • 举报
回复
LZ是应届生?。。。好吧,如果是我们学校,就我们系吧,都打出来的估计就一个。。可能还没有
assassin5616 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用 106 楼 jgyh1987 的回复:]
引用 97 楼 assassin5616 的回复:
引用 81 楼 jgyh1987 的回复:
第2题 和第3题 从来不用异常处理的人泪流满面 而且 连STL里面都没有使用异常 异常和向下类型检测这2个东西 就是C++里的垃圾 从来没有人用的
第6题 新标准里 我觉得也就 auto类型和 for each 比较好用 其他的 要么 编译器不会支持 要么用处不大
第7题 不可能完美实现的 那东……
[/Quote]

还看什么代码,你自己分配一下超大的内存,只要超过4G(其实大多数时候都不用),你看你能不能捕获到bad_alloc异常不就行了。
如果你想new不抛异常,你得这么写代码。new(nothrow) 。这样new如果失败,就只会返回空指针。而不会抛异常。
再给你看下new 的定义吧。 前面两个是抛异常的,后面两个不抛。
void* operator new(std::size_t size) throw(std::bad_alloc);
void* operator new[](std::size_t size) throw(std::bad_alloc);

// non-throwing operators
void* operator new(std::size_t size, const nothrow_t&) throw();
void* operator new[](std::size_t size, const nothrow_t&) throw();

std还有一个专门的头文件就是关于runtime_erro之类的异常定义的。还有就是,为什么std里面要有auto_ptr?那主要就是为了对付异常的。std算是异常的死忠分子了。

zzjkingdom 2012-02-23
  • 打赏
  • 举报
回复
基本都是看你对VS2010的新特性的了解。
什么分离编译、右值引用……
shiyan_lqy 2012-02-23
  • 打赏
  • 举报
回复
C++这么难学啊,正在学习中。。。压力啊
孤舟 2012-02-23
  • 打赏
  • 举报
回复
[Quote=引用 97 楼 assassin5616 的回复:]
引用 81 楼 jgyh1987 的回复:
第2题 和第3题 从来不用异常处理的人泪流满面 而且 连STL里面都没有使用异常 异常和向下类型检测这2个东西 就是C++里的垃圾 从来没有人用的
第6题 新标准里 我觉得也就 auto类型和 for each 比较好用 其他的 要么 编译器不会支持 要么用处不大
第7题 不可能完美实现的 那东西 实现那东西 绝对会挖更大的坑


汗死啊,s……
[/Quote]
std::bad_alloc 你再去看看 他用的是THROW0宏 展开就是 throw() 意思是 不抛出任何异常
lqb_123 2012-02-22
  • 打赏
  • 举报
回复
克隆模板
其他不会...
gongheguoyingpai11 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 zhm_joy 的回复:]

狂汗,工作也是近2年的C++程序员,这么个问题几乎都不会,惭愧
[/Quote]
在公司里主要是做什么样的开发工作啊?想了解,望大神们告知一二
国宝 2012-02-22
  • 打赏
  • 举报
回复
哎!看了下题目发现在自己只会两个…………
vanxeger 2012-02-22
  • 打赏
  • 举报
回复
路过,不会等标答……
assassin5616 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 81 楼 jgyh1987 的回复:]
第2题 和第3题 从来不用异常处理的人泪流满面 而且 连STL里面都没有使用异常 异常和向下类型检测这2个东西 就是C++里的垃圾 从来没有人用的
第6题 新标准里 我觉得也就 auto类型和 for each 比较好用 其他的 要么 编译器不会支持 要么用处不大
第7题 不可能完美实现的 那东西 实现那东西 绝对会挖更大的坑
[/Quote]

汗死啊,stl里面当然有异常,要不然你觉得std::bad_alloc是什么。 倒是google出的c++编程标准里面写了一句,永远不用异常,还有,永远不用iostream。所以这个东西,见仁见智了。
Pluser 2012-02-22
  • 打赏
  • 举报
回复
擦, 这么难。
没几个会的 坐等标准答案啊。。。

ORZ 啊 。。。
assassin5616 2012-02-21
  • 打赏
  • 举报
回复
这些都属于C++的基本功,知道也值不了几个钱。
luciferisnotsatan 2012-02-21
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 jackyjkchen 的回复:]

1.C风格,就是C++兼容的那个C风格

2.基于对象的C++,即C with Class,多态和继承基本不用

3.面向对象的C++,即“真正”的C++,一眼望上去更像java和C#

4.模板化的C++,STL和boost的风格,<>和::满篇,加上分离编译上的限制,绝对是一种新语言

如果再加上Windows哪个Pascal+匈牙利导致的别无二家的命名风格,MFC也是一种独立的C++风格
[/Quote]
还有微软的 CLI和AMP两个变种
lily0628 2012-02-21
  • 打赏
  • 举报
回复
怎么感觉。。。。
都不懂。。。。
luciferisnotsatan 2012-02-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jackyjkchen 的回复:]

引用 10 楼 linghu9990 的回复:

引用 1 楼 mingliang1212 的回复:

初级程序员。你说多少?

那一个普通智力的人,较普通人刻苦一些,能够很好的理解这些知识点要多长时间?
请问您能不能讲一讲?


老实说,这几道题全能答出来的人,在应届生中不超过10%,3-5年工作经验的人里至多也就是三分之一
[/Quote]
高估了吧,我都答不出几题。

1 迭代器模式,适配器模式
2 auto_ptr就是把所有权转移下。至于异常下的保证,看源码呗。
3 看过,忘了。实际代码里用结构化异常的没怎么见过。
4 实际编程时应该也什么人会考虑这问题,编译报错了,通常也就只考虑如何改对。
5 压入返回地址/参数,call
6 感觉现在linus的口水不够,再加一大堆东西进来。让这个monster变得更大
7 如果这个职位不是开发编译器的或者公司用的就是面试官说的那款编译器,问这题干嘛?

就和ls几个说的一样,这题大部分偏理论。
meid9 2012-02-21
  • 打赏
  • 举报
回复
meid9 2012-02-21
  • 打赏
  • 举报
回复
jia66wei 2012-02-21
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 phker 的回复:]

我是搞c#的.c++一点不懂.基础语法很简单,但是一旦到了宏,MFC,stl啥的没用过,也是两眼一抹黑..
我个人觉得,c++简直就是一门垃圾语言..太恶心了.. 简直没法学,里面需要知道的基础知识太多了..
做应用软件用c++简直就是自寻死路.. c++用的再牛也不能说明什么..用c++做管理系统简直是累死人的事..
虽然c++可以写很多的东西(c++几乎没什么不能写的)但我还是讨厌c+……
[/Quote]呵呵  哥笑了
sunnyes2008 2012-02-21
  • 打赏
  • 举报
回复
想改行了。
Jarvan89 2012-02-21
  • 打赏
  • 举报
回复
感谢分享,虽说每一个题能答得上来的~
学习ing~~~
加载更多回复(79)

65,180

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧