當前位置:首頁 » 操作系統 » 華為演算法題

華為演算法題

發布時間: 2022-05-24 21:42:15

㈠ 校園網如何實現路徑的選擇,華為面試題!

RIP協議是基於距離矢量演算法(Distance Vector Algorithms)的,它使用「跳數」,即metric來衡量到達目標地址的路由距離。路徑選擇中跳數因為RIP(路由信息協議)中存在15跳上限的限制,布線過程中也因5:4:3規則很難去實現。因此只能作為小型網路協議。

SPF演算法將每一個路由器作為根(ROOT)來計算其到每一個目的地路由器的距離,每一個路由器根據一個統一的資料庫會計算出路由域的拓撲結構圖,該結構圖類似於一棵樹,在SPF演算法中,被稱為最短路徑樹。在OSPF路由協議中,最短路徑樹的樹干長度,即OSPF路由器至每一個目的地路由器的距離,稱為OSPF的Cost,其演算法為:

Cost = 100×106/鏈路帶寬

在這里,鏈路帶寬以bps來表示。也就是說,OSPF的Cost 與鏈路的帶寬成反比,帶寬越高,Cost越小,表示OSPF到目的地的距離越近。如果鏈路帶寬相同則選擇ip最大的那個鏈路。(但是鏈路與帶寬是永遠不可能相同地)因此,在校園網中最優的設置協議是OSPF(開放式最短路徑優先)。

至於IGRP(內部網關路由協議)與EIGRP(擴展內部網路路由協議)協議同樣採用了帶寬、成本、可靠性、負載與最大傳輸單元的可調性配置方案也非常好用,但是因為受到設備方面的限制所以不予採納。

㈡ 華為路由器埠利用率計算問題

首先,你的單位錯了。100Gb/s但速率是每秒位而不是位元組,這個在介面速率上是統一的。如果換算為位元組需要除以8。

㈢ 華為面試請教,請各位前輩指教,萬分感謝!

一、優秀程序員必備七要件
程序員是一個要求技術含量很高的職業,同時要求有不斷進取的精神和不達目的決不罷休的精神狀態,以下就是簡單總結的如何做個有些的程序員,希望對各位的求職和工作能夠有所幫助。
1.踏實的工作態度。低承諾,高實現:如果你的承諾確實是管理人員想聽到的,
他就會喜歡你。但是,如果不能按照承諾及時交付軟體,他就不會再喜歡你。而且如果你沒有承諾的也超額完成,可想而知,老伴對你的印象會有多大的改變。但是切忌,如果自己真的有能力還是應該提前說出來,只要不過分誇大就好。萬事適可而止、恰到好處就好。
2、認真負責,少犯錯誤。軟體很可能會因為一個細小的錯誤而不能正常運行,所以說不要在軟體中放入錯誤,優秀的程序員不在他們的代碼中放入錯誤。盡量精準的設計,會讓你的工作事半功倍。
3、充滿熱情,努力工作。作為一個優秀的程序員是充滿熱情和努力工作的,他們具有很強的組織性,而且講究方法,他們有能力將事情結構化。此外,大多數程序員勤奮工作的熱情是令人難以置信的。他們嘔心瀝血,不眠不休就是為了最後的勝利,如果你也具備這種精神,那麼你就算半個合格的程序員。
4、有預見性,知道未知因素。看到別人看不到的未知因素,並且提前做好預備工作,這說明你至少是個有經驗的程序員。你的前途可以說是一片光明。
5、有團隊合作精神,能善於和別人相處。一般開發工作都是以小組進行的,所以一定要與小組成員友好相處,軟體開發是小組成員協調努力的結果。不要把功勞歸結為某個人,同時也不要把錯誤看作是別人的錯誤。
6、堅持到底,善始善終。其實開發軟體是一件非常辛苦的工作,所以一旦認定目標,就要朝向最終目標努力努力再努力,始終朝向最終目標。這其實也是非常重要的能力。特別是在與一些人面談工作時,你要尋找的一件事情就是在小組已經交付的產品上他實際參與的工作。具備這種能力是作為一個優秀程序員的必備條件。
7、超凡的學習能力。在軟體技術領域,技術的更新日新月異,所以作為程序員必須學習不斷涌現的技術,掌握盡可能多的技能。優秀的開發人員是渴望學習的人。善於學習的人才能在這一領域立於不敗之地。也是程序員必須具備的條件之一。

