<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

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 亚洲AV无码专区国产乱码不卡| 香蕉国产在线观看免费| 4444亚洲国产成人精品| 在线精品亚洲一区二区三区| 免费一级毛片清高播放| 国产无遮挡吃胸膜奶免费看 | 亚洲欧洲精品久久| 亚洲国产精品无码一线岛国| 国产v亚洲v天堂无码网站| 亚洲精品国产成人片| 无码欧精品亚洲日韩一区| 97se亚洲综合在线| 亚洲伊人精品综合在合线| 亚洲成年网站在线观看| 成a人片亚洲日本久久| 免费一级毛片在线播放放视频| 亚洲色图校园春色| 亚洲网址在线观看| 亚洲一区二区三区亚瑟| 亚洲日本一线产区和二线产区对比| 亚洲Av永久无码精品三区在线| 欧洲美熟女乱又伦免费视频| 国产成人免费福利网站| 亚洲精品综合久久| 国产AV无码专区亚洲AV男同| 亚洲精品视频在线播放| 亚洲午夜电影在线观看| 亚洲av无码av在线播放| 一级成人毛片免费观看| 中国毛片免费观看| 1000部拍拍拍18勿入免费凤凰福利| 成人网站免费大全日韩国产| 亚洲a一级免费视频| 毛片a级毛片免费观看品善网| 69免费视频大片| 性感美女视频免费网站午夜| 亚洲中文字幕成人在线| 亚洲VA成无码人在线观看天堂| 中文字幕亚洲无线码a| 亚洲高清中文字幕综合网| 亚洲人成网站18禁止|