c++面试题

摩托罗拉部分C++面试题
silver6 | 13 三月, 2006 18:50
1.介绍一下STL,详细说明STL如何实现 vector。
2.如果用VC开发程序,常见这么几个错误,C2001,c2005,c2011,这些错误的原因是什么。
3.继承和委派 有什么分别,在决定使用继承或者委派的时候需要考虑什么。

委派优于继承,当需要用多态的时候应该用继承。 
4.指针和引用有什么分 别;如果传引用比传指针安全,为什么?如果我使用常量指针难道不行吗?

1)引用必须初始化,指针不必。

2)引用初始化后不能 修改,而指针可以指向其他对象。

3)
5.参数传递有几种方式;实现多态参数传递采用什么方式,如果没有使用某种方式原因是什么;
6. 结合一个项目说明你怎样应用设计模式的理念。
7.介绍一下你对设计模式的理解。(这个过程中有很多很细节的问题随机问的)
8.C++和C 定义结构的分别是什么。
9.构造函数可否是虚汗数,为什么?析构函数呢,可否是纯虚的呢?
10,拷贝构造函数相关问题,深拷贝,浅拷贝, 临时对象等。
11.结合1个你认为比较能体现OOP思想的项目,用UML来描述。(最好这个项目继承,多态,虚函数都有体现)这个问题大概会占面 试时间的一半,并且会问很多问题,一不小心可能会被问住)。
12。基类的有1个虚函数,子类还需要申明为virtual吗?为什么。
13.C 也可以通过精心封装某些函数功能实现重用,那C++的类有什么优点吗,难道仅仅是为实现重用。
14.C++特点是什么,如何实现多态?画出基类和 子类在内存中的相互关系。
15.为什么要引入抽象基类和纯虚函数?
16.介绍一下模板和包容器。如何实现?(也许会让你当场举例实现)
17. 你如何理解MVC。简单举例来说明其应用。
18,多重继承如何消除向上继承的二义性。







关 于问题2:我想是我说自己常用VC编程,他们觉得那你要常常用的话,这种常见错误肯定知道原因。我当时想:你就不能说错误提示是什么,我也好分析一下,那 么多错误代码,我哪记得哪个对应哪个啊。
以下回答部分问题,有的还是没有找到答案:
1.
2.见MSDN.
3.
4. 定义引用必须要初始化,指针不必。后面的不知道。
5.传值,传地址,传引用;多态通常使用后两个;不知道有无使用传值的。
6.略。最好能 抽象层次比较高。
7.这个我觉得他当时问的有问题,C++和C定义结构没有区别,只是在定义结构类型变量的时候,C++不需要struct关键 字。
9.构造函数不可是虚函数,析构函数可以是,也可以是纯虚的。见《thinking in c++》第14章
10.钱能那本《C++ 程序设计》有很详细的说明。
11.略。最好能体现你基类设计的比较好,多态等应用。
12.不需要。
13.应该是白盒和黑盒的区 别。欢迎补充。
14.特点封装,继承,重载,多态;多态是通过虚函数和滞后联编实现。那个著名的图就不画了。他们可能会让你写几个类来说明,或者 给你几个,让你描述。
15.见钱能那本《C++程序设计》,P370-P375.这里略。
16.不知道,但是《thinking in c++》有说明。
17.model,view,controler.我以改变用户输入方式不应当影响视图来说明的。
18. 《thinking in c++》有说明




LINK2001....以前真的去查过.....
  一. 由于编码错误导致的LNK2001。
  1.不相匹配的程序代码或模块定义(.DEF)文件能导致LNK2001。例如,
如果在C++ 源文件内声明了一变量“var1”,却试图在另一文件内以变量
“VAR1”访问该变量,将发生该错误。
  2.如果使用的内联函数是 在.CPP文件内定义的,而不是在头文件内定
义将导致LNK2001错误。
  3.调用函数时如果所用的参数类型同函数声明时的类型不符 将会产生
LNK2001。
  4.试图从基类的构造函数或析构函数中调用虚拟函数时将会导致LNK2001。
  5.要注意函数 和变量的可公用性,只有全局变量、函数是可公用的。
  静态函数和静态变量具有相同的使用范围限制。当试图从文件外部访问
任何没有在该文 件内声明的静态变量时将导致编译错误或LNK2001。
  函数内声明的变量(局部变量) 只能在该函数的范围内使用。
  C++ 的全局常量只有静态连接性能。这不同于C,如果试图在C++的
多个文件内使用全局变量也会产生LNK2001错误。一种解决的方法是需要时在
头 文件中加入该常量的初始化代码,并在.CPP文件中包含该头文件;另一种
方法是使用时给该变量赋以常数。
  二.由于编译和链接的设置而 造成的LNK2001
  1.如果编译时使用的是/NOD(/NODEFAULTLIB)选项,程序所需要的运行
库和MFC库在连接时由 编译器写入目标文件模块, 但除非在文件中明确包含
这些库名,否则这些库不会被链接进工程文件。在这种情况下使用/NOD将导
致错误 LNK2001。
  2.如果没有为wWinMainCRTStartup设定程序入口,在使用Unicode和MFC
