作者yoco315 (眠月)
站內Programming
標題Re: [問題] 面試遇到的程式問題,現在還想不出來(MTK)
時間Wed Jan 2 13:17:14 2008
※ 引述《asleepme (冬天了)》之銘言:
: for( i=0; i<=100; i++)
: s=s+i;
for ( i=100; --i ; )
s += i ;
首先是 i++ 後置要改前置
因為 C/C++ 裡面寫後置是會複製一個暫存物件的
阿這邊複製一下是需要成本的
當然這邊 compiler 有可能會幫你吸收掉
不過知道意思就好
然後 i<=100 改 i
這邊就是少作一個減法
當然這個還是看 cpu
不過知道意思就好
然後是 s = s+i 改成 s += i
就是省掉好幾個動作嘛
不過 compiler 當然還是有可能幫你吸收掉
不過知道意思就好
其實只有第一個原因比較隱晦吧
後面兩個都蠻明顯的,一般人也都會想到
不過第三個根本就是明顯到根本沒差了
因為 compiler 幾乎都會幫你作掉
總之各種改法都只對不夠好的 compiler 有用
compiler 夠好的話,這些差異其實都會被吸收掉..
我其實不是很懂這個面試官的重點是在哪邊 ._.a
--
To iterate is human, to recurse is divine.
遞迴只應天上有, 凡人該當用迴圈. L. Peter Deutsch
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.78.40
推 asleepme:有可能是他們要自己寫compiler吧 220.137.66.239 01/02 13:40
推 PcGrek:這樣寫會變成99加到0…@@ 140.124.42.60 01/02 21:13
→ PcGrek:照我同學去面試的說法,應該是考第二點。 140.124.42.60 01/02 21:16
→ yoco315:阿 對喔 哈哈哈 對不起 QQ 140.114.78.40 01/02 22:08
→ piimaila:說不定是要找在DOS下開發測試工具的人 61.231.242.45 01/03 18:15
推 march20:其實搞不好是想考 "嘿, 知道某牌的 71.136.239.225 01/04 17:53
推 march20:"compiler 有這種 bug ". 71.136.239.225 01/04 17:53
推 march20:我論原 po 應徵 M$ 的可能性 XD 71.136.239.225 01/04 17:54