二、程序員的職業要求
一般的程序員都有四年的在專業領域的學習,需要一個在程序領域的學士學位獲得者,不論是數學方面的還是工程方面的都是可以的。大約有20%的人在這一領域的計算機科學和工程學擁有更高的學位。還有很小一部分程序員是自學的,盡管一些專業性的學校或者綜合大學可以提供,但是也需要一些別的途徑來提供相關的人才。盡管學歷是比較重要的,但是公司經常把重點放在應聘者的工作經驗上,很多剛從大學畢業的大學生雖然有引人注目的學位證書,但是他們找不到工作是因為他們缺乏經驗。一個程序員雖然有正規的學歷,但是如果一個人擁有程序設計的深厚知識背景或者豐富的工作經驗的話,那麼他的機會要比有學歷的應屆畢業生大得多。所以要盡量抓住有用的工作和實習機會,這樣的話在畢業後你就會發現,多實習讓你有更多的經驗,在找工作的時候就有更多的機會。
對於職業程序員,另外一個重要的方面就是,程序員需要不斷提升自己的業務技術,你的技術必須一直保持在一個較高的水平,並且要不斷發展,程序員也要尋找貿易的機會,要參加研討會,在周刊上發表文章和接受職業教育,這些使程序員在自己的領域中分級或者不斷並排前進。

三、一位大四程序員的面試經歷和體會
1.面試經過

大約在年前我接到了台灣瑞晟(Realtek)蘇州公司的面試通知,通知我2月21日到蘇州工業園區面試,接到面試後的幾天我把一些專業課溫習了一遍,特別是C++和數據結構,由於大學幾年裡,我一直專研這些方面,加上通過了高級程序員的考試,對於一些常用的演算法我差不多也 達到了爛熟於胸的地步,當時的感覺是如果問了我這些方面的問題我應該是沒有問題的!

21日那天我被安排在4:30面試,由一位技術人員單獨給我面試,在問了一些簡單的問題之後 ,他給我出了一道編程題目,題目是這樣的:

(由於具體面試的題目比較煩瑣,我將其核心思想提取出來分解成……(亂碼)

1) 寫一個函數計算當參數為n(n很大)時的值 1-2+3-4+5-6+7......+n
哼,我的心裡冷笑一聲!沒想到這么簡單,我有點緊張的心情頓時放鬆起來!
於是很快我給出我的解法:

long fn(long n)
{
long temp=0;
int i,flag=1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
for(i=1;i<=n;i++)
{
temp=temp+flag*i;
flag=(-1)*flag;
}
return temp;
}

搞定!當我用期待的目光看著面試官的時候,他微笑著跟我說,執行結果肯定是沒有問題! 但當n很大的時候我這個程序執行效率很低,在嵌入式系統的開發中,程序的運行效率很重要 ,能讓CPU少執行一條指令都是好的,他讓我看看這個程序還有什麼可以修改的地方,把程序 優化一下!聽了這些話,我的心情當時變的有點沉重,沒想到他的要求很嚴格,之後我對程序 進行了嚴格的分析,給出了改進了的方案!

long fn(long n)
{
long temp=0;
int j=1,i=1,flag=1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
while(j<=n)
{
temp=temp+i;
i=-i;
i>0?i++:i--;
j++;
}
return temp;
}

雖然我不敢保證我這個演算法是最優的,但是比起上一個程序,我將所有涉及到乘法指令的語 句改為執行加法指令,既達到要題目的要求而且運算時間上縮短了很多!而代價僅僅是增加了 一個整型變數!但是我現在的信心已經受了一點打擊,我將信將疑的看者面試官,他還是微笑 著跟我說:「不錯,這個程序確實在效率上有了很大的提高!」我心裡一陣暗喜!但他接著說這個程序仍然不能達到他的要求,要我給出更優的方案!天啊!還有優化!我當時真的有點崩 潰了,想了一會後,我請求他給出他的方案!然後他很爽快的給出了他的程序!

