青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Creative Commons License
本Blog采用 知識共享署名-非商業(yè)性使用-禁止演繹 3.0 Unported許可協(xié)議 進(jìn)行許可。 —— Fox <游戲人生>

游戲人生

游戲人生 != ( 人生 == 游戲 )
站點(diǎn)遷移至:http://www.yulefox.com。請訂閱本博的朋友將RSS修改為http://feeds.feedburner.com/yulefox
posts - 62, comments - 508, trackbacks - 0, articles - 7

不怕無知,但怕無畏

Posted on 2008-03-20 21:17 Fox 閱讀(4138) 評論(52)  編輯 收藏 引用 所屬分類: G游戲編程

Author: Fox

昨天越俎代庖面試了一個家伙。

看完了他的筆試題目,感覺后背有點(diǎn)涼,但這些東西看看也就過去了,說實(shí)話,那些C++的題目多少有點(diǎn)BT

但我一直覺得DS的東西,如果你當(dāng)初學(xué)的時候是很認(rèn)真學(xué)習(xí)過并思考過的,其實(shí)是不需要去記憶的,所以我就問了一個關(guān)于穩(wěn)定排序和不穩(wěn)定排序的問題。我想,只要你理解了各種排序算法的思想,很easy。

只是這哥們兒忘記了什么是穩(wěn)定排序,我還以為他把快速排序、堆排序當(dāng)作穩(wěn)定排序只是沒記住。看來,老師從小教育的"一道題目你即使不會也要盡量去答"這種思想遺毒頗深。如果抱著這種思想做程序員,公司多半要垮掉。

想一想穩(wěn)定排序的概念吧:兩個同值元素(不知為什么,我一直記得嚴(yán)老師書上用的是49,看來我還是在讀死書死讀書,最后可能會讀書死L)在排序前后相對位置保持不變,即本來在前面的還在前面(所謂"塵歸塵,土歸土",看來最近思想有點(diǎn)消極,難怪沒有激情L)。再想想各種排序的思想,我們很容易得到這樣的結(jié)論:最普通的O(n2)的算法,一個一個從前比到后,自然不會影響到同值元素的相對位置,而O(nlogn)的算法,由于多路比較,可能導(dǎo)致本來相對位于后面的元素先比較和移動,造成不穩(wěn)定。這樣一想,自然知道簡單的插入、選擇、歸并排序都是穩(wěn)定的,而改進(jìn)的高效率的算法則不穩(wěn)定。

后面另一個同事在詢問他做的Demo的事情,因?yàn)槭荄X的東西,我不懂,沒插嘴,就隨便看他的簡歷。

看到其中一項(xiàng),有提到他曾經(jīng)給大一、大二的學(xué)生做過C++培訓(xùn)。我本沒打算提他筆試中的C++部分的,但既然曾經(jīng)為人師表(因?yàn)槲以?jīng)做過學(xué)生、也做過老師),C++基礎(chǔ)掌握到這種程度就不對了。尤其對于一個空的C++類默認(rèn)生成哪些成員函數(shù)居然寫的一塌糊涂(友情提示:你也不用BS他,如果你沒有看過Lippman的《Inside of the C++ Object Model》,建議你先不要發(fā)言J)。

我一般對語言特性不太敢發(fā)表觀點(diǎn)(因?yàn)槲业腃++基礎(chǔ)不扎實(shí)L),但我對簡單的算法或思想小有興趣(沒有你想象中那么高)。可是,筆試中唯一的一個需要coding的題目他又沒寫。我只好說,C++的東西你掌握怎么樣我也可以不看,但這個memcpy的實(shí)現(xiàn),你怎么也得有點(diǎn)想法吧?不然怎么去寫代碼呢?剛好在面他之前,還和同事討論過memcpy的問題(如果你給出one byte by one byte的實(shí)現(xiàn)會遭BS的J,因?yàn)槟憔尤粵]有考慮過計(jì)算機(jī)系統(tǒng)本身的數(shù)據(jù)處理)。

本來還想問他一個關(guān)于sizeof()的問題,后來覺得也沒什么必要,關(guān)于union的對齊,要按照單位最長的成員對齊這一點(diǎn)自己都覺得有點(diǎn)BT就算了。

