阿尔卡特笔试经验分享

进修社 人气:1.98W

笔试题目(一)

阿尔卡特笔试经验分享

1、简要说软件开发的过程,说说自己的编程风格,经验和教训

2、开发RTOS需要考虑什么?描述一下抢占式RTOS的机制

3、用两种方法分配8个INT-32类型的数据,并说明其分配在内存中的位置

4、两个程序分别什么结果,都是memory方面的。ST笔试都考过了

5、如何防止头文件被多次引用

6、写一个函数指针,并在函数中使用

7、在一个值从小到大的数组中用二分法查找一个值

8、写一个函数将字符串反过来,函数接口用两个指针

笔试题目(二)

Part A是一些你的知识技能调查

Part B全是通信方面的东西,不会做了,题目都没看完

Part C是Computer Sience的东西。

前3道是选择题,很easy

1、用A[1...n]模拟栈,A[n]是栈底,当A[T]是当前栈顶时,POP操作后,当然栈顶是什么

答:A[T-1]

2、假设二叉树的根是为0层,那么第i层最多有几个节点?

答:2i

3、以下各项那项是结构化编程语言不允许的a if-else b loop-while,for c goto d function

答:c 顺序结构,选择结构(亦称分支结构,和循环结构

4、给出软件生存周期图---------

答:瀑布模型:设计阶段--开发阶段--维护阶段

①问题定义及规划 ②需求分析 ③软件设计 ④程序编码 ⑤软件测试 ⑥运行维护

5、C的Structure和C++ 的class的.什么不同之处

答:Structure的默认访问权限是public class的默认访问权限是private

6、什么是virtual函数,为什么使用virtual函数

答:虚成员函数和非虚成员函数调用方式有什么不同?

非虚成员函数是静态确定的。也就是说,该成员函数(在编译时)被静态地选择,该选择基于指象对象的指针(或引用)的类型。

相比而言,虚成员函数是动态确定的(在运行时)。也就是说,成员函数(在运行时)被动态地选择,该选择基于对象的类型,而不是指向该对象的指针/引用的类型。这被称作“动态绑定”。大多数的编译器使用以下的一些的技术:如果对象有一个或多个虚函数,编译器将一个隐藏的指针放入对象,该指针称为“virtual-pointor”或“v-pointer”。这个v-pointer指向一个全局表,该表称为“虚函数表(virtural-table)”或“v-table”。

编译器为每个含有至少一个虚函数的类创建一个v-table。例如,如果Cirle类有虚函数ddraw()、move() 和 resize(),那么将有且只有一个和Cricle类相关的v-table,即使有一大堆Circle对象。并且每个 Circle对象的 v-poiner将指向Circle的这个 v-table。该 v-table自己有指向类的各个虚函数的指针。例如,Circle 的v-table 会有三个指针:

一个指向Circle::draw(),一个指向 Circle::move(),还有一个指向Circle::resize()。

在分发一个虚函数时,运行时系统跟随对象的 v-pointer找到类的 v-table,然后跟随v-table中适当的项找到方法的代码。

以上技术的空间开销是存在的:每个对象一个额外的指针(仅仅对于需要动态绑定的对象),加上每个方法一个额外的指针(仅仅对于虚方法)。时间开销也是有的:和普通函数调用比较,虚函数调用需要两个额外的步骤(得到v-pointer的值,得到方法的地址)。由于编译器在编译时就通过指针类型解决了非虚函数的调用,所以这些开销不会发生在非虚函数上。

虚函数用来表现基类和派生类的成员函数之间的一种关系.

虚函数的定义在基类中进行,在需要定义为虚函数的成员函数的声明前冠以关键字 virtual.

基类中的某个成员函数被声明为虚函数后,此虚函数就可以在一个或多个派生类中被重新定义.

在派生类中重新定义时,其函数原型,包括返回类型,函数名,参数个数,参数类型及参数的先后顺序,都必须与基类中的原型完全相同.

虚函数是重载的一种表现形式,是一种动态的重载方式.

7、填空完成ip v4协议表头

8、你认为造成软件 crash的主要原因是什么,怎么预防?

答:Crash的主要原因是因为访问了不该访问的东西,比如对非法地址进行写操作。

9、用C自己写一个string copy函数

答:Void strcpy(char *s, char *t)

{

While (*s++ = *t++)

;

}

10、写一个双向链表的插入函数

//在链表第i个位置上插入元素status listinsert(dulinklist L, int i. Elemtype e)

{

Dulinklist p,s;

If(i < 1 | i > listlength(L) + 1)

Return ERROR;

P = getelemp(L, i - 1); //在L中确定第i个节点前驱的位置指针p

If(!p)

Return ERROR;

S->data = e; //将e赋给新节点

S->prior = p; //新节点的前驱为第i - 1个节点

S->next = p-> next; //新节点的后继为第i个节点

P->next->prior = s; //第i个节点的前驱指向新节点

P->next = s; //第i - 1个节点的后继指向新节点

Return OK;

}

Part D (optional)给出你认为贝尔会感兴趣的topic

结合阿尔卡特朗讯是一家提供电信软硬件设备及服务的跨国公司这个背景来讲吧

阿尔卡特朗讯为全世界的服务提供商、企业和政府提供解决方案,帮助其为终端用户提供语音、数据和视频服务。作为一个在固定、移动、融合宽带市场、IP 技术、应用和服务领域的领导者,阿尔卡特朗讯端到端的解决方案,令人们能够在家中、工作时、移动过程中享受到丰富的通讯服务。