<strike id="6q0um"></strike>
  • <strike id="6q0um"><s id="6q0um"></s></strike>
  • <ul id="6q0um"></ul><strike id="6q0um"></strike>

    當(dāng)前位置:高考升學(xué)網(wǎng) > 招聘筆試題 > 正文

    金山(Kingsoft)服務(wù)器端開發(fā)工程師筆試題和面試題答案

    更新:2023-09-13 17:08:38 高考升學(xué)網(wǎng)

      總體感覺金山的筆試題難度還可以,既考查了基礎(chǔ)知識,又測試了考生的編程及算法能力。試題大概分為三部分,第一部分是一些簡單的看程序填空,就是填寫程序的運行結(jié)果。這一部分只要仔細(xì)一點就沒什么問題。第二部分是簡答題,內(nèi)容包括TCP,UDP協(xié)議,C++拷貝構(gòu)造函數(shù),快速排序算法,堆棧等基礎(chǔ)知識,這一部分問題也不大。最后一部分是兩道編程題,由于時間很充裕(兩個小時)如果能想出算法的話應(yīng)該很快就做完了。這里與大家分享一道編程題,主要考查算法。

      題目1:有一個int型數(shù)組Num,里面存放著若干的正數(shù)和負(fù)數(shù),請你設(shè)計一個算法,在數(shù)組中截取一段Num[start]--Num[end],使得這一段的整數(shù)之和最大,并返回最大值max。

      算法:start和end記錄最大段的起始和終止位置,首先讓start指向數(shù)組的第一個正數(shù)的下標(biāo),end指向數(shù)組的倒數(shù)第一個正數(shù)的下標(biāo),即略去數(shù)組首尾的負(fù)數(shù)。然后用兩個循環(huán)求出所有組合的最大值并返回,start記錄最大段的起始下標(biāo),end記錄終止下標(biāo)。

      以下是我用C語言實現(xiàn)的程序代碼,已經(jīng)在visual C++ 6.0上運行通過了,想加入金山的可以過來圍觀一下,呵呵。

      #include /在數(shù)組Num[]中截取一段Num[start]--Num[end],使得這一段的元素之和最大,打印start和end并返回最大值max/ int findMaxPart(int Num[],int n) { int len=n;//數(shù)組的長度 int start=0; int end=len-1; int sum=0; int max=0;//截取數(shù)組段的最大值 /略去數(shù)組首尾的負(fù)數(shù)/ while(Num[start]<0) start++; while(Num[end]<0) end--; max=Num[start]; for(int i=0;i { sum=0; for(int j=i;j { sum+=Num[j]; if(max { max=sum; start=i; end=j; } } } /打印start和end以及最大值max/ printf("start position is:%d/n",start); printf("end position is:%d/n",end); printf("The max value is:%d/n",max); return max;//返回max } void main() { int Num[]={2,-1,1,-20,4,9,-30,1,-1,2}; findMaxPart(Num,sizeof(Num)/sizeof(int)); } #include /在數(shù)組Num[]中截取一段Num[start]--Num[end],使得這一段的元素之和最大,打印start和end并返回最大值max/ int findMaxPart(int Num[],int n) { int len=n;//數(shù)組的長度 int start=0; int end=len-1; int sum=0; int max=0;//截取數(shù)組段的最大值 /略去數(shù)組首尾的負(fù)數(shù)/ while(Num[start]<0) start++; while(Num[end]<0) end--; max=Num[start]; for(int i=0;i { sum=0; for(int j=i;j { sum+=Num[j]; if(max { max=sum; start=i; end=j; } } } /打印start和end以及最大值max/ printf("start position is:%d/n",start); printf("end position is:%d/n",end); printf("The max value is:%d/n",max); return max;//返回max } void main() { int Num[]={2,-1,1,-20,4,9,-30,1,-1,2}; findMaxPart(Num,sizeof(Num)/sizeof(int)); }

      問題補充:這種算法的時間復(fù)雜度是O(n^2) ,效率太低了,在網(wǎng)友張立志同學(xué)的提示下,我用動態(tài)規(guī)劃算法對程序做了優(yōu)化。時間復(fù)雜度是O(n)。代碼如下。

      #include int main() { int num[]={5,-1,1,-10,5,-1,5,-20,1,-1,3}; int n=sizeof(num)/sizeof(int); int sum=0; int max=num[0];// record the value of max part int start=0;// the start position of the max part int end=0;// the end position of the max part int temp_start; for(int i=0;i { sum+=num[i]; // update max part if(max { max=sum; end=i; start=temp_start; } // find new max part if(sum<0) { sum=0; temp_start=i+1; } } printf("max=%d/n",max); printf("start=%d/n",start); printf("end=%d/n",end); return 0; } #include int main() { int num[]={5,-1,1,-10,5,-1,5,-20,1,-1,3}; int n=sizeof(num)/sizeof(int); int sum=0; int max=num[0];// record the value of max part int start=0;// the start position of the max part int end=0;// the end position of the max part int temp_start; for(int i=0;i { sum+=num[i]; // update max part if(max { max=sum; end=i; start=temp_start; } // find new max part if(sum<0) { sum=0; temp_start=i+1; } } printf("max=%d/n",max); printf("start=%d/n",start); printf("end=%d/n",end); return 0; }

      閱讀了本文“金山(Kingsoft)服務(wù)器端開發(fā)工程師筆試題”,本站中國人才網(wǎng)(cnrencai)筆試頻道,還為你提供更多“筆試題目”相關(guān)文章閱讀

    相關(guān)文章

    最新圖文

    亚洲专区一路线二| 亚洲日本国产乱码va在线观看| 国产成人精品亚洲日本在线| 亚洲黄色在线视频| 亚洲黄色免费电影| 亚洲精品免费在线视频| 亚洲系列国产精品制服丝袜第| 久久亚洲私人国产精品vA| 亚洲午夜在线电影| 亚洲福利电影一区二区?| 亚洲无砖砖区免费| 亚洲伊人久久大香线焦| 亚洲av午夜精品无码专区| 亚洲AV无码成人专区| 亚洲精品人成网在线播放影院| 亚洲AV无码一区二区三区人| 久久精品国产亚洲AV蜜臀色欲| 国产成人亚洲精品| 亚洲精品久久无码| 久久精品国产亚洲av瑜伽| 在线观看亚洲视频| 国产成人精品久久亚洲| 亚洲尤码不卡AV麻豆| 久久国产亚洲精品麻豆| 亚洲国产天堂在线观看| 亚洲欧洲自拍拍偷午夜色| 亚洲人成日本在线观看| jiz zz在亚洲| 国产偷国产偷亚洲高清在线| 亚洲精品国精品久久99热| 亚洲色无码一区二区三区| 无码久久精品国产亚洲Av影片| 亚洲韩国—中文字幕| 亚洲成aⅴ人在线观看| 亚洲中文字幕无码久久| 日日摸日日碰夜夜爽亚洲| 狠狠色婷婷狠狠狠亚洲综合| 亚洲AV无码第一区二区三区| 久久久久亚洲AV成人片| 亚洲视频一区二区三区四区| 日韩欧美亚洲中文乱码|