其實(shí),我想說的是,很多東西,你不能認(rèn)為你掌握的很好(除非你真的掌握的很好),所謂很好,拿C++來說,就是把你認(rèn)為你好的地方,你可以不翻其他東西,把它寫下來,基本跟ISO C++保持90%以上的相似度就可以了。當(dāng)然,這樣說有點(diǎn)賤了。

畢竟,做游戲程序員(其他也差不多吧)需要的是:

帶著激情去編碼,帶著虛心去學(xué)習(xí),帶著挑戰(zhàn)去交流,帶著壓力去工作。

激情,能讓你的思維滿具創(chuàng)意,代碼極其飄逸;

虛心,能讓你的知識不斷積累,從而達(dá)到厚積薄發(fā);

挑戰(zhàn),能讓你的團(tuán)隊(duì)充滿活力,交流活潑嚴(yán)謹(jǐn);

壓力,能讓你的心態(tài)保持平衡,勝不妄喜,敗不惶餒。

因?yàn)樽约哼@兩周心態(tài)受到非智力因素干擾,日子過得有點(diǎn)渾噩。寫下來,主要是為了放松一下,也提醒自己。

不怕無知,但怕無畏。

-----------------------------------------------------------------

PS:補(bǔ)記于2008/03/26

還是把上午寫的一個mymemcpy放上來吧。里面沒有對des < src + len的重疊情況進(jìn)行討論,因?yàn)榇笾耮oogle了一下,似乎很少人這樣做(倒不是因?yàn)椴荒軐?shí)現(xiàn))。

void *mymemcpy( void *src, void *des, size_t len )
{
?char *tempsrc = (char *)src;
?char *tempdes = (char *)des;

?size_t offset = len / 4;
?for( size_t i=0; i<offset; ++i )
?{
??*(unsigned long *)tempdes = *(unsigned long *)tempsrc;
??tempdes += sizeof(unsigned long);
??tempsrc += sizeof(unsigned long);
?}
?
?offset = len - len % 4;
?for( size_t i=0; i<offset; ++i )
?{
??*tempdes++ = *tempsrc++;
?}
?return des;
}

剛才想求證一下memcpy在地址重疊的情況下,是否會考慮從后往前copy的情況。結(jié)果看到云風(fēng)的blog上很早的一篇文章,也是講memcpy的,角度不同。

我想澄清一點(diǎn),我寫這篇blog的初衷只是總結(jié)幾個技術(shù)問題,因此就沒有把面試的前因后果講一下,反倒讓很多朋友誤解,以為我怎么怎么樣了。

事實(shí)情況是,這幾個問題都是本來的筆試題目當(dāng)中的,面試的TX從上午10:00前后做到11:30過,等我和另一個同事13點(diǎn)過去的時候,我一直沒怎么說話。只是在一邊看他的簡歷和題目,文中已經(jīng)說了,是看到他的簡歷之后才提的問題。當(dāng)時是有10道左右的C++題目,他做對的其實(shí)只有一道。

而且,我在提問題的時候也都將問題跟他一起分析了的(除了memcpy之外),自我感覺說話還是很得體的,寫文章的風(fēng)格是另一碼事兒。

我沒有絲毫瞧不起這位TX的意思,也完全沒有顯擺的想法。

PS :忽然想到自己最近為什么癖性十足,因?yàn)樽罱陉P(guān)注一個家伙的 Blog ,如果不侵權(quán),我想用用他的 Blog 的名字《 不許聯(lián)想 》,作者是帶三個表王小峰(《三聯(lián)生活周刊》記者)。所以,如果有人想拍我,建議先看看他的東西,學(xué)習(xí)一下措辭 J 。一個同事,說天涯也行,我個人覺得天涯有點(diǎn)相互吹捧的味道。

惡心,但沒有惡意 J

Feedback

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-20 22:24 by adsf
Y也少說兩句,出來混,遲早得還,到時候你還不知道要栽在誰手被誰BS呢

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-20 22:54 by kacy16
看了樓主的文章,對于那memcpy的實(shí)現(xiàn)問題,我個人想到的方法也是一個一個BYTE來復(fù)制,但是不知道“計(jì)算機(jī)系統(tǒng)本身的數(shù)據(jù)處理”這怎么理解,以及您認(rèn)為好的memcpy的實(shí)現(xiàn)大致是怎樣的?樓主能否給說明一下,謝謝!

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 00:12 by 羅賓李
@kacy16
用DWORD指針,每次復(fù)制4個字節(jié),以上

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 08:21 by cppexplore
呵呵
考察memcpy內(nèi)存地址的字節(jié)對齊問題 對實(shí)際的開發(fā)有啥意義嗎?

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 08:55 by Fox
@adsf:不怕無知,但怕無畏,我也不是沒栽過,也不是沒被BS過,雖然資質(zhì)愚鈍,但我一直在努力,如果真愿意做技術(shù),有人給你指出來,你應(yīng)該懷著感恩的心:)