时将得到 “unresolved external on _WinMain@16”的LNK2001错误信息。
  3.使用/MD选项编译时,既然所有 的运行库都被保留在动态链接库之内,
源文件中对“func”的引用,在目标文件里即对“__imp__func” 的引用。
如果试图使用 静态库LIBC.LIB或LIBCMT.LIB进行连接,将在__imp__func上发
生LNK2001;如果不使用/MD选项编译,在使用 MSVCxx.LIB连接时也会发生LNK2001。
  4.使用/ML选项编译时,如用LIBCMT.LIB链接会在_errno上发生 LNK2001。
  5.当编译调试版的应用程序时,如果采用发行版模态库进行连接也会产
生LNK2001;同样,使用调试版模态库连接 发行版应用程序时也会产生相同的
问题。
  6.不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可
能包含早先的版本 没有的符号和说明。
  7.在不同的模块使用内联和非内联的编译选项能够导致LNK2001。如果
创建C++库时打开了函数内联 (/Ob1或/Ob2),但是在描述该函数的相应头
文件里却关闭了函数内联(没有inline关键字),这时将得到该错误信息。
为避免该 问题的发生,应该在相应的头文件中用inline关键字标志内联函数。
  8.不正确的/SUBSYSTEM或/ENTRY设置也能导致 LNK2001










编译器错误 C2001
常数中有换行 符

字符串常数不能继续到第二行,除非进行下列操作:

用反斜杠结束第一行。
用一个双引号结束第一行上的字符 串,并在下一行用另一个双引号开始该字符串。
用 n 结束第一行是不够的。例如:

