<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 84,  comments - 54,  trackbacks - 0

    一位大四程序員的面試經歷和體會

      做為一名大四的學生,我面試過不少的單位,有成功的也有失敗的,但是對我來說所有的失敗在某種意義上都是一種成功,特別是我下面寫的這些,寫這篇文章的時,我已經簽了南京的一家軟件公司,但是想起今年2月21日我面試蘇州臺灣的IT公司的經歷聯想到我們現在學習編程的一些情況我真的深有感觸,這次面試使我深深的體會到了失敗但也收獲了很多。?


    ??? 我要說的將分成三部分,
    ??? 1.是我面試的具體經過
    ??? 2.是由面試想到的
    ??? 3.現今我應該做的。
    ??? 當然這些話很大程度上是我個人的意見,不可能完全得到大家的贊同,所以 在某些觀點上如果哪位朋友覺得跟我的有很大出入,請不要介意,也不要對我攻擊,就當我 沒有說過,歡迎和我聯系共同探討這些問題!我的EMAIL:wutao8@263.net?

    1.面試經過?
    ??????? 大約在年前我接到了臺灣瑞晟(Realtek)蘇州公司的面試通知,通知我2月21日到蘇州工業園區面試,接到面試后的幾天我把一些專業課溫習了一遍,特別是C++和數據結構,由于大學幾年里,我一直專研這些方面,加上通過了高級程序員的考試,對于一些常用的算法我差不多也 達到了爛熟于胸的地步,當時的感覺是如果問了我這些方面的問題我應該是沒有問題的!

    ??????? 21日那天我被安排在4:30面試,由一位技術人員單獨給我面試,在問了一些簡單的問題之后 ,他給我出了一道編程題目,題目是這樣的:

    (由于具體面試的題目比較煩瑣,我將其核心思想提取出來分解成……(亂碼)?

    1) 寫一個函數計算當參數為n(n很大)時的值 1-2+3-4+5-6+7......+n?
    ??????? 哼,我的心里冷笑一聲!沒想到這么簡單,我有點緊張的心情頓時放松起來!?
    于是很快我給出我的解法:??
    ??????

    long ?fn( long ?n)??
    {??
    ??
    long ?temp = 0 ;??
    ??
    int ?i,flag = 1 ;??
    ??
    if (n <= 0 )??
    ??
    {??
    ??????printf(
    " error:?n?must?>?0);??
    ??????exit( 1 );??
    ????}
    ??
    ??
    for (i = 1 ;i <= n;i ++ )??
    ??
    {??
    ??????temp
    = temp + flag * i;??
    ??????flag
    = ( - 1 ) * flag;??
    ??}
    ??
    ??????
    return ?temp;??
    }
    ?


    ???????? 搞定!當我用期待的目光看著面試官的時候,他微笑著跟我說,執行結果肯定是沒有問題! 但當n很大的時候我這個程序執行效率很低,在嵌入式系統的開發中,程序的運行效率很重要 ,能讓CPU少執行一條指令都是好的,他讓我看看這個程序還有什么可以修改的地方,把程序 優化一下!聽了這些話,我的心情當時變的有點沉重,沒想到他的要求很嚴格,之后我對程序 進行了嚴格的分析,給出了改進了的方案!

    ???????

    long?fn(long?n)??
    {??
    ????
    long?temp=0;??
    ????
    int?j=1,i=1,flag=1;??
    ????
    if(n<=0)??
    ??
    {??
    ??????printf(
    "error:?n?must?>?0);??
    ??????exit(1);??
    ????}
    ??
    ????
    while(j<=n)??
    ????
    {??
    ??????temp
    =temp+i;??
    ??????i
    =-i;??
    ??????i
    >0?i++:i--;??
    ??????j
    ++;??
    ????}
    ??
    ????
    return?temp;??
    }
    ?

    ??????? 雖然我不敢保證我這個算法是最優的,但是比起上一個程序,我將所有涉及到乘法指令的語 句改為執行加法指令,既達到要題目的要求而且運算時間上縮短了很多!而代價僅僅是增加了 一個整型變量!但是我現在的信心已經受了一點打擊,我將信將疑的看者面試官,他還是微笑 著跟我說:“不錯,這個程序確實在效率上有了很大的提高!”我心里一陣暗喜!但他接著說這個程序仍然不能達到他的要求,要我給出更優的方案!天啊!還有優化!我當時真的有點崩 潰了,想了一會后,我請求他給出他的方案!然后他很爽快的給出了他的程序!
    ?
    ?1long?fun(long?num)
    ?2{
    ?3????long?result?=?0;
    ?4????if(num?<=?0)
    ?5????{
    ?6????????printf("num?must?greater?than?zero");
    ?7????????return?0;
    ?8????}

    ?9????else?if(0?==?num?%?2)
    10????{
    11????????result?=?(n/2)*(-1);
    12????????return?result;
    13????}

    14????else
    15????{
    16????????result?=?(result/2)?+?result;
    17????}

    18}



    ??? ??? 搞笑,當時我目瞪口呆,沒想到他是這個意思,這么簡單的代碼我真的不會寫嗎,但是我為 什么沒有往那方面上想呢!他說的沒有錯,在n很大很大的時候這三個程序運行時間的差別簡 直是天壤之別!當我剛想開口說點什么的時候,他卻先開口了:“不要認為CPU運算速度快就 把所有的問題都推給它去做,程序員應該將代碼優化再優化,我們自己能做的決不要讓CPU做 ,因為CPU是為用戶服務的,不是為我們程序員服務的!”多么精辟的語言,我已經不想再說 什么了!接著是第二個問題:?
    他要求我用一種技巧性的編程方法來用一個函數實現兩個函數的功能n為如:

    ?????? fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6!?
    ?????? fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9!?

    ????? ?現在用一個函數fn(int n,int flag)實現,當flag為0時 ,實現fn1功能,如果flag為1時實現fn2功能!他的要求還是效率,效率,效率!說實在話, 如果我心情好的話我應該能給出一種比較好的算法,但我那時真的沒有什么心思再想了,
    我在 紙上胡亂畫了一些諸如6!=6*5!的公式后直截了當的跟他說要他給出他的答案!面試官也沒有 說什么,給出了他的思路:

    ?

    ?1int?fun(int?n,int?flag)
    ?2{
    ?3?????int?array[][5]?=?{{2,6,24,120,720},
    ?4???????????????????{120,720,5040,40320,362880}}
    ;
    ?5
    ?6?????int?result?=?0;
    ?7
    ?8????for(int?i?=?0;?i?<?6;?i++)
    ?9??????{
    10????????if(0?==?flag)
    11????????{
    12??????????result?+=?result?/?array[0][i];
    13????????}

    14????????else?if(1?==?flag)
    15????????{
    16??????????result?+=?result?/?array[1][i];
    17????????}

    18??????}

    19??
    20????return?result;
    21}


    ?????? (下面這些文字不是我的原創,是我偶爾在網上發現的,我真的很幸運能看到這些,這篇文 章也隨著下面的文字而結束,我真心的希望您能從這篇文章中得到啟發,這篇文章歡迎大家隨 意轉載!)?

    作者:金蝶中間件公司CTO袁紅崗?

    不知不覺做軟件已經做了十年,有成功的喜悅,也有失敗的痛苦,但總不敢稱自己是高手, 因為和我心目中真正的高手們比起來,還差的太遠。世界上并沒有成為高手的捷徑,但一些基 本原則是可以遵循的。?

      1. 扎實的基礎。數據結構、離散數學、編譯原理,這些是所有計算機科學的基礎,如果 不掌握他們,很難寫出高水平的程序。據我的觀察,學計算機專業的人比學其他專業的人更能 寫出高質量的軟件。程序人人都會寫,但當你發現寫到一定程度很難再提高的時候,就應該想 想是不是要回過頭來學學這些最基本的理論。不要一開始就去學OOP,即使你再精通OOP,遇到 一些基本算法的時候可能也會束手無策。?

      2. 豐富的想象力。不要拘泥于固定的思維方式,遇到問題的時候要多想幾種解決問題的 方案,試試別人從沒想過的方法。豐富的想象力是建立在豐富的知識的基礎上,除計算機以外 ,多涉獵其他的學科,比如天文、物理、數學等等。另外,多看科幻電影也是一個很好的途徑 。?

      3. 最簡單的是最好的。這也許是所有科學都遵循的一條準則,如此復雜的質能互換原理 在愛因斯坦眼里不過是一個簡單得不能再簡單的公式:E=mc^2。簡單的方法更容易被人理解, 更容易實現,也更容易維護。遇到問題時要優先考慮最簡單的方案,只有簡單方案不能滿足要 求時再考慮復雜的方案。?

      4. 不鉆牛角尖。當你遇到障礙的時候,不妨暫時遠離電腦,看看窗外的風景,聽聽輕音 樂,和朋友聊聊天。當我遇到難題的時候會去玩游戲,而且是那種極暴力的打斗類游戲,當負 責游戲的那部分大腦細胞極度亢奮的時候,負責編程的那部分大腦細胞就得到了充分的休息。 當重新開始工作的時候,我會發現那些難題現在竟然可以迎刃而解。?

      5. 對答案的渴求。人類自然科學的發展史就是一個渴求得到答案的過程,即使只能知道 答案的一小部分也值得我們去付出。只要你堅定信念,一定要找到問題的答案,你才會付出精 力去探索,即使最后沒有得到答案,在過程中你也會學到很多東西。?

      6. 多與別人交流。三人行必有我師,也許在一次和別人不經意的談話中,就可以迸出靈 感的火花。多上上網,看看別人對同一問題的看法,會給你很大的啟發。?

      7. 良好的編程風格。注意養成良好的習慣,代碼的縮進編排,變量的命名規則要始終保 持一致。大家都知道如何排除代碼中錯誤,卻往往忽視了對注釋的排錯。注釋是程序的一個重 要組成部分,它可以使你的代碼更容易理解,而如果代碼已經清楚地表達了你的思想,就不必 再加注釋了,如果注釋和代碼不一致,那就更加糟糕。?

      8. 韌性和毅力。這也許是"高手"和一般程序員最大的區別。A good programming is 99 weat and 1??ffee。高手們并不是天才,他們是在無數個日日夜夜中磨練出來的。成功能給 我們帶來無比的喜悅,但過程卻是無比的枯燥乏味。你不妨做個測試,找個10000以內的素數 表,把它們全都抄下來,然后再檢查三遍,如果能夠不間斷地完成這一工作,你就可以滿足這 一條。?
     ?
      這些是我這幾年程序員生涯的一點體會,希望能夠給大家有所幫助。?

    posted on 2006-09-04 21:49 JavaCoffe 閱讀(351) 評論(0)  編輯  收藏 所屬分類: J2SE基礎學習
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(5)

    隨筆分類(80)

    收藏夾(1)

    最新隨筆

    積分與排名

    • 積分 - 58037
    • 排名 - 897

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 久久青草精品38国产免费| 成a人片亚洲日本久久| 久久久久久AV无码免费网站| 亚洲综合精品香蕉久久网| 一级毛片aaaaaa视频免费看| 国产成人精品曰本亚洲79ren| 国产精品1024在线永久免费| 亚洲日韩小电影在线观看| 在线涩涩免费观看国产精品| 亚洲国产精品无码久久久蜜芽| 久久国产乱子精品免费女| 亚洲丝袜美腿视频| 91在线视频免费看| 国产亚洲漂亮白嫩美女在线| 亚洲人成无码久久电影网站| 国产线视频精品免费观看视频| 久久丫精品国产亚洲av不卡| 成人免费的性色视频| 亚洲成a人无码亚洲成www牛牛 | 国产精品亚洲色婷婷99久久精品| 成人永久福利免费观看| 亚洲精品视频免费| 亚洲国产成人私人影院| 成年女人看片免费视频播放器| 黄色一级免费网站| 亚洲好看的理论片电影| 好大好硬好爽免费视频| 五月天婷婷免费视频| 亚洲人成依人成综合网| 在线免费观看视频你懂的| 亚洲国产免费综合| 亚洲天堂一区二区三区四区| 国产老女人精品免费视频| 国产成人无码区免费网站| 激情综合亚洲色婷婷五月| 亚洲AV无码专区日韩| 69视频在线是免费观看| 免费亚洲视频在线观看| 337p日本欧洲亚洲大胆精品555588| 成人au免费视频影院| 七色永久性tv网站免费看|