long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
if(0==n%2)
return (n/2)*(-1);
else
return (n/2)*(-1)+n;
}

搞笑,當時我目瞪口呆,沒想到他是這個意思,這么簡單的代碼我真的不會寫嗎,但是我為 什麼沒有往那方面上想呢!他說的沒有錯,在n很大很大的時候這三個程序運行時間的差別簡 直是天壤之別!當我剛想開口說點什麼的時候,他卻先開口了:「不要認為CPU運算速度快就 把所有的問題都推給它去做,程序員應該將代碼優化再優化,我們自己能做的決不要讓CPU做 ,因為CPU是為用戶服務的,不是為我們程序員服務的!」多麼精闢的語言,我已經不想再說 什麼了!接著是第二個問題:
他要求我用一種技巧性的編程方法來用一個函數實現兩個函數的功能n為如:

fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6!
fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9!

現在用一個函數fn(int n,int flag)實現,當flag為0時 ,實現fn1功能,如果flag為1時實現fn2功能!他的要求還是效率,效率,效率!說實在話, 如果我心情好的話我應該能給出一種比較好的演算法,但我那時真的沒有什麼心思再想了,我在紙上胡亂畫了一些諸如6!=6*5!的公式後直截了當的跟他說要他給出他的答案!面試官也沒有 說什麼,給出了他的思路:

定義一個二維數組 float t[2][5]存入[2!,3!,4!,5!,6!},{5! ,6! ,7!,8!,9!]然後給出一個循環:

for(i=0;i<6;i++)
{
temp=temp+n/t[flag][i];
}

最後得到計算值!呵呵,典型的空間換時間的演算法!
這些總共花了50分鍾的時間,還有十分鍾我就跟他很隨意的聊聊天,聊了一些編程以及生活 的問題,那時的我已經很放鬆了,因為我知道這次面試結果只有一個:失敗。5:30的時候面試官要我等通知,於是我離開了他們公司。這就是面試的整個經過!

2.由面試想到的

真的是很失敗啊!我記得那天下好大的雨,氣溫也很低,我邊走邊想,從5:30一直走到7:30 ,全身都濕透了,又冷又餓,但是我只是一直走,腦子裡面充滿了疑惑,我也想讓雨把自己淋 醒!看到這里有些朋友可能覺得那些面試題目不算什麼如果讓自己做的話肯定能全部答對,我 肯定相信你,因為我從未懷疑過中國程序員的能力,我認為中國有世界上最好的程序員,我也 從未認為自己是高手,所以我做不出來不代表中國程序員比台灣或者別的地方的程序員差,所以我就從我的角度,我的所見所想來談一些感想:

不錯全世界都有優秀的程序員,中國也不例外,但是我疑惑的是:到底中國和台灣或者國外 的優秀的程序員的比例到底是多少?台灣我不知道,中國100個程序員里有幾個是優秀的呢?我 根本算不上,從上面的表現就足以說明一切了!是1個?5個?10個?50個?這個數字我不敢亂 猜,恐遭網友一頓痛罵,那麼我們國內有多少人學習計算機呢?拿我們學校來說,計算機97級 4個班,98級5個班,99級10個班,2000級17個班,人多了,老師怎麼辦?我們學校的做法是讓 研究生上課,然後呢?補考一抓一大把,大把大把的補考費落入了學校的口袋,還說現在的學生素質低!真是好笑,我都不知道學校這么做是為了什麼,為國內培養大量的程序員嗎?學生 們能真正學到計算機知識嗎?好了,我敢講,在我們學校學習編程學生和優秀程序員(注意我 指的是優秀,只會編幾個糟爛程序的人算不上)的比例應該是100:0.1 在這種比例下雖然我們中國學習編程的人鋪天蓋地,但是想想有多少個人能真正為中國軟體 業發展作出貢獻,有多少人能真正寫出優秀的程序名揚海外!