@kacy16
主要就是字節(jié)對齊和DWORD(4B) copy。
字節(jié)對齊主要體現(xiàn)在首地址不是4的倍數(shù)和尾部不足4B的情況處理,這種情況下,你只能按Byte copy了。

@cppexplore
其實(shí)如果代碼寫多了,這個問題應(yīng)該是每個人都會不自覺得去想的,或者就算不想,也該有自己的一個想法。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 09:11 by cppexplore
@Fox
沒看過memcpy strcpy庫函數(shù)實(shí)現(xiàn)的,給出按位處理的想法很正常。就像去寫strcpy,檢測空指針、越界、返回結(jié)果指針就很好了,一定要求他給出類似庫函數(shù)實(shí)現(xiàn)的高效不太現(xiàn)實(shí),也沒啥意義,就象研究茴香豆的茴有幾種寫法一樣。反正實(shí)際開發(fā)中不用,就是虛無縹緲的想想。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 09:16 by 飯中淹
最好的memcpy的實(shí)現(xiàn)應(yīng)該是
void my_memcpy( void * _dst, void * _src, t_size _size )
{
memcpy(_dst, _src, _size);
}

另外,c++類的默認(rèn)成員函數(shù)也要看用途來決定需要寫哪些。

穩(wěn)定排序,不穩(wěn)定排序這是個概念問題,作程序的沒必要去硬扣這個概念。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 09:19 by cppexplore
@飯中淹
牛啊 果然是最好的內(nèi)存copy實(shí)現(xiàn),竟然還實(shí)現(xiàn)了跨平臺
要是加上inline 或者用包裹宏代替函數(shù)就更完美了 哈哈

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 09:31 by Fox
@cppexplore
一語中的
如果答案寫成這樣,我也會很高興了,起碼是能夠從不同的角度解決問題:P
#define my_memcpy memcpy

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 09:32 by raof01
有很多人學(xué)過幾天C++,就敢在簡歷上寫“精通C++”,這種人被BS了活該。另:應(yīng)用程序員對于library的實(shí)現(xiàn)還是很陌生的,考慮的也不會很多,博主要求有點(diǎn)高。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 09:45 by Fox
@raof01
是的,所以我開始并沒有想去追問一些問題。現(xiàn)在提出來也只是討論一下一個程序員對于編碼應(yīng)該有的態(tài)度。

我個人一直認(rèn)為,一個項(xiàng)目的成功,需要幾個對C/C++(其他語言也一樣)編碼抱著像對女人一樣的感覺,如果你不是真的愛她,就不要說愛她,如果你只是喜歡她,也不要說愛她。因?yàn)槟憧梢韵矚g很多女人,但你只會愛上一個,這一點(diǎn)符合編譯原理上講的局部性法則。
如果你只是把它當(dāng)作一碗飯吃,我就會很不爽了。
當(dāng)然,我只是一個純粹做技術(shù)的,而且做的不純。語言風(fēng)格只是對事不對人:),請大家不要人身攻擊啊,我很無辜:)

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 12:14 by jyfish
@adsf
這位朋友不會是被面試的朋友吧?

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 12:37 by yafare
看了文章感覺挺惡心的,寫過mmx,sse2的是不是也要bs DWORD copy呢。

第一次面試別人心情激動可以理解,但是這樣貶低別人表現(xiàn)自己的睿智就有問題了。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 12:47 by Fox
@yafare
不怕無知,但怕無畏,我也不是沒栽過,也不是沒被BS過,雖然資質(zhì)愚鈍,但我一直在努力,如果真愿意做技術(shù),有人給你指出來,你應(yīng)該懷著感恩的心:)

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 13:14 by kacy16
謝謝 Fox和羅賓李的回答,讓我開拓了思路.

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 13:38 by Colin
面試啊。。。現(xiàn)在的學(xué)生也挺慘的
學(xué)校學(xué)不到東西。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 13:58 by winsty
應(yīng)該多問些實(shí)用的問題
而不是刁難人的問題

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 14:29 by www.helpsoff.com.cn
呵呵,也看出博主的水平了,其他的先不說,人也真是夠矯情的...

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 17:51 by 空明流轉(zhuǎn)
最近回帖的怎么都開始喜歡噴人了。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-21 18:55 by cppexplore
是啊 有問題就問題本身探討 涉及到人身 甚至去猜測別人的水平 不利于解決問題啊 來來回回凈扯蛋了