printf("Hello, // error
world");
printf("Hello,n // error
world");
printf("Hello, // OK
world");
printf("Hello," // OK
" world");
下一行开始处位于行继续 符后的空格包含在字符串常数中。以上显示的示例都没有将换行符嵌入字符串常数中。可以按如下所示嵌入换行符:

printf("Hello,n
world");
printf("Hello,
nworld");
printf("Hello,n"
"world");
printf("Hello,"
"nworld");

//

编 译器错误 C2005

#line 应输入行号,却找到“token”

#line 指令后面必须跟行号。下面的示例生成 C2005:

// C2005.cpp
int main() {
int i = 0;
#line i // C2005

// try ...
// #line 0
}

//

编 译器错误 C2011

“identifier”:“type”类型重定义

该标识符已定义为 type 类型。如果多次将某个类型库导入同一个文件,也可能生成 C2011。

例如:

struct S;
union S; // Error C2011







多重继承上的二义性见例子:
class A{
public:
ostream &print(ostream&)const;
void highlight();
};
class B{
public:
bool onExhibit()const;
private:
bool highlight(int zoo_location);
};
calss C:public B
{
ostream &print(ostream&)const;
void dance(dance_type)const;
};
class D:public C,public A
{
void cuddle()const;
};
void main()
{
// 以下调用都是二义的
C::print(ostream&)const;
A::print(ostream&)const;
}
如 果在两个或多个基类中都找到了声明,则调用是二义的.
解决二义的方法是采用虚拟继承.
2005年华为招聘--C语言笔试试题

silver6 | 24 三月, 2006 19:21


一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)


1、 有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。( )



2、int (*ptr) (),则ptr是一维数组的名字。( )


3、指针在任何情况下都可进行>,<,>=,& lt;=,==运算。( )



4、switch(c) 语句中c可以是int ,long,char ,float ,unsigned int 类型。( )


5、#define print(x) printf("the no, "#x",is ")





二、填空题(共30分)


1、在windows下,写 出运行结果,每空2分,共10分。



char str[ ]= "Hello";


char *p=str;



int n=10;


sizeof(str)=( )



sizeof(p)=( )


sizeof(n)=( )






void func(char str[100])


{ }



sizeof(str)=( )





2、 void setmemory(char **p, int num)


{ *p=(char *) malloc(num);}



void test(void)


{ char *str=NULL;



getmemory(&str,100);


strcpy(str,"hello");



printf(str);


}



运行test函数有什么结 果?( )10分





3、设int arr[]={6,7,8,9,10};


int *ptr=arr;



*(ptr++)+=123;


printf("%d, %d",*ptr,*(++ptr));



( ) 10分





二、编程 题(第一小题20,第二小题30分)


1、 不使用库函数,编写函数int strcmp(char *source, char *dest)


相等返回0,不等返回-1;





2、 写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1



Oracle DBA面试题

silver6 | 23 三月, 2006 10:56

问题

  1如果信息采集管理系统 (ICM)崩溃了怎么办?

  2你如何加速打补丁的过程?

  3打补丁的过程中出错了,你怎么办?

   4请提供克隆过程和克隆之后采取的手工操作的大概步骤。

  5介绍一下AutoConfig。AutoConfig是如何知道XML文件 中的哪个树脂需要被放入哪一个文件的?

  6你能告诉我,你对一个发生故障的自服务登录问题做哪些测试吗?你要检查哪个配置文件操作选项 和文件?

  7如果你不能看到并发管理日志和输出文件,是哪里出错了?

  8你是如何更改并发管理日志和输出文件的位置 的?

  9如果用户正遇到性能方面的问题,你如何找到问题的原因?

  10你如何更改应用程序的密码?

   11请写出DBC文件的位置,并且解释它的重要性和应用程序如何知道DBC文件名?

  答案

  1所有其他的管理器都 会继续工作。ICM只会处理队列控制请求,意思是开启和关闭其他并发的管理器。

  2

  2.1你可以合并多个补丁。

   2.2你可以为一个非交互的补丁创建一个响应文件。

  2.3你可以通过选项(nocompiledb, nomaintainmrc, nocompilejsp)来应用补丁,并且在应用了所有的补丁之后,一次运行它们。

  3 查看失败工作的日志,找到并且纠正错误,用adctrl 工具重新开启工作。

IT工作市场是如此的紧张,每个可获得的职位都有一堆人在申 请。Naveen Nahata为Oracle E-Business Suite的数据库管理员申请者提供了以下一些面试时的技术问题,它可以帮助申请者们快速脱颖而出。如果你的面试官有类似的问题问你,发个邮件给我,我将 会把它添加在列表中。――编者按

  问题

  1如果信息采集管理系统(ICM)崩溃了怎么办?

  2 你如何加速打补丁的过程?

  3打补丁的过程中出错了,你怎么办?

  4请提供克隆过程和克隆之后采取的手工操作的大概 步骤。

  5介绍一下AutoConfig。AutoConfig是如何知道XML文件中的哪个树脂需要被放入哪一个文件的?

   6你能告诉我,你对一个发生故障的自服务登录问题做哪些测试吗?你要检查哪个配置文件操作选项和文件?

  7如果你不能看到并发管理日 志和输出文件,是哪里出错了?

  8你是如何更改并发管理日志和输出文件的位置的?

  9如果用户正遇到性能方面的问 题,你如何找到问题的原因?

  10你如何更改应用程序的密码?

  11请写出DBC文件的位置,并且解释它的重要性和 应用程序如何知道DBC文件名?

  答案

  1所有其他的管理器都会继续工作。ICM只会处理队列控制请求,意思是开启 和关闭其他并发的管理器。

  2

  2.1你可以合并多个补丁。

  2.2你可以为一个非交互的补丁创 建一个响应文件。

  2.3你可以通过选项(nocompiledb, nomaintainmrc, nocompilejsp)来应用补丁,并且在应用了所有的补丁之后,一次运行它们。

  3 查看失败工作的日志,找到并且纠正错误,用adctrl 工具重新开启工作。

4在源文件上(所有层)运行pre-clone,使用 RMAN复制数据库(或者从热或者冷备份中重新存储数据库),拷贝文件系统,然后在目标文件(所有层)上运行post-clone 。

   手工步骤(可能会更多):

  4.1改变所有的非网站配置选项数值(快速克隆的话,只改变网站级别的配置文件选项)。

   4.2 修改工作流和并发管理器表。

  4.3更改打印机。

  5 AutoConfig 使用了一个上下文文件来维护关键的配置文件。一个上下文文件就是一个XML文件,在$APPL_TOP/admin 目录下,进行集中式的存储。

   当你运行AutoConfig 的时候,它读取XML文件,并且创建所有的AutoConfig 管理配置文件。

  对于 AutoConfig维护的每个配置文件,都存在一个临时文件来判断哪个数值是从哪个XML文件中得来的。

  6

   6.1检查DBC文件中的guest的用户名和密码,配置选项guest的用户名和密码、数据库。

  6.2查看 apache/jserv是否启动了。

  6.3运行IsItWorking, FND_WEB.PING, aoljtest等。

   7很有可能是FNDFS监听器停止了。看看FND_CONCURRENT_REQUESTS 表中的OUTFILE_NODE_NAME 和 LOGFILE_NODE_NAME 的数值。看看FND_NODES 表。看看tnsnames.ora 中的FNDFS_ entry 。

   8日志问卷爱女的位置是由$APPLCSF/$APPLLOG 参数来决定的,输出文件的位置是由$APPLCSF/$APPLOUT 决定的。

   9

  9.1追踪这个会话(用等待)并且使用tkprof 来分析追踪文件。

  9.2生成statspack 报告并进行分析。

  9.3使用top/iostat/sar/vmstat 监控O/s 。

  9.4通过ping这 类基本的测试结果来判断网络的瓶颈。

  10

  10.1 使用FNDCPASS 来更改APPS密码。

   10.2 手工修改wdbsvr.app/cgiCMD.dat 文件。

  10.3 更改所有从其他环境指过来的数据库链接。

   11

  11.1位置:$FND_TOP/secure directory

  11.2 重要性:在其他事务中指向数据库服务器。

  11.3 应用程序通过使用“Applications Database Id.”来了解DBC文件的名字。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值