- 相關推薦
華為筆試經驗分享(2)
篇中提及的問題的解答:
1、1到100之間的所有素數之和;
int i = 1;
int j = 0;
bool change= 1;
int sum = 0;
for (i=1; i<100; i++)
{
for (j=2; j
{
if(i%j==0)
{
change = 0;
break;
}
}
if(change==1)
sum +=i;
change = 1;
}
printf("%d\n",sum);
2、隊列的實現;(用數組或者鏈表,定義好輸入和輸出即可)
3、選首領(有一群人圍在一圈,從第一個人開始數1、2、3,數到3者退出,用循環鏈表實現)
n個人圍成一圈,從第一個人開始依次從1到m循環報數,當報到m的時候此人出圈,直到圈 中只剩一人為止.求最后一個人的原始編號。
int yuesefu(int n,int m)
{
int i,r=0;
for (i=2;i<=n;i++) r=(r+m)%i;
return r+1;
}
4、字符串匹配問題(int countABC(* s) 輸入任何一串字符串,計算機其中有連續ABC子字符 串的個數)
int countABC(* s)
{
int i = 0;
int j = 0;
int num = 0;
scanf("%s",s);
int len = strlen(s);
for (i=0; i
{
j = strcmp(s+i,"ABC");
if(j==0)
num++;
}
}
5、用數組存儲超大數的問題。
這是數組得一個應用,思想是我們定義一個數組,讓每一個元素得值都是從后到前以十 進制得方式存貯得,如過到了9下一位就要讓前一個元素進位為1,9變為0同時。
下面這個例子是要求一個40位的 n!的值
int data[40];//存儲40位書的整數數組
int digit;//數據位數變量
int i,j,r,k;
int n;//用戶輸入值
for(i=1; i<40+1; i++)
data[i]=0;
data[0]=data[1]=1;
digit=1;
printf("enter a number :");
scanf("%d",n);
for(i=1; i
{
for(j=1; j
data[j]*=i;
for(j=1; j
{
if(data[j]>10)
{
for(r=1; r
{
if(data[digit]>10)//大于10時候位數加1
digit++;
data[r+1]+=data[r]/10;//進位增加
data[r]=data[r]%10;//去掉進位后得值
}
}
}
printf("%d! = ",i);
for(k =digit; k>0; k--)
printf("%d",data[k]);
printf("\n");
}
6、詢問我操作系統的進程和線程的區別
進程和線程都是由操作系統所體會的程序運行的基本單元,系統利用該基本單元 實現系統對應用的并發性。進程和線程的區別,簡而言之:
一個程序至少有一個進程,一個進程至少有一個線程.
線程的劃分尺度小于進程,使得多線程程序的并發性高。
另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大 地提高了程序的運行效率。
=========================================
1、ping命令使用的是哪種報文?
PING命令使用ICMP的哪種code類型:Echo reply(回顯請求報文)
2、OSI分哪幾個層,IP是在哪個層?
osi:物理層、鏈路層、網絡層、傳輸層、會話層、管理層、應用層。
tcp/ip:主機網絡層、互聯層、傳輸層、應用層。ip是在互聯層
3、哈希表的問題
主要用于快速查找檢索方面
4、為什么要采取二叉樹這種數據結構?
他折半查找,可以減少查找比較次數
5、五元組
二元組的定義:
三元組的定義:
五元組的定義:
V是值的集合,O是操作的集合,G是構成名字的文法,M是存儲的集合,S是從G能構成的名字 幾個到M的映射.
iP報文中的五元組(即源IP地址,源端口號,目的IP地址,目的端口,協議)。
半相關
綜上所述,網絡中用一個三元組可以在全局唯一標志一個進程:
(協議,本地地址,本地端口號)
這樣一個三元組,叫做一個半相關(half-association),它指定連接的每半部分。
【華為筆試經驗分享(2)】相關文章:
奧美筆試經驗分享07-31
NHN筆試經驗分享08-09
Numerica的筆試經驗分享08-10
亞馬遜筆試經驗分享07-07
麥肯錫筆試經驗分享07-11
2014華為江西財經筆試經驗07-07
公考筆試經驗分享03-19
移動筆試經驗分享11-02
齊魯銀行筆試內容,筆試經驗分享04-16
飛亞達筆試 經驗分享08-09