# re: 不怕無知,但怕無畏[未登錄]  回復(fù)  更多評論   

2008-03-22 12:25 by 創(chuàng)
我個人也認(rèn)為對memcpy,strcpy之類的庫函數(shù)實(shí)現(xiàn)只要考慮了判斷空指針,越界等問題且實(shí)現(xiàn)正確的話,可以有90分以上了,因?yàn)槲易约阂膊粫淖止?jié)對齊之類的去考慮這個問題了,在筆試面試的時候想的最多的還是健壯性和正確性.

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-22 14:42 by 酷勤網(wǎng)
那些重點(diǎn)標(biāo)志的顏色不好,遮住了,看不見 汗

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-23 20:31 by Kevin Lynx
今天才來回這個貼。

沒想到 空明流轉(zhuǎn) 和 飯中淹(叔叔:D)也在這里。

fox下次面試千萬不可考別人struct, union的sizeof問題,太BT了。不可倒確實(shí)應(yīng)該考面試者自己認(rèn)為自己好的東西。我也有點(diǎn)鄙視明明不會卻說會的人,態(tài)度不端正。

# re: 不怕無知,但怕無畏[未登錄]  回復(fù)  更多評論   

2008-03-23 20:42 by CppExplore
struct, union的sizeof問題這個才是常識性的問題,尤其對于網(wǎng)絡(luò)間傳輸?shù)臄?shù)據(jù)結(jié)構(gòu),這是必須知道的基礎(chǔ)性問題。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-24 08:43 by haoren
滾一邊兒去,sb。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-24 13:07 by cxu2003
樓主, 告訴你一句金玉良言, 合適的才是最好的.

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-24 13:08 by cxu2003
水平高的你欣賞不了, 用不了也是一種浪費(fèi), 對人對已都是如此, 這和水平太低是一個道理.

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-24 13:11 by cxu2003
一個人用心編程, 程序就會合格,健壯, 但一個人能不能用心編程, 并不取決于他的教養(yǎng), 水平. 而是你的制度, 說句不好聽的, 只有不合格的公司,沒有不合格的程序員. 這幾年你就會明白我說的話, 如果明白,就說明你沒這方面的天賦.

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-24 16:04 by Yule Snow
可能是說者無意,聽者有心了,相對無意者,這有心者是不是更如他們自己所言呢?

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-25 15:57 by megax
一個優(yōu)秀的程序員不應(yīng)該只去關(guān)注one byte one byte之類的,這些東西你去面試別人,別人可能暫時不會,但是其實(shí)是只要看了,馬上就會的那種,所以這些東西并沒有太大的說服力。你應(yīng)該找的人是這樣的,要有較強(qiáng)的學(xué)習(xí)能力和溝通能力,以及受過良好的教育。不要只去扣著那幾個算法,沒意思。。。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-26 10:46 by 某Programmer
如果考這么多細(xì)節(jié)記憶性的內(nèi)容,我可以連出100個問題,讓樓主一個也不會。

總有些人,平常說的冠冕堂皇,什么希望別人提高解決問題能力;到了面試別人時,就喜歡用類庫式和圖書館式的細(xì)節(jié)問題去難為別人,程序設(shè)計(jì)不同領(lǐng)域中這么多細(xì)節(jié),某人知道的另一個人不知道是完全正常的。喜歡對別人挑挑揀揀,事后還在這評價顯擺的人,除了欠揍,還欠扁,應(yīng)該拖出門外,用軍車連撞108遍然后再用超載大貨車軋上300個來回。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-26 10:53 by Fox
照樓上的意思,我該怎么做?
我只想找個可以干活的人,妄談其他都是多余的。
如果找老婆只為傳宗接代,是不是生育能力最重要呢?你告訴我感情可以培養(yǎng)、孩子可以領(lǐng)養(yǎng),不都TM扯淡呢嗎?

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-26 10:55 by Fox
一天兩天懷不上,是正常的,可以接受的。
如果100天都懷不上,你是不是還有性趣?

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-26 11:12 by Jeck
@某Programmer
說的很對,樓主不應(yīng)該出來顯擺,如果你是被面試者,你的心態(tài)絕對不一樣。因?yàn)槲覜]當(dāng)過面試官,所以我只有被面試者的心理。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-26 15:15 by raof01
@某Programmer
你的說法有失偏頗。有些時候可以通過一些技術(shù)上的細(xì)節(jié)問題來考interviewee,此時并不是要考他的記憶,而是看他的思考方式。也就是那句話:你的答案是錯的,但我喜歡你的思考方式。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-26 17:05 by 某Programmer
沒看到樓主給來的人提示和思考的機(jī)會。