我從學習編程以來,不管是自學還是老師指導,從來都是解決問題就好,編出程序來就行, 我的疑惑是:我們有真正的強調過程序的效率,程序的質量嗎?我們有仔細分析過我們寫的東 西,看看有沒有可以改進的地方,看看有沒有簡單的方法來達到同樣的目的呢?我問心自問, 我發現,我從來沒有對我寫出來的程序進行過優化,最多就是進行詳細的測試,然後Debug, 但是這就足夠了嗎?
這些天我偶爾發現我曾經寫過的一個游戲,那是一年做為 其中一員時候,感覺應該拿點東西出來,然後花了一個星期的時間寫出來的!程序不算復雜,但是用到了不少數據結構的東西,也用到了一些精彩的演算法,加上windows的界面和游戲的可 玩性,寫完後受到了不少好評,我當時真的很佩服自己!
但是現在看呢:沒有一句注釋,好多 醜陋的函數名比如:void chushihua(),好多沒有必要的變數,可以用簡單語句完成工作的我 使用華麗的演算法,大量使用全局變數.....,說不好聽的話,六百多行的程序除了能運行之外就是一陀屎!如果一年前我能聽到一些反面意見的話,大概我能早一點覺悟,但是自原代碼在 網站發布以來聽到的都是贊美之詞,沒有一個人向我提出程序改進的意見,這又說明了一個什 么問題呢?很值得思考啊!

還有一個疑惑是:我們說的和做的真的一樣嗎?我在學校的時候曾經受學院指派承辦過一個 計算機大賽,請了一個老師出決賽的題目,主要是一些演算法題目,這個老師可能是我上大學以 來唯一敬佩的老師了,從程序調試到打分,對於每個程序都仔細分析其時間效率和空間效率, 然後綜合打分,四十個人的卷子,老師從下午三點一直調試到晚上十點,在有些寫的精彩的語 句後還加上批註。我真是高興很遇到這樣的老師並且和他做深入的交流,但在事後,卻發生了 一件不愉快的事,在比賽中獲得第二名的學生找到我,說他程序全部調試成功應該給他滿分, 並且應該得第一,我說不過他,最後調出了他的原程序和第一名的原程序對比,錯,兩個程 序都運行的很好,這時,那個同學開口了:「我的程序寫的十分簡捷明了,僅僅數行就完成了 題目要求,而他的卻寫了一大堆,為什麼給他的分多過給我的分。」我當時很是氣憤,如果不 是老師負責的話,那麼現在第一名和第二名的位置真的要互調了,拜託,不是程序的行數越少 程序的質量就越高,我記得我跟他大談這方面的道理,最後說服他了!哈哈,但是我,只能說 說而已,我不知道還有多少人一樣,說起來頭頭是道,但心裡卻壓根就從未重視過它!

四、優秀的編程人員應該掌握的十種編程語言
優秀的編程人員應該掌握的十種編程語言
引:位於聖地亞哥軟體編程公司Interknowlogy.com CEO Tim Huckaby表示,「我的一個導師曾經告訴我編程語言僅為一種語言。若你是一名優秀的程序編制人員,編程語言就是一些句法變換而已,並沒有其他重要部分。」

在求職過程中能夠了解多些編程語言,無疑是有很大優勢的。

確實,以量取勝是有優勢的。當然不排除存在一些恰好在合適的時間、合適的地點正好知曉合適的編程語言的情況,不過絕大部分編程者都會善意建議你階段性學習一種新語言,這對於作為一名合格的網站開發人員來說,是非常有必要的。

位於聖地亞哥軟體編程公司Interknowlogy.com CEO Tim Huckaby表示,「我的一個導師曾經告訴我編程語言僅為一種語言。若你是一名優秀的程序編制人員,編程語言就是一些句法變換而已,並沒有其他重要部分。」

