一些真实的面试问题C ++

时间:2010-12-24 13:51:55

标签: c++

所以我编写了一些我被问过的面试问题。我回答了一些问题并记下了我不能解答的答案。有些问题不是C特定的,而且是一般性的。每个人都可以在问题中添加输入。没有义务遵循我写的答案!

Q1:2位系统和16位系统上指针的大小是多少? A:2位和2个字节

Q2:为什么我们在C语言结构中需要OOP /类并且可以实现相同的目标? 答:留给SO用户回答!

问题3:如果您被告知将程序划分为嵌入式系统的不同部分,它们会是什么? 答:IO部分和CPU部分

问题4:使用线程有哪些硬件级优势?任何给出单个CPU(单核)的单个示例A:一个线程将进行一些数字运算,另一个只是生活为一个毫秒可以 发出事件信号以读取硬盘。

问题5:如果我们有一个指针char* p = NULLcout<<sizeof(*p)会打印什么?答:char的大小,而不是char*。这意味着它可以指向的内存量,而不是指针本身的大小

问题6:虚函数表中函数指针指向哪些函数?答:虚拟功能

问题7:您如何计算程序需要为单个CPU(单核)的最佳性能生成多少个线程?你会进行身体测试还是自动化你的程序?举个例子。或两者,再一个例子 A:SO用户在这里给你答案!

Q8:如果一个虚函数(不纯)是继承,则不在派生类中实现。现在,如果我有一个指向派生类对象的基类指针,然后进行调用 baseObject->function(),会发生什么?在编译时/运行时间的任何时候都会出现问题吗?答:没有。 :)

2 个答案:

答案 0 :(得分:7)

A1 2位和16位是明显的答案。我要求澄清,例如“在技术方面,你究竟是什么意思2位系统”只是为了确保。

A2 这是OOP 101材料......一个简短的回答可能是“因为类启用了继承,并且继承启用了许多有用的范例(最重要的是多态性),这降低了代码复杂性”。

A3 恐怕我不会认为你的回答是正确的。你肯定应该问“什么样的程序”才能得到一个大致的想法:这是一项服务吗?一个脚本?桌面应用程序?没有额外的输入,我会回答“分为UI和业务逻辑”。

A4 在硬件级别,线程使您的应用程序能够更好地利用您的硬件资源(例如,多个CPU核心)。一个例子是任何分而治之的算法,其中划分的工作可以并行地在多个线程上运行(例如,许多排序算法)。我会再次认为你的答案是错误的。

A5 正确。

A6 正确。

A7 首先:查看程序是否受CPU限制(一些快速而肮脏的测量会告诉您这一点)。如果它不受CPU限制,那么大多数可能只有一个线程就足够了。如果是,那么你想要使用尽可能多的线程(这意味着可以将你的工作划分为多个部分),最多可以同时执行硬件的线程数。

A8 正确:没问题,将调用基类实现。

答案 1 :(得分:-1)

嗯......不是C ++,但是这个:

想象一下,你有两个主机,一个提供商,他们的路由器,管理员和很多啤酒。您希望使用192.168.0.5(另一个主机专用地址)从另一个主机Telnet一个主机。这可能吗?

答:是的,确定有可能。当你喝了很多啤酒时,管理员可以做到一切。

(这是我生命中接受过一次采访的一个真正的问题。嗯,在面试中一些好的幽默可以帮助男人放松,好吧,有点让面试中的气氛更轻松,你知道我的意思。)

这应该是社区维基,不应该吗?如果我没有弄错的话,那就有一个重复的地方。