建議樓主變變考題,和具體工作問題結(jié)合或算法與思維性的都可以。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-26 18:12 by zhubin
你會寫最大流么?

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-26 19:48 by Yule Snow
每個人都有自己的背景和位置,“屁股決定腦袋”并不錯吧,在其位就謀其事沒錯吧?

伏爾泰說:我不同意你的話,但是我愿意誓死捍衛(wèi)你說話的權(quán)利。說話可以,那是自由,但是妄加揣測別人的意思,再給人帶上帽子,再噴一痛,這就不可取了。
這世界就是面試的少,被面的多,但是多了也不一定就是強(qiáng)勢。心情可以理解,做法不能贊同。
都平常心吧。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-27 11:39 by yafare
@Fox

[quote]
@kacy16
主要就是字節(jié)對齊和DWORD(4B) copy。
字節(jié)對齊主要體現(xiàn)在首地址不是4的倍數(shù)和尾部不足4B的情況處理,這種情況下,你只能按Byte copy了。
[/quote]

[quote]
void *mymemcpy( void *src, void *des, size_t len )
{
char *tempsrc = (char *)src;
char *tempdes = (char *)des;

size_t offset = len / 4;
for( size_t i=0; i<offset; ++i )
{
*(unsigned long *)tempdes = *(unsigned long *)tempsrc;
tempdes += sizeof(unsigned long);
tempsrc += sizeof(unsigned long);
}

offset = len - len % 4;
for( size_t i=0; i<offset; ++i )
{
*tempdes++ = *tempsrc++;
}
return des;
}
[/quote]

你這個算法考慮首地址不是4的倍數(shù),也就是地址是否對齊了么?既然沒考慮那為什么要在回復(fù)特別提一下呢?

所有的crt實(shí)現(xiàn)里面 memcpy 都是不考慮 Overlapping 的。
如果覺得地址可能會重疊,那么你需要的是 memmove。
看來你是沒看過vc的crt源碼啊。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-27 11:42 by yafare
@Yule Snow

說話要經(jīng)過大腦,別人批評的是什么你看清楚了么?

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-27 13:31 by Fox
@yafare
沒有看過crt源碼
至于給出的代碼沒有考慮首地址對齊,是因?yàn)槲铱催^云風(fēng)的這篇blog,上面對于4B以上,沒有首地址對齊的匯編。

而且VC默認(rèn)結(jié)構(gòu)成員對齊是8B,所以就把前面一點(diǎn)去掉了。

如果真看過這樣源碼的我還不會去問了,就像我沒有看過memcpy和memmove(當(dāng)然,剛才看了),我只是給出自己的理解,我自己還是偏向于問題的思考重于知識的學(xué)習(xí)。所以你提到mmx、sse、crt源碼,可以展示知識面的廣和深,卻不能完全滿足對人的考察,當(dāng)然,如果對這個點(diǎn)能夠掌握這樣的知識,至少可以說明他動過腦子了。

;memcpy.asm - contains memcpy and memmove routines
;
; Copyright (c) Microsoft Corporation. All rights reserved.
;
;Purpose:
; memcpy() copies a source memory buffer to a destination buffer.
; Overlapping buffers are not treated specially, so propogation may occur.
; memmove() copies a source memory buffer to a destination buffer.
; Overlapping buffers are treated specially, to avoid propogation.

