“江湖骗之”通过精心收集,向本站投稿了12篇威盛公司软件C++工程师笔试题,以下是小编精心整理后的威盛公司软件C++工程师笔试题,希望对大家有所帮助。

威盛公司软件C++工程师笔试题

篇1:威盛公司软件C++工程师笔试题

威盛公司软件C++工程师笔试题

1.How good do you see yours programming skills?Please circle your answers

C: Fair/Good/Excellent

C++: Fair/Good/Excellent

2.Please estimate your programming experince:

How many lines of code are your biggest C Program ever written excluding thestandard linked library?

How many lines of code are your biggest C++ program ever written excluding the standard linked library?

3.Please explain the following terms

Data Encapsulation

Inheritance

Polymorphism

4.What is a virtual base class?How do you declare such a class?How would you use it in a design?

5.What is a template or container class?How do you declare such a class?

6.Which are the access control levels for C++ language?

7.What is RTTI?How do you achieve RTTI in your design?

8.What are the major differences between static and non-static member functions?

9.How do you call a regular member function from a static member function?

Please use psendo-code to provide your answer

10.How do you declare/define a type of pointer to a class member function?

Please use psendo-code to provide your answer

11.Please explain the following tyoes:

Here is a short lise of combinations and their meanings:

1.Reference-Can change the referenced object

2.Const-Reference

3.Const-Pointer-

4.Pointer-Const-

5.Const-Pointer-Const-

CFoo Instance

CFoo &ReferenceToInstance=Instance; //1

const CFoo &ConstReferenceToInstance=Instance; //2

const CFoo *pConstPointer=&Instance; //3

CFoo *const pPointerConst=&Instance; //4

const CF00 *const pPointerConst=&Instance; //5

12.What are top-down and bottom-up approach?How do you usually use them?

13.Please use pseudo-code to design a set of stack operations with template

14.Please use pseudo-code to design a set of double linked list operations with template

Optional Questions:(for extra credits)

15.Please write a unix makefile for Question13

16.Please explain these common sections:text,data,bss

篇2:威盛软件笔试题

威盛软件笔试题

1.说明下面程序的作用,

func(char*a,char*b)

{

while(*a++=*b++);

return;

}

2.#include %26lt;stdio.h%26gt;

#define ADD(p) {p++;(*p)++;}

Add(int *p) {p++;(*p)++;}

int a[]={0,1,2};

int main

{

int *p=a;

ADD(p)

ADD(p)

printf(“%d,%d,%dn”,a[0],a[1],a[2]);

p=a;

Add(p);

Add(p);

printf(“%d,%d,%dn”,a[0],a[1],a[2]);

}

输出多少?

3.说明下面的的表达有没有不同,如果不同,请说明不同在哪里,

char* s1=“hello”;

char s2[]=“world”;

4.简述auto,static,register,extern四种存储类型的'区别

5.int count=0;

int x=

int main()

{

while(x)

{

count++;

x=x%26(x-1);

}

return count;

}

问输出返回的count值。

6.编程给一个程序,输入N,(1%26lt;=N%26lt;=20)给N*N的矩阵进行Zigzag赋值,

即:N=0 时,a[0]=0;

N=4 时,a[4][4]=0 1 5 6

2 4 7 12

3 8 11 13

9 10 14 15

篇3:威盛软件笔试题

威盛软件笔试题目分享:

1.#include #define ADD(p) {p++;(*p)++;}Add(int *p) {p++;(*p)++;}int a[]={0,1,2};int main(){int *p=a;ADD(p)ADD(p)printf(“%d,%d,%d/n”,a[0],a[1],a[2]);p=a;Add(p);Add(p);printf(“%d,%d,%d/n”,a[0],a[1],a[2]);}输出多少?

2.:说明下面程序的作用,

func(char*a,char*b){while(*a++=*b++);return;}

3.:说明下面的的表达有没有不同,如果不同,请说明不同在哪里,

char* s1=“hello”;

char s2[]=“world”;

