motorola摩托罗拉笔试题2
来源:互联网 发布:如何开淘宝直通车 编辑:程序博客网 时间:2024/05/17 08:27
摩托罗拉部分C++面试题,交流
1.介绍一下STL,详细说明STL如何实现vector。
2.如果用VC开发程序,常见这么几个错误,C2001,c2005,c2011,这些错误的原因是什么。
3.继承和委派有什么分别,在决定使用继承或者委派的时候需要考虑什么。
继承和委派差别主要是语义不同。详见《高质量C++编程》和《设计模式》第一章。
作为组合理解
4.指针和引用有什么分别;如果传引用比传指针安全,为什么?如果我使用常量指针难道不行吗?
指针:可空
引用:必须初始化
如果指针为空的话,那么就可能访问出错。常量指针也可以为空,int *const p = NULL;
5.参数传递有几种方式;实现多态参数传递采用什么方式,如果没有使用某种方式原因是什么;
传值,传引用,传指针,后两种,
6.结合一个项目说明你怎样应用设计模式的理念。
7.介绍一下你对设计模式的理解。(这个过程中有很多很细节的问题随机问的)
8.C++和C定义结构的分别是什么。
C++数据可以封装?
9.构造函数可否是虚汗数,为什么?析构函数呢,可否是纯虚的呢?
不能,虚表还没有构造。能,能。纯虚只要自己实现就够了。见《thinking in c++》第14章
10,拷贝构造函数相关问题,深拷贝,浅拷贝,临时对象等。
11.结合1个你认为比较能体现OOP思想的项目,用UML来描述。(最好这个项目继承,多态,虚函数都有体现)这个问题大概会占面试时间的一半,并且会问很多问题,一不小心可能会被问住)。
12。基类的有1个虚函数,子类还需要申明为virtual吗?为什么。
不用,直接继承虚表
13.C也可以通过精心封装某些函数功能实现重用,那C++的类有什么优点吗,难道仅仅是为实现重用。
14.C++特点是什么,如何实现多态?画出基类和子类在内存中的相互关系。
动态绑定,虚函数表
特点封装,继承,重载,多态;多态是通过虚函数和滞后联编实现。那个著名的图就不画了。他们可能会让你写几个类来说明,或者给你几个,让你描述。
15.为什么要引入抽象基类和纯虚函数?
提供接口
16.介绍一下模板和包容器。如何实现?(也许会让你当场举例实现)
17.你如何理解MVC。简单举例来说明其应用。
18,多重继承如何消除向上继承的二义性。
如果在两个或多个基类中都找到了声明,则调用是二义的.
解决二义的方法是采用虚拟继承.
发信人: HerrWu (奥古斯都·朝花夕拾), 信区: Job
标 题: Moto笔试题(zz)
发信站: 武汉白云黄鹤站 (2005年10月24日15:45:55 星期一), 站内信件
1.打印如下图案,共19行,只能有一个for循环(题目已经提供)
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*****************
***************
*************
***********
*********
*******
*****
***
*
char str[20];
memset((void*)str, ' ',20);
str[19] = '/0';
for (int i=0; i<19; i++)
{
if(i<=9)
{
str[9-i] = '*';
str[9+i] = '*';
}
else
{
str[i-10] = ' ';
str[18+10-i] = ' ';
}
printf("%s/n",str);
}
2.void fun(int x)
{
if(x/2>0)fun(x/2);
printf("%d",x);
}
求fun(10)的输出结果
1 2 5 10
3。
#define f1(n) (n)*(n)
int i=5;
int k=0;
k=f1(i++);
printf("%d %d",i,k);
输出结果:
7,25
4。下面那个for循环是无限循环
for(int i=010;i==10;i+=0)
i为8,故只循环一次
for(int i=10;(i++^--i)==0;i+=0)
i++^--i始终为0,故无限循环
还有几个忘了
5.Email relay 和Email access分别用了什么协议?(其他还有很多,略)
SMTP,POP3
6。in a mobile phone,软件运行期,stack data 存在于
a.rom,b.flash c.eeprom d.ram e.none of the above
D.ram。这题稍微涉及到一点硬件知识,ROM的全称是Read Only Memory,即只读存储器,flash ,eeprom都是ROM家族的一员,RAM是Random Access Memory的简称,意为随机存取存储器,也就是内存了。不管是堆还是栈都是放在内存里的。
7.
int i;
int x=0x12345678;
unsigned char *p=(unsigned char *)&x;
for(i=0;i < 4; i++) printf("%2x",*(p+i));
在80x86pc机器上运行结果
Sun Sparc Unix上运行结果
x在PC机上的内存存放顺序为78 56 34 12,高字节在前,低字节在后,因此输出78563412
也就是little endian,高字节放高内存区,符合人的习惯。网络字节是big endian,
8.
char a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}} };
for(int i=0;i<12;i++)
printf("%d ",_______);
空格处填上合适的语句,顺序打印出a中的数字
*(&a[0][0][0]+i)
9。void fun(char *a,char *b)
{
a=b;
(*a)++;
}
void main()
{
char s1='A',s2='a';
char *p1=&s1;
char *p2=&s2;
fun(p1,p2);
printf("%c%c",s1,s2);
输出结果:
Fun的功能是使得b指向的内容增1,故结果为Ab
10。写一个strstr()函数
见string。c
标 题: 南京MOTO昨天笔试的题型
发信站: 饮水思源 (2005年10月22日15:21:12 星期六)
两小时的笔试眨眼就过去了,总算积累了一点笔经,分享一下。
题型:选择,程序填空,智力题,编程题
题目主要有:
1.数字电路中的与非门等问题;
2.网络基本知识;
3.移动通讯网络基本知识;
4.JAVA虚拟机垃圾收信问题;
5.JAVA程序分析题;
6.C/C++基本问题;
7.Little-ending, Big-ending问题, 及Intel和Sun处理器各自采用的ENDING问题;
8.指针, 数组问题;
9.逻辑/离散题;
...
11.程序填空题(C/C++)
12.智力题;
13.C/C++编程题
A. 输出19行的棱形
B. 查找字符串
发信人: szws (克米帅*努力找工作中c&mfc&asp), 信区: Jobs
标 题: [转载] 今天摩托罗拉笔试的智力题
发信站: 紫金飞鸿 (Fri Oct 21 22:24:30 2005)
【 以下文字转载自 Riddle 讨论区 】
【 原文由 szws 所发表 】
说是甲,乙,丙,丁四个人得罪了皇帝,皇帝要惩罚他们,手段比较委婉,他是这么做的
有一座高墙,甲站在墙的一边,面朝墙,乙,丙,丁站在墙的另一边,面朝墙站成一条
线,乙最前,丙在中间,丁在最后,他们都面向墙的。
将甲,乙,丙,丁四个人的眼睛蒙上,给他们各自戴上一顶帽子,帽子的颜色分别是红
,红,蓝,蓝。将他们眼睛上的纱布拿开,他们不能看自己头上帽子的颜色,站在前面的
人看不到后面人头上帽子的颜色,站在后面的人可以看到前面人头上帽子的颜色。他们中
只要有人正确说出自己头上帽子的颜色,四个人都释放,一旦说错,四人都处死。注意,
只有一次开口说话的机会。他们都很聪明,问:谁最后会开口说话?
首先,四个人都是聪明人
1、皇帝是要惩罚他们的,不是要放水,所以决不会让丁看到两顶同样颜色的帽子
2、丙会等丁,他发现丁闭口不言,即可判断自己与前面的乙的帽子颜色不同
所以,丙会说话
class human
{
public:
human() { human_num++;};
static int human_num;
~human(){
human_num--;
print();
}
void print()
{
cout<<"human nun is: "<<human_num<<endl;
}
protected:
private:
};
int human::human_num = 0;
human f1(human x)
{
x.print();
return x;
}
int main(int argc, char* argv[])
{
human h1;
h1.print();
human h2 = f1(h1);
h2.print();
return 0;
}
写出程序的输出结果
因为没有拷贝构造函数和赋值运算符,
所以临时对象x和h2时使用的位拷贝,hum_num不增 ,而析构函数要减 hum_num
所以 最后hum_num的值为-2
human h1; // hum_num = 1
h1.print(); // print 1
human h2 = f1(h1);
human f1(human x)
{
xcopy = x; // hum_num = 1
xcopy.print(); // print 1
return xcopy; // 返回给h2,hum_num = 1
// 析构xcopy,hum_num = 0, print 0
}
h2.print(); // hum_num = 0, print 0
析构h2,hum_num = -1, print -1
析构h1,hum_num = -2, print -2
所以临时对象x和h2时使用的位拷贝,hum_num不增 ,而析构函数要减 hum_num
所以 最后hum_num的值为-2
human h1; // hum_num = 1
h1.print(); // print 1
human h2 = f1(h1);
human f1(human x)
{
xcopy = x; // hum_num = 1
xcopy.print(); // print 1
return xcopy; // 返回给h2,hum_num = 1
// 析构xcopy,hum_num = 0, print 0
}
h2.print(); // hum_num = 0, print 0
析构h2,hum_num = -1, print -1
析构h1,hum_num = -2, print -2
------------------------------
human nun is: 1
human nun is: 1
human nun is: 0
human nun is: 0
human nun is: -1
human nun is: -2
- motorola摩托罗拉笔试题2
- motorola摩托罗拉笔试题1
- 2005 motorola笔试题
- Motorola笔试题
- 摩托罗拉笔试题
- 摩托罗拉的笔试题
- 南京摩托罗拉笔试题
- 摩托罗拉笔试题
- Motorola/摩托罗拉A1260 root教程_方法
- Motorola/摩托罗拉Cliq2 root教程_方法
- Motorola/摩托罗拉MB865 root教程_方法
- Motorola/摩托罗拉XT317 root教程_方法
- Motorola/摩托罗拉ME600(黑金刚版) root教程_方法
- 摩托罗拉(Motorola) MC2180条码采集器 .NET开发 接入条码组件
- 别了,摩托罗拉2
- 摩托罗拉
- Motorola MPX220
- nj motorola
- 在子线程中创建线程的方法
- 不同平台DB2数据库之间大批量的移动数据(三
- motorola摩托罗拉笔试题1
- 线程基本概念
- sqlplus常用命令使用
- motorola摩托罗拉笔试题2
- ASP.NET分析器错误信息: 访问被拒绝
- C++标准程序库学习笔记
- cTableWidow行标志设置/取当选cTableWidow的行号的函数
- 返回上一頁
- Delphi写的通过串口发送短信的控件
- Rational Robot中跨脚本调用函数的注意点—Declare语句解释
- The feeling is good
- ERP的解释