華爲的筆試太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 每列從上到下爲非減序列;
當作一維數組直接排序就可以了