面试题集之一

2011 华赛校园招聘-- 面试

技术面试面的题:

hash 表原理 :

介于 1 100 万之间的 100 万个数,只有一个是重复的,找出这个重复的数。

构造函数的种类,拷贝构造函数在什么时候使用

对象作为一个函数的参数,如果在函数中对对象进行改变,对象本身是否改变。

SQL 中, join 连接的应用

开发中经常使用到的 C/C++ 函数

引用与指针的区别

windows 安全机制

什么句柄,句柄的应用

多线程编程

进程线程区别

.....

 

  2011 艾默生校园招聘- 软件工程师笔试题( 部分)

  1. 考察虚继承内存体系     

class A

{

public:

A() { cout<<"Construct A"<<endl; }

~A() { cout<<"Destruct A"<<endl; }

void speak() { cout<<"A is speaking!"<<endl; }

};

class B:public virtual A

{

public:

B() { cout<<"Construct B"<<endl; }

~B() { cout<<"Destruct B"<<endl; }

};

class C:public virtual A

{

public:

C() { cout<<"Constuct C"<<endl; }

~C() { cout<<"Destruct C"<<endl; }

};

class D:public B, public C

{

public:

D(){ cout<<"Constsruct D"<<endl; }

~D(){ cout<<"Destruct D"<<endl; }

};

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

 

2 考察非虚析构函数            

class Parent

{

public:

Parent(){cout<<"Parent construct"<<endl; }

~Parent(){ cout<<"Parent destruct "<<endl; }

};

class Child : public Parent

{

public:

Child() { cout<<"Child construct "<<endl; }

~Child() {cout<<"child destruct"<<endl; }

};

 

int main()

{

Parent *p;

Child *c = new Child();

p = c;

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

}

输出:

Parent  construct

Child Construct

Parent destruct

 

3 考察初始化列表的写法

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);

}

1 中写法是错误的,第 2 中正确。

 

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

class A

{

public:

A() { cout<<"Construct A by default"<<endl; }

A(const A& a) { cout<<"consttuct A by copy"<<endl; }

A& operator =(const A& a) { cout<<"cosnt A by operator ="<<endl; return *this;}

~A() { cout<<"Destruct A"<<endl; }

};

 

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

 

5 考察函数指针

void func(char* a)

{

cout<<a<<endl;

}

 

int main()

{

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

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

char* s="helloc";

fp(s);

}

  2010 成都华赛面试题

1. 链表的插入、删除操作

2. 结构体的对齐

3. 用指针来历遍一个三位数组(用一个 for 循环实现)

  华为面试题

 

有两个数组 a,b ,大小都为 n, 数组元素的值任意,无序;

要求:通过交换 a,b 中的元素,使数组 a 元素的和与数组 b 元素的和之间的差最小

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值