不過,Huckaby表示,當時他的公司還在初創期,暫時不會考慮增添新人,不過知曉特定編程語言的入門級別人員有所例外。

Huckaby表示,「我們會聘用那些有激情、態度端正、聰明的剛從學校畢業、懂得.Net或Java語言的學生,因為這種人員,我們可以再次對他進行.Net培訓。」

加州Sebastopol市Grandview Systems的軟體開發負責人Wayne Duqaine表示,「不要只集中在一兩種語言上。當我在1969年開始時,FORTRAN、COBOL和S/360 Assembler是當時流行的語言。而今,Java、C和VB則是通用的程序編制語言。十年的時光中,有許多新語言都變成了流行語言。我粗略的計算一下,在三十年的時光中,我已經學會了近24種不同語言。」

五、幾道經典C語言筆試題
1.

int main()
{
int i, n = 20;
for (i = 0; i < n; i--)
printf("*");
return 0;
}

Change/add only one character and print '*' exactly 20 times.
(there are atleast 3 solutions to this problem :-)

2. display below like:

1
212
32123
4321234
543212345

3. search for maximum and minimum value, before save into arrange for any 5 natural number (use multiful for grammer)

ex)

save to any 5 natural number

30 20 75 15 64 <enter>

minimum : 15
maximum : 75

4. use ms-sql of join grammer. show query fot result

Table.1
ac_country
--------------------------------------
country_cd country_nm
--------------------------------------
kor koera
jpn japan
usa usa
cha china

Table.2
ac_currency1
-------------------------------------------
country_cd currency_cd currency_nm
-------------------------------------------
kor won W
jpn yen Y
usa usd US

# Result
-------------------------------------------
country_nm currency_cd currency_nm
-------------------------------------------
korea won W
japan yen Y
usa usd US

Result Query :

5.use ms-sql of join grammer. show query fot result

table.1
account
--------------------------------------
userid cost date
--------------------------------------
use01 10,000 2007-01-02
use02 5,000 2007-01-03
use05 7,000 2007-01-03
use03 5,000 2007-01-03
use01 5,000 2007-01-04
use04 5,000 2007-01-05
use02 10,000 2007-01-05
use01 1,000 2007-01-05

table.2
userinfo
-----------------------------------------------
code userid money register
-----------------------------------------------
AAA use01 8,500 2007-01-02
AAA use02 5,000 2007-01-03
AAA use03 2,000 2007-01-04
AAA use04 4,500 2007-01-05
BBB use05 5,500 2007-01-02

table.3
stateinfo
-------------------------------------
connect state indate
-------------------------------------
AAA-use01 Yes 2007-01-03
AAA-use02 No 2007-01-05
AAA-use03 No 2007-01-04
AAA-use04 Yes 2007-01-05
BBB-use05 NO 2007-01-04

#result
----------------------------------------------------------
userid money account_count account_total state
----------------------------------------------------------
use01 8,500 3 16,000 Yes
use02 5,000 2 15,000 No
use03 2,000 1 5,000 No
use04 4,500 1 5,000 Yes

Result Query :

6. show 2 query each fot result.A, result.B

table.data_table
-----------------------
F_DATE
-----------------------
2007-04-17 11:42:55.200
2007-04-18 01:45:33.403
2007-04-18 01:47:01.500
2007-04-17 11:40:15.000
2007-04-18 11:41:25.700
2007-04-18 11:41:49.420
2007-04-17 11:44:58.000
2007-04-18 11:45:23.340

#Result.A
----------
F_DATE
----------
2007-04-17
2007-04-18

Result Query :

#Result.B
----------
F_DATE
----------
2

Result Query :

㈣ 華為公司的一道筆試題(1)

對題目有點疑問,只可以改變杯子的狀態還是可以確定讓杯子呈某種狀態?
比如,我只能讓這個杯子翻轉還是我可以讓這個杯子杯口朝上?

如果是第一種情況,我的方案是:
將杯子的狀態看做1,0,則杯子的原始狀態可能是:
1000,1100,1010(這里1000和1110我們認為是同一類型)

