幾個筆試題目(2010 09 18)

2021-08-30 21:17:17 字數 2888 閱讀 3637

今天去一家公司參加筆試,其中有幾個題目覺得做的不是太好,拿出來與大家討論。

題目大概意思是:有10箱罐頭,每箱20瓶,每瓶重800克。其中有一箱每瓶都少50克,現在有乙個自動秤,需要乙個硬幣才能秤,現在你只有乙個硬幣也就是只能稱量一次,問如何找出每瓶少50克的那一箱?

這個題目想了半天也不知道如何答,結果留空了。

xanpeng 寫道

第一題思路:第乙個箱子取1瓶,第二個取2瓶,。。。,第10箱取10瓶

如果那箱沒有少50克,則總共重800*(1+2+...+10) = 44000

實際有一箱每瓶是少50克的,實際稱出重量y克

則有 44000 - y = x*50, x 就是第 x 個箱子,就是目標箱子

polaris注:當時沒考慮拆箱拿出來。因為題目上說是乙個工廠的人給乙個公司送的10箱罐頭,返回時,他老闆打**給他,說有一箱有問題,要他挑出來,我覺得是包裝好了的,拆開不太行吧,都拆開,公司不願意吧,所以覺得題目是不是有問題,沒法解。看來還是得拆開。

見到此題的第一想法是:利用數學中的歸納法,根據1、2、3、4等條線時可分出的數量推導出公式。然而,這種方法證明比較麻煩。然後就想其他方法,當然就是找規律了,想到的是根據交點數來計算,不過這種方法試了一下,發現有點難度,似乎不可行。最後想來想去還是使用了歸納法,畢竟來的容易,只是沒有寫證明過程。

當時學軟體工程的時候都記著的,這時候一下子忘記了。就胡亂寫了幾個。不過也大概對了。這樣的題目感覺沒多大意思,完全記憶性的。

軟體生命週期(sdlc,軟體生存週期)是軟體的產生直到報廢的生命週期,週期內有問題定義、可行性分析、總體描述、系統設計、編碼、除錯和測試、驗收與執行、維護公升級到廢棄等階段,這種按時間分程的思想方法是軟體工程中的一種思想原則,即按部就班、逐步推進,每個階段都要有定義、工作、審查、形成文件以供交流或備查,以提高軟體的質量。

軟體生命週期(sdlc)的六個階段

(1)問題的定義及規劃。

此階段是軟體開發方與需求方共同討論,主要確定軟體的開發目標及其可行性。

(2)需求分析。

在確定軟體開發可行的情況下,對軟體需要實現的各個功能進行詳細分析。需求分析階段是乙個很重要的階段,這一階段做得好,將為整個軟體開發專案的成功打下良好的基礎。"唯一不變的是變化本身",同樣需求也是在整個軟體開發過程中不斷變化和深入的,因此我們必須制定需求變更計畫來應付這種變化,以保護整個專案的順利進行。

(3)軟體設計。

此階段主要根據需求分析的結果,對整個軟體系統進行設計,如系統框架設計,資料庫設計等等。軟體設計一般分為總體設計和詳細設計。好的軟體設計將為軟體程式編寫打下良好的基礎。

(4)程式編碼。

此階段是將軟體設計的結果轉換成計算機可執行的程式**。在程式編碼中必須要制定統一,符合標準的編寫規範。以保證程式的可讀性,易維護性,提高程式的執行效率。

(5)軟體測試。

在軟體設計完成後要經過嚴密的測試,以發現軟體在整個設計過程中存在的問題並加以糾正。整個測試過程分單元測試、組裝測試以及系統測試三個階段進行。測試的方法主要有白盒測試和黑盒測試兩種。在測試過程中需要建立詳細的測試計畫並嚴格按照測試計畫進行測試,以減少測試的隨意性。

(6)執行維護。

軟體維護是軟體生命週期中持續時間最長的階段。在軟體開發完成並投入使用後,由於多方面的原因,軟體不能繼續適應使用者的要求。要延續軟體的使用壽命,就必須對軟體進行維護。軟體的維護包括糾錯性維護和改進性維護兩個方面。 

題目:將正整數的阿拉伯錢數轉換為中文形式,如1011→一千零一十一,輸出。

題目要求最好程式設計實現,不會程式設計可以用文字說明。

這道題並不難,演算法思路很多人應該都會,然而,要真正程式設計實現,且是用筆寫出來,要做到很準確就有點難度。

polaris解該題的大概思路是:確定正整數的總位數,然後分別用10的多少次方去除和取模,取模的結果再進行除與取模。

這裡面涉及到很多細節要考慮,比如:多個連續的0,億、萬位的零等。

下面是polaris回來在電腦上編寫了乙個完整的,寫的不對或不好之處,請大家指正。大家有更好的可以拿出來一起討論。

package com.polaris.test;

/** * 將正整數的阿拉伯錢數轉換為中文形式,如1011→一千零一十一,輸出。

* @author xuxinhua(polaris)

* 2010-09-18

* @version 1.0

*/public class translatemoney ;

// 儲存最後的輸出結果

private static stringbuilder chinmoney = new stringbuilder();

// 多個0連續時,中文只需寫出乙個零。該變數用於標記是否為連續的0

private static int flag = 0;

public static void main(string args) throws exception

/*** 轉換函式

* @param money

* @param digit

* @return

*/public static string translate(int money, int digit)

} else else else

}// 不止乙個0

if(flag>1) else

translate(remainder, digit-1);

}}

return chinmoney.tostring();

} /**

* 位數表示,如億、萬等

* @param digit

* @return

*/private static string getunit(int digit)

return unit;

}}

幾個筆試題

試題一 float型別的數能否進行 等二進位制運算?試題二 給定乙個單鏈表,判斷該單鏈表是否是回文單鏈表,要求時間複雜度為o n 空間複雜度為o 1 試題三 給定乙個數n,寫乙個程式計算,小於或等於n的非負整數中所含數字1的個數,例如當n為13時,返回值為6,分別出現在1 10 11 12和13中,...

幾個筆試題

1 程序間的通訊方式?管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 named pipe 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。訊號量 semophore 訊號量是乙個計數器,...

google筆試題目

google筆試,據說小題都對就進入面試 1 兩個二進位制數的異或結果 2 遞迴函式最終會結束,那麼這個函式一定 不定項選擇 1.使用了區域性變數 2.有乙個分支不呼叫自身 3.使用了全域性變數或者使用了乙個或多個引數 3 以下函式的結果?int cal int x 4 以下程式的結果?void f...