;memcpy - Copy source buffer to destination buffer
;
;Purpose:
; memcpy() copies a source memory buffer to a destination memory buffer.
; This routine does NOT recognize overlapping buffers, and thus can lead
; to propogation.
; For cases where propogation must be avoided, memmove() must be used.
;
; Algorithm:
;
; void * memcpy(void * dst, void * src, size_t count)
; {
; void * ret = dst;
;
; /*
; * copy from lower addresses to higher addresses
; */
; while (count--)
; *dst++ = *src++;
;
; return(ret);
; }
;
;memmove - Copy source buffer to destination buffer
;
;Purpose:
; memmove() copies a source memory buffer to a destination memory buffer.
; This routine recognize overlapping buffers to avoid propogation.
; For cases where propogation is not a problem, memcpy() can be used.
;
; Algorithm:
;
; void * memmove(void * dst, void * src, size_t count)
; {
; void * ret = dst;
;
; if (dst <= src || dst >= (src + count)) {
; /*
; * Non-Overlapping Buffers
; * copy from lower addresses to higher addresses
; */
; while (count--)
; *dst++ = *src++;
; }
; else {
; /*
; * Overlapping Buffers
; * copy from higher addresses to lower addresses
; */
; dst += count - 1;
; src += count - 1;
;
; while (count--)
; *dst-- = *src--;
; }
;
; return(ret);
; }

這是給出的基本的算法,都是bytecopy的,但具體的實(shí)現(xiàn)不是這樣子的。
下面是匯編實(shí)現(xiàn),考慮對齊的。
; - move x = ((4 - Dest & 3) & 3) bytes
; - move y = ((L-x) >> 2) dwords
; - move (L - x - y*4) bytes

crt源碼:
while (count--) {
*(char *)dst = *(char *)src;
dst = (char *)dst + 1;
src = (char *)src + 1;
感覺沒有使用dwordcopy。

對于memcpy這個問題,看不看crt源碼和匯編,相信很多人在我寫過這篇文章和前面的回復(fù)之后都可以知道怎么實(shí)現(xiàn)了。

對于技術(shù)批評,我會虛心,尤其是和你們的討論過程中,我還特意看了crt源碼和生成的匯編,所以,非常感謝,以后如果再跟別人講問題的時候,自己還是要把問題搞得頗為清楚才好。

但對于人身攻擊和做人問題,我就恕難忍受了。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-27 13:40 by Fox
@yafare
來這兒的每個人都是有大腦的,回復(fù)的人更是經(jīng)過大腦才說過的話。

我個人感覺我這篇blog和回復(fù)沒有任何惡意,而且初衷也是讓自己有時間反思一下自己,可以說,主要是寫給自己的。

但很多回復(fù)的朋友認(rèn)為我是炫耀或者故意刁難,我實(shí)在冤枉。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-29 17:02 by 匯編和C程序員
整個讀了一遍,也冒一泡。以前寫了幾十年程序孤獨(dú)慣了,也來熱鬧一下。
覺得博主對被面試者并沒有故意刁難的意思。因?yàn)閷镜降滓械氖鞘裁礃拥娜耍纯筒⒉磺宄裕嬖囶}是否合理也就無從談起。
不過如果我要招的是普通C程序員,而且,我又特別想了解一下對方會不會用MEMCPY,我寧愿問一下他MEMCPY這個函數(shù)的限制是什么,只要他告訴我兩個區(qū)域如果重疊可能出現(xiàn)異常,我會認(rèn)為他OK。
如果我需要找的是個寫核心API的程序員,可能應(yīng)用運(yùn)行時百分之幾的時間都跑在這些核心函數(shù)上,我也許會要求他寫個什么算法或者給出他的想法。不過,也許是所從事行業(yè)的原因,總的來說,我愿意要一個能寫出健壯可靠的程序的程序員,而不要一個能寫高效率但我看不懂的程序的程序員,因?yàn)楦咝式?jīng)常意味著難懂,難懂,意味著有錯不容易發(fā)現(xiàn),發(fā)現(xiàn)了錯也不容易修改,修改的時候也容易出錯,換個人也難以接手,我真羅嗦呀。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-03-30 19:14 by 現(xiàn)在的C++筆試題怎么都一樣
哈哈~空類默認(rèn)有哪些函數(shù)~哈哈~這些是編譯器的事情~看過就會知道。
另外,《深度探索C++對象模型》里關(guān)于這點(diǎn)似乎并沒提及吧?要么只說了幾個字而已。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-04-01 12:57 by everspring79
有些無語。身邊月薪過萬的程序員,照樣對你說的這些語言的基礎(chǔ)知識掌握得很差,但是一旦用到,絕不含糊。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-04-01 16:02 by w
什么狗屁東東啊, 什么叫穩(wěn)定排序? 靠,寫了多少年的程序都沒聽過這個鳥名詞
現(xiàn)成的memcpy, 根據(jù)多種情況優(yōu)化的多版本不用, 你要自己寫一個爛方法

