华为的笔试太bt了,开始是素质考试,题量大,头很晕,然后是技术考试,题目也不少。总之把人累得一蹋糊涂。
接着是三轮面试,一轮技术,二轮小组群面,三轮就是跟你讨论地点了。
发信人: window (pja), 信区: Job
标 题: 华为软件面试式题大全
发信站: 武汉白云黄鹤站 (Thu Nov 2 17:09:06 2000), 转信
c 语言
1. 编写一种排序方法
2. 链表倒序
3
4
还有不用函数实现小写字符串变大写。呵呵。
写出 c 语言库函数memcopy(*p1,*p2,int n )算法
【
1、int
i=10, j=10, k=3; k*=i+j; k最后的值是___
60
2、进程间通信的方式有__
__ __ __等。
http://blog.csdn.net/lne818/archive/2006/07/31/1005041.aspx
Linux
下进程间通信的几种主要手段简介:
1.
管道(
Pipe
)及有名管道(
named pipe
):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;
2.
信号(
Signal
):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;
Linux
除了支持
Unix
早期信号语义函数
sigal
外,还支持语义符合
Posix.1
标准的信号函数
sigaction
(实际上,该函数是基于
BSD
的,
BSD
为了实现可靠信号机制,又能够统一对外接口,用
sigaction
函数重新实现了
signal
函数);
报文(
Message
)队列(消息队列):消息队列是消息的链接表,包括
Posix
消息队列
systemV
消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
共享内存:使得多个进程可以访问同一块内存空间,是最快的可用
IPC
形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
信号量(
semaphore
):主要作为进程间以及同一进程不同线程之间的同步手段。
套接口(
Socket
):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由
Unix
系统的
BSD
分支开发出来的,但现在一般可以移植到其它类
Unix
系统上:
Linux
和
System V
的变种都支持套接字。
3、网桥是独立于___协议的,(后面还有一句话,记不得了)
网络层
4、struct
A
{
char
t:4;
char
k:4;
unsigned
short i:8;
unsigned
long m;
}
sizeof(A)=___(不考虑边界对其)
Vc
是
8
该错题:
1、下面的函数实现在一个固定的数上加上一个数,有什么错误,改正
int
add_n(int n)
{
static
int i=100;
i+=n;
return
i;
}
I
每次都变化
2、就是大家说的少一个free的那道题
3、就是const
字符串不能被修改的问题
4、char
p[5];
char*
s="12345";
strcpy(p,s);
5、class
A
{
public:
A()
{ p=this; }
~A()
{ if(p!=NULL) { delete p; p=NULL; } }
A*
p;
};
这个问题我说一下,可能出题者自己也没意识到这个问题,因为在趋势的考试中这样
的
error
也出现了。
显然,出题者的意图是:
delete this
之后,不能操作这个对象了,所以,
p=NULL
是错
误的。但是还有一个错误:
big-three
原则,定义了析构函数,缺少了
copy ctr
和
operato
r=
。
发信人: xjtuwolf (西北望,射天狼), 信区: job
标 题: 华为面试题(软件)
发信站: 兵马俑BBS (Fri Nov 28 13:35:14 2003), 转信(bbs.xjtu.edu.cn)
第一题:
指针的使用,地址的概念
第二题:
编程把一个整数分解质因子并打印
第三题:
编程打印如下图案
(
不能用数组
,
递归
,
不考虑空格
)
1
121
12321
121
1
发信人: evileye (邪眼), 信区: job
标 题: 华为最后三个大题
发信站: 饮水思源 (2004
年11月12日10:23:03 星期五), 站内信件
1.A,B,C,D
四个进程,
A
向
buf
里面写数据,
B,C,D
向
buf
里面读数据,
当
A
写完,且
B
,
C
,
D
都读一次后,
A
才能再写。用
P
,
V
操作实现。
2.将单向链表reverse,如ABCD变成DCBA,只能搜索链表一次。
3.将二叉树的两个孩子换位置,即左变右,右变左。不能用递规(变态!)
其实也可以类似于二叉树的非递归遍历,比如前序遍历,只不过
visit
变成交换左右孩子节点。
先将根节点压栈,然后进入
while
循环,条件栈不空
将节点出栈,交换其左右节点,然后再将左右节点进栈
发信人: autumn (秋天不该那么绝望的), 信区: job
标 题: 华为D卷最后四大题
发信站: 饮水思源 (2004
年11月12日12:41:17 星期五), 站内信件
1、
A1,A2....An
和
B
交换资源,求写出
PV
操作的序列
2、非递归实现废物不拉屎数列.
3、折半查找干啥用的?
实现之.
4、实现有序链表上的插入
题目概要:一射击选手射击
10
次共得
89
环,每次射击获得环数范围为
[0,10]
。请给出他射击
结果的所有可能性。
1、int
i=10, j=10, k=3; k*=i+j; k最后的值是___
2、进程间通信的方式有__
__ __ __等。
3
、网桥是独立于
___
协议的,(后面还有一句话,记不得了)
网络层
4、struct
A
{
char
t:4;
char
k:4;
unsigned
short i:8;
unsigned
long m;
}
sizeof(A)=___(不考虑边界对其)
1、下面的函数实现在一个固定的书上加上一个数,有什么错误,改正
int
add_n(int n)
{
static
int i=100;
i+=n;
return
i;
}
2、就是大家说的少一个free的那道题
3、就是const
字符串不能被修改的问题
4、char
p[5];
char*
s="12345";
strcpy(p,s);
5、class
A
{
public:
A()
{ p=this; }
~A()
{ if(p!=NULL) { delete p; p=NULL; } }
A*
p;
};
这个问题我说一下,可能出题者自己也没意识到这个问题,因为在趋势的考试中这样
的error也出现了。
显然,出题者的意图是:delete
this之后,不能操作这个对象了,所以,p=NULL是错
误的。但是还有一个错误:big-three原则,定义了析构函数,缺少了copy
ctr和operato
r=。
.要求采用非递归的方法,把二叉树的每一个非叶子节点的左右孩子节点互换,试编写函数。
函数原型:void
exchange(node *t){ ... }//t为二叉树的根节点。
树节点结构:
typedef
struct node
{
int data;
node *left;
node *right;
};
变相的二叉树遍历题目,可以采用先序遍历,层次遍历等
typedef struct node
{
int key;
struct node *llink,*rlink;
}NODE;
void exchange(NODE *root)
{
NODE *r,*p,stack[MAX];
int top=0;
stack[++top]=root;
while(top>0)
{
p=stack[top--];
if(p!=NULL){
r=p->llink;
p->llink=p->rlink;
p->rlink=r;
stack[++top]=p->llink;
stack[++top]=p->rlink;
}
}
}
任意给定
9
个自然数,请给出一定的规则(一条或几条)判断是否能组成九宫图。
据华为经理说这是小学的奥赛题。
从小到大排序,设中间位置(第
5
)个数为
m
,则必须符合
一、
m-d, m-c, m-b, m-a, m, m+a, m+b, m+c, m+d
的模式
这里已经假设了
0<=a<=b<=c<=d
,
根据
a, b, c, d
的不同有几种可能。
或者是:
二、
d = c = b = a = 0
或者是:
二、
a = 0
三、
b = c > 0;
四、
d = b
或者
d = 2b
或者是:
二、
d > c > b > a > 0
三、
c = a + b
四、
d = a + c
或者
d = b + c
int a[10][10]={...};
要求对
a
进行排序
,
使之
:
1
每行从左到右为非减序列
;
2
每列从上到下为非减序列
;
当作一维数组直接排序就可以了