當前位置:文思屋>學習教育>考研>

高盛IT筆試題及分析

文思屋 人氣:1.93W
高盛IT筆試題及分析
1、A是一個使用者自定義類。
int a = 100;
A *ptr = new A [a];
delete ptr;
這段程式碼是幹什麼的,有個錯誤請指出來,如何提高效率?
分析:
這段程式碼建立了一個包含100個類A的例項的陣列。這個程式碼中刪除物件陣列佔據記憶體空間的方式是“delete[]

”而不是“delete”,因此應該改成:delete[] ptr。因為建立的是100個元素的陣列,因此不需要一個單獨的

變數a,直接如下修改:
A *ptr = new A [100];
delete[] ptr;
2、How to calculate (1 + 2 + 3 + … + n)?
老師分析:不要用老師講的for迴圈來計算累計值,而是使用等差數列計算公式,這樣效率會高很多
int F(int n)
{
return n*(n+1)/2;
}
3、在一個火車站:每10分鐘就有一火車離站向南開去;每10分鐘,也有另外一輛火車離站向北開去。每天,你

到達這個火車站的時間並不是固定的(換言之,在時間上你是隨機到達火車站的)。但是在你每次到達以後,

你就會乘坐最先到站的火車離開,而不管它是往北或者是往南開。這樣在乘坐了一年以後,你發現在90%的天數

裡,你所乘坐的是南行的火車。請問這是為什麼?
分析:答案是“南行的火車時間比北行的`時間早1分鐘”。
比如:南行的時刻表為:12:00,12:10,12:20,12:30,、、、
北行的火車時間表為:12:01,12:11,12:21,12:31,、、、
這樣的話,除非是你在到達的時候為12:00以後而在12:01之前,那麼,從12:02到12:10之間,你都會乘坐

南行火車。依此類推、、、這樣的話,你在每10分鐘裡,乘坐南行火車的機率為90%。
4、你獨自一人在一孤島上等待著救護人員的到來,但他們只會在第10天到達(今天是第零天)。你手頭上有兩

種藥品:“甲”和“乙”各10粒。想要活到第二天的話,你必須吃一粒“甲”和一粒“乙”。可是,今天由於

不小心你把“甲”和“乙”的顆粒混在了一塊,而你又無法辨認出哪粒是“甲”、哪粒是 “乙”來。想要活到

第十天的話,你需要怎麼去做?
分析:把20顆粒藥碾碎,並混合均勻,然後平均分出10份,每次食用一份。 此題目的啟示為:做事不要拘泥於

條條框框。