日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

库壳的一些有趣面试题

發(fā)布時間:2024/9/30 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 库壳的一些有趣面试题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://coolshell.cn/articles/4162.html

有兩個相同功能代碼如下,請在在A,B,C是什么的情況下,請給出三個原因case 1比case 2快,還有三個原因case 2會比case 1要執(zhí)行的快。(不考慮編譯器優(yōu)化)

case 1
1 2 3 4 5 for(i=0; i<N; ++i){ ????A; ????B; ????C; }
case 2
1 2 3 4 5 6 7 8 9 for(i=0; i<N; ++i){ ????A; } for(i=0; i<N; ++i){ ????B; } for(i=0; i<N; ++i){ ????C; }

我的第一個反應(yīng)是——

  • case1 要快一些,因為只有一個i++的i<N的操作,而case 2卻有三個,這在點上,case 1就比case 2要快。
  • case2如果要快的話,有一個原因是,A, B, C其中一個需要去先獲得一個資源(比如一個鎖),在case1下,每次都要去拿這個資源,而case2下,只需要拿一次然后。但這個可能是不對的,因為我無法想出一個相同的語句塊放在case 1中會和放在case 2中有差別。(不過可能比較接近了)

繼續(xù)思考:這個題有點像是“同步和異步”的問題,case 1是同步,case 2是異步,所以,異步快于同步,也許可以從這個方向出發(fā),寫出A, B, C的語句塊。

不過,其要三個原因啊。各位,你們有想法嗎

—-更新 1—-

剛才在twitter上與人討論,發(fā)現(xiàn)又有一種情況,case 2要比case 1要快。比如,A, B, C分別訪問是不同的內(nèi)存塊(數(shù)組),那么case 1就得在不同的內(nèi)存塊上來回切換尋址,而case2則可以連續(xù)地訪問內(nèi)存塊。訪問連續(xù)的內(nèi)存效率要高。尤其是三塊大內(nèi)存。

—-更新 2—

正如本貼評論中所說的,CPU的cache也是其中一個因素。大家對底層知識了解的都很不錯啊。贊一個。



http://coolshell.cn/articles/4429.html/comment-page-1#comments

你是山西的一個煤老板,你在礦區(qū)開采了有3000噸煤需要運送到市場上去賣,從你的礦區(qū)到市場有1000公里,你手里有一列燒煤的火車,這個火車最多只能裝1000噸煤,且其能耗比較大——每一公里需要耗一噸煤。請問,作為一個懂編程的煤老板的你,你會怎么運送才能運最多的煤到集市?

這道題一開始看上去好像是無解的,因為你的火車每一公里就要消耗一噸煤,而到目的地有1000公里,而火車最多只能裝1000噸媒。如果你的火車可以全部裝下,到目的地也會被全部燒光,一丁點也不剩。所以,很多人的第一反應(yīng)都是覺得這個不太可能。

如果你一開始就覺得不太可能的話,這是很正常的。不過我不知道你還會不會繼續(xù)思考下去,如果你不想思考下去了,那么我很為你擔(dān)憂,因為你可能并不是一個不善于思考的人,而是一個畏難的人,還有可能是一個容易放棄的人。這對于你做好 一個需要大量思考的工作的程序員來說可能并不適合。

我一開始也覺得不可能,后來想了一想,想到一個解法可以最多運送500噸煤到市場,方法如下:


  • 裝1000噸煤,走250公里,扔下500噸煤,回礦山。
  • 裝1000噸煤,走到250公里處,拿起250噸煤繼續(xù)向前到500公里處,扔下500噸煤,回礦山。此時火車上還有250噸,再加上在250公里處還有250噸煤,所以,火車是可以回礦山的。
  • 裝上最后1000噸煤,走到500公里處,裝上那里的500噸煤,然后一直走到目的。
  • 于是,你最多可以運送500噸煤到市場(當(dāng)然,火車也回不去了,因為那礦山?jīng)]有煤了)



    火車運行時,最好讓他滿載,起始點記為A
    第一步,分三次把煤運送到中間點B
    第二步,分兩次把煤運送到中間點C
    第三步,把煤運送到目的地D
    第一步:5*(AB) = 1000;解得AB=200
    第二步:3*BC = 1000;解得BC=333.
    第三步:AB+BC+CD=1000;解得CD=467
    因此,做多運送533噸煤到目的地


    http://coolshell.cn/articles/3738.html

    打印質(zhì)數(shù)的各種算法


    http://coolshell.cn/articles/1202.html

    賽馬問題


    http://coolshell.cn/articles/3345.html

    140google面試題


    http://coolshell.cn/articles/3445.html

    輸出1-1000的數(shù)


    http://coolshell.cn/articles/2514.html

    bool變量



    總結(jié)

    以上是生活随笔為你收集整理的库壳的一些有趣面试题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。