4.简述auto,static,register,extern四种存储类型的区别

5.:int count=0;int x=2007int main(){while(x){count++;x=x&(x-1);}return count;}问输出返回的count值。

6.:8个台阶,上台阶的人一次最多上3个台阶,问上这个8个台阶有多少种方法?

7.编程给一个程序,输入N,(1<=N<=20)给N*N的矩阵进行Zigzag赋值,即:N=0 时,a[0]=0;N=4 时,a[4][4]=0 1 5 6 2 4 7 12 3 8 11 13 9 10 14 15

篇4:威盛笔试题

威盛笔试题

早上记起有威盛的笔试,隐约记得好像是9点,

到了一看,发现不到30人,当时心里还说,怪不得选

这么小的教室,有道理,呵呵!后来才知道笔试时间是

9:30,而且后面来了很多人,四个人的桌子坐了5,6个人

还有很多兄弟站着答题,即使这样,还有很多人没地方,结果

没让他们考试。这也罢了,考到一半居然有人进来轰人,

真是faint。

既然考过了,给后人做点贡献吧。

考题一共七套,应聘不同的职位采用不同考题。其实这欧都不知道,

考场才知道,于是随便选了一个logic。一共十道题,

1.写你最近遇到的一个问题及解决方法,可以是工作上和生活上的任何事情

英文做答。easy,当作英文小短文写了。

2.有点忘了,好像是说除了ICs以外,还有一些什么东西的主要作用(忘了)

3.设计一个全加器

4.用CMOS技术画出用verilog表示的z=s?A:B的结构图。

5.也是跟verilog有关的,好像是给出时序,输入,设计什么东西之类的',也记不太清!

6.给一个黑匣子,有输入X,时序CK,输出Y,给定settimeY和xxxtimeZ,问Y或者Z或者

Y+Z能否为negativetime,why?应该是这样的

7.给你一堆名词,举例他们的作用,

有PCI、ECC(?)、DDR、interrupt、pipeline

8.好像是设计一个自动售货机系统,卖soda水的,只能投进三种硬币,要正确的找回钱数

给出详细的设计步骤和方法,画出框图,什么输入输出什么的自己定

9.10被轰出了教室,没看!

个人感觉:考试及其混乱,可以看书,也经常有人相互交流。这么多人居然着这么小

一个教室,还考到一半被人轰了出来,真是让我对威盛的印象大打折扣。

相关主题阅读:

雅虎公司C#笔试题

腾讯技术类笔试

intel技术类笔试题

四大事务所笔试题目选摘

威盛公司软件C++工程师笔试题

篇5:C工程师笔试题

1、关键字static的作用是什么?

这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:

1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。

3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。(本地化数据和代码范围的好处和重要性)。

2、“引用”与指针的区别是什么?

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

2) 引用初始化以后不能被改变,指针可以改变所指的对象。

3) 不存在指向空值的引用,但是存在指向空值的指针。

指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。

流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。

3、.h头文件中的ifndef/define/endif 的作用?

答:防止该头文件被重复引用。

4、#include 与 #include “file.h”的区别?

答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。

5、描述实时系统的基本特性

答 :在特定时间内完成特定的任务,实时性与可靠性。

6、全局变量和局部变量在内存中是否有区别?如果有,是什么区别?

答 :全局变量储存在静态数据区,局部变量在堆栈中。

7、什么是平衡二叉树?

答 :左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1。

8、堆栈溢出一般是由什么原因导致的?

答 :1.没有回收垃圾资源2.层次太深的递归调用

9、冒泡排序算法的时间复杂度是什么?答 :O(n^2)

10、什么函数不能声明为虚函数?答:constructor

篇6:C工程师笔试题

1、队列和栈有什么区别?答:队列先进先出,栈后进先出

2、不能做switch的参数类型答 :switch的参数不能为实型。

3、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。要用全局变量,需要使用”::”

局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内

4、如何引用一个已经定义过的全局变量?

答 、可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变量,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。