# re: 不怕無知,但怕無畏[未登錄]  回復(fù)  更多評論   

2008-04-01 17:01 by oooooo
lz剛面一個就這么裝了。。。

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-04-17 22:40 by 極光炫影
memcpy和API的CopyMemory都不會考慮重疊的情況

用memmove和MoveCopy可以解決

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-10-06 16:16 by 浪跡天涯
學(xué)無止境...
關(guān)鍵還是看態(tài)度與思考能力 不在于你掌握了多少 而在于你是否愿意去掌握
很多東西不接觸不知道 一接觸大概很多人也能知道
所以還得看崗位要求 不過對于基礎(chǔ)的東西 不要求100%知道
但常用的經(jīng)常碰到的問題應(yīng)該知道個八九不離十吧
但很多問題我還是不知道 碰到以后一google很快也能解決
遇到問題發(fā)現(xiàn)問題解決問題的能力最重要!

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-10-26 16:40 by 茫然無措
其實(shí)LZ只是想指出來

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-10-31 16:18 by sufan
@w
沒有必要這么激動吧,關(guān)于穩(wěn)定排序和不穩(wěn)定排序的問題我想在任何一本數(shù)據(jù)結(jié)構(gòu)的書里面都會講到吧,而且博主也說了:在嚴(yán)蔚敏老師的書里面確實(shí)是用的49這個例子,我還記得:為了講清楚這個道理,還在其中一個49的下面做了標(biāo)記,考察在各種排序算法中兩個49的相對位置會不會發(fā)生變化。。。至于你寫了這么久時間程序還不知道這個概念,我只能說,你運(yùn)氣太好了,說不定下一次別人就有可能問你這個問題

# re: 不怕無知,但怕無畏  回復(fù)  更多評論   