1。改變對角兩只杯子的狀態;
---對1010類型的情況可以搞定,而1100和1000類型的狀態不發生變化
2。改變相臨兩只杯子的狀態;
---對1100類型的運氣好的話可以搞定,運氣不好的話則1100變成1010,1000型狀態不變
3。再改變對角兩只杯子的狀態;
---原始狀態1100型的被搞定,1000型狀態不變
4。任意改變一隻杯子的狀態;
---原始狀態1000型變為1100或1010,或者直接結束
5。改變對角兩只杯子的狀態;
6。改變相臨兩只杯子的狀態;
7。改變對角兩只杯子的狀態;
---5,6,7步解釋同1,2,3步

這樣最多7次就可以解決,不知道樓主是否滿意?

㈤ 華為數據分析筆試也是考演算法題嗎

華為今年的軟體測試和研發筆試是一樣的,上機考試的,3題,第一題60分,第二題100分,第三題160分。

㈥ 華為數據分析筆試也是考演算法題嗎

華為面試筆試題演算法
寫出一個程序,接受一個由字母和數字組成的字元串,和一個字元,然後輸出輸入字元串中含有該字元的個數。不區分大小寫。
連續輸入字元串,請按長度為8拆分每個字元串後輸出到新的字元串數組;長度不是8整數倍的字元串請在後面補數字0,空字元串不處理。
輸入一個正整數,按照從小到大的順序輸出它的所有質因子(如180的質因子為2 2 3 3 5 ),要求最後一個數後面也要有空格。

㈦ 今天參加了華為的面試,被一個演算法題水了如下:

根據要求修改了,復雜度為O(n),沒有引入額外的數組:)
#include <stdio.h>
#define N 7
void main(){
int a[N],step,temp;
printf("輸入%d個整數:\n",N);
for(int l=0;l<N;l++)
scanf("%d",&a[l]);
printf("輸入步長:\n");
scanf("%d",&step);
step=step%N;
int k=0,n=0;
for(int i=step;i<N+step;i++,k++){
if(step)
k=k%step;
n=i%N;
temp=a[n];
a[n]=a[k];
a[k]=temp;
}
printf("輸出移位後的數組:\n");
for(int m=0;m<N;m++)
printf("a[%d]=%d\n",m,a[m]);
}

㈧ 華為考試題,停車場最少可以停多少輛車演算法

華為考試題停車場最少可以停多少輛演算法?這個不好說,因為各個的停車輛根據他們門口的停車量而算,多少車輛?看他們的停車位有多少停車位二別的都沒有用,因為他們門口的停車輛和停車的廣場而定

㈨ 非計算機專業考華為od演算法題難不難

華為od演算法題難度中下,更傾向於考驗臨場發揮能力。
華為OD的面試首先會有一輪機考,機考是在牛客網上做編程題。總共三道題,據說是一道簡單兩道中等,總分400分,150分以上就算通過。
OD的機考難度不算特別高,如果經常刷牛客和力扣上的題的話,至少及格肯定是沒問題的。考題的偏好的話,基於自己做的和參考其他的OD考試帖子,感覺比較喜歡考數組和字元串的問題,大家刷題可以著重注意一下這種類型的題!

熱點內容
linux查詢命令的版本 發布:2024-10-27 03:24:38 瀏覽:976
編程3次方 發布:2024-10-27 03:19:48 瀏覽:19
如何提取手機緩存視頻 發布:2024-10-27 02:55:26 瀏覽:370
php二維數組求和 發布:2024-10-27 02:53:56 瀏覽:734
c語言如何被編譯器編成可執行 發布:2024-10-27 02:33:27 瀏覽:555
解壓蜂巢 發布:2024-10-27 02:32:45 瀏覽:184
資料庫商品表的設計 發布:2024-10-27 02:11:36 瀏覽:726
黑客編程語言 發布:2024-10-27 02:02:21 瀏覽:659
黑相集ps5主機存儲 發布:2024-10-27 01:44:02 瀏覽:671
修真界腳本 發布:2024-10-27 01:35:34 瀏覽:626