5、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

答 、可以,在不同的C文件中以static形式来声明同名全局变量。

可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。

6、语句for( ;1 ;)有什么问题?它是什么意思?答 、和while(1)相同,无限循环。

7、do„„while和while„„do有什么区别?答 、前一个循环一遍再判断,后一个判断以后再循环。

8、statac 全局变量、局部变量、函数与普通全局变量、局部变量、函数

答 、全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

9、程序的内存分配

答:一个由c/C++编译的程序占用的内存分为以下几个部分

1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。

3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。

4、文字常量区—常量字符串就是放在这里的。程序结束后由系统释放。

5、程序代码区—存放函数体的二进制代码

例子程序

这是一个前辈写的,非常详细

//main.cpp

int a=0; //全局初始化区

char *p1; //全局未初始化区

main

{

intb;栈

char s=”abc”; //栈

char *p2; //栈

char *p3=”123456″; //123456在常量区,p3在栈上。

static int c=0; //全局(静态)初始化区

p1 = (char*)malloc(10);

p2 = (char*)malloc(20); //分配得来得10和20字节的区域就在堆区。

strcpy(p1,”123456″); //123456放在常量区,编译器可能会将它与p3所向”123456″优化成一个地方。 }

10、解释堆和栈的区别

答:堆(heap)和栈(stack)的区别

(1)申请方式

stack:由系统自动分配。例如,声明在函数中一个局部变量int b;系统自动在栈中为b开辟空间

heap:需要程序员自己申请,并指明大小,在c中malloc函数如p1=(char*)malloc(10);

在C++中用new运算符,如p2=(char*)malloc(10);但是注意p1、p2本身是在栈中的。

(2)申请后系统的响应

栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。

堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。另外,由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余的那部分重新放入空闲链表中。

(3)申请大小的限制

栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。

堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。

(4)申请效率的比较:

栈:由系统自动分配,速度较快。但程序员是无法控制的。

堆:是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便.

另外,在WINDOWS下,最好的方式是用Virtual Alloc分配内存,他不是在堆,也不是在栈,而是直接在进程的地址空间中保留一块内存,虽然用起来最不方便。但是速度快,也最灵活。

(5)堆和栈中的存储内容

栈:在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。

当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。

堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容由程序员安排。

(6)存取效率的比较

char s1=”aaaaaaaaaaaaaaa”; aaaaaaaaaaa是在运行时刻赋值的;

char *s2=”bbbbbbbbbbbbbbbbb”; 而bbbbbbbbbbb是在编译时就确定的;

但是,在以后的存取中,在栈上的数组比指针所指向的字符串(例如堆)快。

比如:

#include

voidmain

{

char a=1;

char c=”1234567890″;

char *p=”1234567890″;

a = c[1];

a = p[1];

return;

}

对应的汇编代码

10:a=c[1];

004010678A4DF1movcl,byteptr[ebp-0Fh]

0040106A884DFCmovbyteptr[ebp-4],cl

11:a=p[1];

0040106D8B55ECmovedx,dwordptr[ebp-14h]

004010708A4201moval,byteptr[edx+1]

004010738845FCmovbyteptr[ebp-4],al

第一种在读取时直接就把字符串中的元素读到寄存器cl中,而第二种则要先把指针值读到edx中,在根据edx读取字符,显然慢了。

篇7:C工程师笔试题

1、什么是预编译,何时需要预编译?

答:预编译又称为预处理,是做些代码文本的替换工作。处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等,就是为编译做的预备工作的阶段,主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。

c编译系统在对程序进行通常的编译之前,先进行预处理。

c提供的预处理功能主要有以下三种:1)宏定义 2)文件包含 3)条件编译

2、关键字const是什么含意?

答: “const意味着常数”业余者。 “只读”正确的答案。

const int a; a是一个常整型数

int const a; a是一个常整型数

const int *a; a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。

int * const a; a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的) int const * a const; a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)

1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)

2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。

3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现