2008-12-01 20:20 by jimsmorong
這個面試者比我牛好多了
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美国产精品专区| 亚洲精品系列| 日韩一区二区精品视频| 亚洲男人的天堂在线| 欧美日韩aaaaa| 亚洲黄色成人| 亚洲精品综合久久中文字幕| 一本一本大道香蕉久在线精品| 日韩视频免费观看高清完整版| 久久久久国产一区二区三区四区 | 99国产精品久久| 久久久久久久久蜜桃| 在线综合亚洲| 欧美性视频网站| 亚洲永久免费观看| 亚洲先锋成人| 国产美女高潮久久白浆| 亚洲网站在线| aa亚洲婷婷| 久久综合伊人77777蜜臀| 国产日韩欧美自拍| 欧美一级午夜免费电影| 一区二区三区视频在线看| 免费观看欧美在线视频的网站| 国内精品视频一区| 蜜臀99久久精品久久久久久软件 | 久久精品国产第一区二区三区最新章节 | 久久精品一区二区国产| 亚洲已满18点击进入久久| 欧美视频一区二区| 久久av一区二区三区| 久久久亚洲成人| 亚洲午夜在线观看视频在线| 欧美精品 日韩| 香港成人在线视频| 久久精品国产99国产精品| 18成人免费观看视频| 亚洲女同精品视频| 亚洲精品小视频在线观看| 亚洲毛片在线免费观看| 欧美一区二区视频在线观看| 亚洲欧美日韩中文播放| 久久久精品一区| 久久精品国产清自在天天线| 欧美精品一区在线播放| 一区二区久久久久| 亚洲第一二三四五区| 一本色道久久综合亚洲精品不| 伊人久久婷婷| 欧美日韩免费在线观看| 亚洲国产精品成人一区二区 | 久久精品理论片| 香蕉久久夜色精品| 欧美国产欧美综合| 欧美在线免费视屏| 国产日产欧美a一级在线| 亚洲国产美国国产综合一区二区| 亚洲欧洲视频在线| 欧美高清在线观看| 亚洲视频综合在线| 久久精品在这里| 狠狠综合久久av一区二区小说| 欧美在线二区| 亚洲人妖在线| 久久久久久久网| 日韩视频在线播放| 国产裸体写真av一区二区| 欧美一区激情| 亚洲一区二区视频在线观看| 欧美成人综合网站| 久久人人97超碰国产公开结果| 亚洲日本va午夜在线电影| 国产精品久久99| 欧美xart系列高清| 亚洲欧美国产精品va在线观看| 黄色亚洲大片免费在线观看| 性欧美大战久久久久久久免费观看| 亚洲国产日韩欧美一区二区三区| 久久久久久久综合狠狠综合| 午夜视频一区二区| 亚洲视频碰碰| 亚洲欧美日韩区| 久久国产精品99国产| 欧美aⅴ一区二区三区视频| 免费人成网站在线观看欧美高清| 欧美在线一二三区| 亚洲啪啪91| 亚洲国产精品www| 日韩亚洲欧美一区二区三区| 日韩午夜av电影| 久久久综合网| 亚洲人体一区| 亚洲高清在线| 久久久亚洲精品一区二区三区| 午夜国产精品视频免费体验区| 亚洲欧美网站| 亚洲一区黄色| 欧美日韩一区三区四区| 国产一区二区黄| 国模大胆一区二区三区| 亚洲激情网站| 亚欧美中日韩视频| 亚洲在线一区二区| 久久久久亚洲综合| 欧美色一级片| 亚洲一区二区精品视频| 久久久精品国产免大香伊 | 欧美一区二区三区播放老司机| 亚洲综合精品一区二区| 午夜精品亚洲| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 99精品99久久久久久宅男| 亚洲精品影视| 西西裸体人体做爰大胆久久久| 欧美黄色影院| 麻豆久久精品| 亚洲欧美中日韩| 亚洲国产成人av| 久久精品视频在线看| 亚洲深夜福利| 亚洲欧洲精品一区二区| 国产一区免费视频| 国产精品v日韩精品v欧美精品网站| 久久久精品国产一区二区三区| 亚洲一卡二卡三卡四卡五卡| 欧美国产欧美综合 | 亚洲新中文字幕| 亚洲精品一区二区三区樱花| 一色屋精品视频免费看| 亚洲网站在线播放| 久久不射2019中文字幕| 亚洲美女在线观看| 红桃视频国产精品| 国产日韩一区| 国产欧美日韩三区| 欧美午夜精品理论片a级按摩| 欧美精品在线视频| 欧美国产日产韩国视频| 免费观看成人| 欧美大胆成人| 欧美日韩高清一区| 欧美日韩岛国| 国产精品激情av在线播放| 欧美日韩黄色大片| 欧美日本久久| 国产精品成人一区二区艾草| 欧美日韩在线播放一区二区| 欧美日韩国产成人在线91| 欧美日韩国产成人| 国产精品女人久久久久久| 亚洲一区二区高清视频| 亚洲欧美激情诱惑| 欧美一级淫片aaaaaaa视频| 午夜精品视频| 久久久蜜臀国产一区二区| 久久综合给合| 欧美精品日韩精品| 国产精品成av人在线视午夜片| 国产精品嫩草影院av蜜臀| 国产精品自拍网站| 国产一区视频观看| 亚洲欧洲三级| 亚洲一区二区三| 久久久99国产精品免费| 欧美mv日韩mv国产网站| 亚洲精品久久久久久久久| 中日韩视频在线观看| 午夜在线电影亚洲一区| 久久深夜福利| 欧美午夜美女看片| 国内外成人在线| 亚洲精品在线免费| 午夜精品一区二区三区在线视| 久久久久久一区| 亚洲精品激情| 久久9热精品视频| 欧美激情91| 国产麻豆综合| 亚洲免费电影在线| 久久久精品国产一区二区三区| 亚洲国产成人精品久久久国产成人一区| aa级大片欧美| 美女亚洲精品| 国产午夜精品全部视频播放| 亚洲美女尤物影院| 久久精品一本| 在线中文字幕不卡| 欧美v日韩v国产v| 国产色产综合色产在线视频| 99精品欧美一区| 久久婷婷综合激情| 亚洲一区二区三区涩| 欧美成人午夜免费视在线看片| 国产欧美精品日韩| 亚洲图片在线| 亚洲国产免费| 久久一区二区三区超碰国产精品| 国产精品久久久久免费a∨| 亚洲日本无吗高清不卡| 蜜臀久久99精品久久久画质超高清|