篇8:软件工程师笔试题

考察虚继承内存体系

class A

{

public:

A { cout<<“Construct A”<

~A { cout<<“Destruct A”<

void speak { cout<<“A is speaking!”<

};

class B:public virtual A

{

public:

B { cout<<“Construct B”<

~B { cout<<“Destruct B”<

};

class C:public virtual A

{

public:

C { cout<<“Constuct C”<

~C { cout<<“Destruct C”<

};

class D:public B, public C

{

public:

D{ cout<<“Constsruct D”<

~D{ cout<<“Destruct D”<

};

int main

{

D *p = new D;

p->speak;

delete p;

}

输出:

Construct A

Construct B

Constuct C

Constsruct D

A is speaking!

Destruct D

Destruct C

Destruct B

Destruct A

篇9:软件工程师笔试题

考察非虚析构函数

1、class Parent

{

public:

Parent{cout<<“Parent construct”<

~Parent{ cout<<“Parent destruct ”<

};

class Child : public Parent

{

public:

Child { cout<<“Child construct ”<

~Child {cout<<“child destruct”<

};

int main

{

Parent *p;

Child *c = new Child;

p = c;

delete p; 因为析构函数是非virtual的,故析构的时候按照指针的类型进行析构

}

输出:

Parent construct

Child Construct

Parent destruct

2、 考察初始化列表的写法

class A

{

public:

A(int x, int y, int z):a=x,b=y,c=z (1)

A(int x, int y, int z):a(x),b(y),c(z) (2)

private:

int a;

int b;

int c;

};

int main

{

A a(1,2,3);

}

篇10:软件工程师笔试题

1、考察拷贝构造函数和赋值的区别。

class A

{

public:

A { cout<<“Construct A by default”<

A(const A& a) { cout<<“consttuct A by copy”<

A& operator =(const A& a) { cout<<“cosnt A by operator =”<

~A { cout<<“Destruct A”<

};

int main

{

A a;

A b=a; //调用拷贝构造函数

A c(a); //调用拷贝构造

A d;

d=a; //赋值

}

输出:

Construct A by default //构造对象a

consttuct A by copy //拷贝构造b

consttuct A by copy //拷贝构造c

Construct A by default //构造a

cosnt A by operator = //赋值d=a

Destruct A

Destruct A

Destruct A

Destruct A

2、 考察函数指针

void func(char* a)

{

cout<

}

int main

{

void (*fp)(char*); //填空处

fp = func; //函数名func相当于函数的地址,将其赋给函数指针fp

char* s=“helloc”;

fp(s);

}

篇11:软件工程师笔试题

软件工程师笔试题

1.什么是软件需求,在项目中你将如何获取需求并正确传递该需求,

2.在oracle中,表student只有一个字段,名为stuname,请使用SQL语句将表中的重复记录筛选出来。

3.某天领导给你一项工作,规定在3天内完成。但是当你在执行该工作前,发现出现如下情况:

A、发现不加班就无法完成工作;

B、发现完成该工作所需要的技能,你目前还不具备,

4.请使用JAVA代码,给一个对象“继承”的案例。

5.你的'角色是一个软件实施工程师,负责将已经开发好的系统部署上线并向客户提供使用培训。某天一名重要客户向你强烈抱怨软件的质量出了问题,作为在现场的唯一公司人员,你会做哪几件事?

篇12:威盛笔试试题软件

2002年软件笔试题

1.三组程序,找出你认为的错误,

(1)a.c long temp[255];

b.c extern *temp;

(2)a.c long temp[255];

b.c extern temp[256];

(3)a.c long temp[255];

b.c extern temp[];

2.在第一个声明处编译出了奇怪的错误,为什么?

#include

#include “myfun1.h”

#include “myfun2.h”

int myInt1;

int myInt2;

3.printf(“0x%x”, (&0)[?1]); 请问打印了什么?

4.汇编,用ax,bx,cx,dx,求1000×1000/30(四舍五入),结果放在ax中,

阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。