軟體/韌體工程師《面試重點與觀念複習》使用C, C++, C#, JAVA, Python 透過筆試題目建立資工腦: 資料結構, 演算法, 作業系統, 程式語言, 計組硬體, 網路


# 隱藏內容為會員專屬, 請勿擅自公開以避免侵害著作財產權法, 謝謝
# 2020年起本網站更新php7, 若有問題歡迎告知, 謝謝
# 2019年更新https協定, 登入後請刷新本筆記
# 本筆記內容已更新, 建議依序閱讀 #
# 時間緊迫的學員, 建議仍需看完(直接列出考古題1)與(直接列出考古題2) #

本文章 目錄:
--- 面試須知與應答技巧
--- 資料結構 / 變數儲存與記憶體
--- 程式語言 / 演算法
--- 作業系統 / 多執行緒(多程序)的觀念與實作控制
--- 轉自ptt: [重要] 發文前務必閱讀:C/C++常見問題十三誡
--- 擬真試題1/擬真試題2/擬真試題3/擬真試題4
--- 直接列出考古題1(精華完整53題含解答)
--- 直接列出考古題2(精華完整35題含解答)
--- 深度討論考古題1(DEMO完整10題含解答) 選擇使用C,C++,C#或JAVA
--- 深度討論考古題2(DEMO完整11題含解答) 選擇使用C,C++,C#或JAVA
--- 撲克牌(大老二)洗牌與牌型判斷(JAVA)
--- Python基本教學
--- Leetcode實戰討論

面試須知與應答技巧:

開始吧! GO GO GO …

0. 中英文履歷表 (Resume/CV)

在所有一切開始之前, 請務必仔細看過Job Description, 也就是公司的徵才需求描述! 裡面的內容是由面試主管與人資HR共同撰寫而來, 所以他們想要找的人才, 基本上已經寫了很大一部分的提示在裡面, 通常面試過程它們會反覆問面試者一樣的內容, 所以不要捨本逐末喔! 把自己打造成徵才描述裡面的人才吧!!

筆記轉型成部分不對外開放。
閱讀請繳交3,280元,您就會收到授權一年的邀請函Email,以及紙本重點筆記郵寄給您!

匯款帳號請來信詢問, 站長信箱:eeepage@gmail.com
匯款後,請告知您的帳號後三碼與您Gmail作為帳號,易春木會寄出權限開啟之邀請函,三個工作日內可開啟權限。
(*若需信用卡支付, 請來信詢問)

1. 電話面試

一開始的電話面試很重要, 關係到能否爭取到實際見面面試的唯一機會!

筆記轉型成部分不對外開放。
閱讀請繳交3,280元,您就會收到授權一年的邀請函Email,以及紙本重點筆記郵寄給您!

匯款帳號請來信詢問, 站長信箱:eeepage@gmail.com
匯款後,請告知您的帳號後三碼與您Gmail作為帳號,易春木會寄出權限開啟之邀請函,三個工作日內可開啟權限。
(*若需信用卡支付, 請來信詢問)

2. 現場面試

基本上面談內容包含: 個人特質面試, 技術專業面試, 問答討論面試! 順序不一定, 根據各家公司以及面試者的習慣而定

個人特質面試:
1. 言談態度與服裝儀容:
乾淨整齊, 態度誠懇有熱情, 注意表達要有自信有條理, 試圖站在主管立場思考問題回答, 盡量避免回答來公司學習而是說進公司是要來解決問題的, 道理很簡單, 任何職缺都是因為資方需求而需要尋找能滿足需求的勞方, 所以能夠明白公司的困難點協助處理, 這樣才會加分!

2. 自我介紹:
除了介紹自己的背景經歷, 記得帶出「為何會想要來應徵這個工作?」「未來短中期的職涯規劃」「自己的優缺點」……
注意部份工作會需要以英語表達喔!

技術專業面試:
1. 筆試或是面對面情境專業測試:
兩種方式各有優缺, 但都能測出Candidate的能力, 因此面對每個問題, 標準答案之外也需著重思考邏輯以及處理過程, 透過互動可以多提供自身經驗讓面試官知道你面對問題的解決能力!

2. 軟體工程師專業技術請詳閱本文接下來的內容
重點: 清楚的演算法與程式知識, 解決方案的清晰思考, 時間與空間效率, 產業的專業知識

問答討論面試:
1. 詢問此職缺的工作內容, 以及團隊合作方式
2. 曾經最有成就的工作, 以及最困難的工作
3. 根據此職缺設定自己的職涯規劃, 如何具體作法
4. 為什麼要錄用你? 建議可以再說明自己的優點, 以及該職缺的內容自己適合的原因
5. 請問還有什麼問題? 通常已經到尾聲, 若對公司或職務哪裏不懂的話, 可以此時詢問展現企圖心以及事前準備的功課

3. 面試的心態準備與建設

筆記轉型成部分不對外開放。
閱讀請繳交3,280元,您就會收到授權一年的邀請函Email,以及紙本重點筆記郵寄給您!

匯款帳號請來信詢問, 站長信箱:eeepage@gmail.com
匯款後,請告知您的帳號後三碼與您Gmail作為帳號,易春木會寄出權限開啟之邀請函,三個工作日內可開啟權限。
(*若需信用卡支付, 請來信詢問)


繼續閱讀…

本文章 目錄:
--- 面試須知與應答技巧
--- 資料結構 / 變數儲存與記憶體
--- 程式語言 / 演算法
--- 作業系統 / 多執行緒(多程序)的觀念與實作控制
--- 轉自ptt: [重要] 發文前務必閱讀:C/C++常見問題十三誡
--- 擬真試題1/擬真試題2/擬真試題3/擬真試題4
--- 直接列出考古題1(精華完整53題含解答)
--- 直接列出考古題2(精華完整35題含解答)
--- 深度討論考古題1(DEMO完整10題含解答) 選擇使用C,C++,C#或JAVA
--- 深度討論考古題2(DEMO完整11題含解答) 選擇使用C,C++,C#或JAVA
--- 撲克牌(大老二)洗牌與牌型判斷(JAVA)
--- Python基本教學
--- Leetcode實戰討論

謝謝各位大大的支持
本人盡綿薄之力幫助兔唇孩童

謝謝各位大大的支持
本人盡綿薄之力幫助台灣偏鄉的社區照顧工作, 讓偏鄉的長輩、婦女與家庭獲得持續且穩定的扶助

謝謝各位大大的支持
本人盡綿薄之力幫助台灣動物救援

在〈軟體/韌體工程師《面試重點與觀念複習》使用C, C++, C#, JAVA, Python 透過筆試題目建立資工腦: 資料結構, 演算法, 作業系統, 程式語言, 計組硬體, 網路〉中有 158 則留言

  1. 昭哥 回覆

    發現一個小bug
    7.write a function that can calculate 1*2+2*3+…..+(n-1)*n
    int nc(int n)
    {
    int sum = 0;
    for(int i = 2; i <= n; i++){
    sum = sum + n*(n-1); <= 這裡錯了 是 sum = sum + i*(i-1); 才對
    }
    return sum;
    }

  2. user 回覆

    return ( a[i] > b[i]) ? 1 : -1;
    最後一行是否為這樣比較恰當呢?
    上面留言格式跑掉可以幫刪 謝謝版主

  3. R.C. 回覆

    板主您好,對於這題的解答請問是否應修正為以下這樣,如有錯誤,請不吝賜教:

    1.2 32-bit machine用C語言對位址 0x00005000 的第三個bit設成0,第五個bit設成1。
    #define BIT3 (0x0004)
    #define BIT5 (0x0010)

    unsigned int a=0x00005000;
    void clear_bit3(void) { a &= ~BIT3;}
    void set_bit5(void) { a |= BIT5;}

  4. 1 回覆

    在第三題時做strcmp函式那題中,如果兩個參數char a[] 和 b[] 是使用如下宣告: char a[4] = “1234”,這樣的話就不一定會有’\0’在array的最後面,請問這樣的話該如何處理?

    • 易春木 文章作者

      本題是要比較字串, 所以基本上字串結尾必須要有一個「\0」字元作為結尾
      如果不是字串的話, 則不適用strcmp

      若要比較array不是比較字串的話, 也就是說沒有「\0」字元作為結尾
      改寫為

      但其實已經偏離題目的基本設定, 共勉之

  5. 自動引用通知: 工作面試心得(QNAP、緯穎、正文、 工研院、啟碁、全景、智易、CHTTL) – Cinnating

    • 易春木 文章作者

      原始的字串宣告需配置空間, 已補上完整答題內容喔! Thanks

    • 易春木 文章作者

      補充一題: 超微公司題目
      Q: 假設有一計算機有48KB記憶體,若第一個記憶體的位址為0000(16進位),則最後一個記憶體的位址為何?
      A: 48KB → 48*1024 = (2^5+2^4)*2^10 = 110000(2)*10000000000(2) = 1100000000000000(2) = 0xC000(16)
      所以最後一個是0xBFFF
      0xC000 -1 = 0xBFFF

      補充一題常問的Python問題:
      Q: 請問 Pthon程式語言的 list 與 tuple 有什麼不同?
      A: 這兩者最主要的不同: tuple 是無法被修改的。 串列list是一連串順序性的元素組成, 可以被新增,刪除,修改!

      補充一題mutex互斥鎖問題:
      Q: Windows driver 怎麼做到基本的mutex 互斥鎖?
      A: 最簡單的方法是使用Event方式, Threads是常見的並行處理, 但多threads之下有時候必須做好同步, 否則會出現異常!
      第一種情況: 兩個threads 共用某一資料, 但同時間只能一個thread存取
      第二種情況: Thread_1 要使用 Thead_2 處理完成的資料, 所以必須要等待Thead_2

      以下舉例兩個thread之間的作法 (from Neeraj Vaidya):
      可以手動修改程式碼安插這些API:
      CreateEvent: 建立一個Event
      SetEvent:設定Event使其狀態為set, 用以表示完成
      ResetEvent:清除Event使其狀態為Reset, 用以表示未完成
      WaitForSingleObject()函數: 在必須等待的地方, 停在此處等著Event被設為set狀態

    • 易春木 文章作者

      謝謝提醒, 這部分中英的確造成困擾, 近期會修正, 非常感謝告知喔!若有其他問題歡迎留言告知. It is my pleasure to get your feedback.

      2017/12/27: 已更正囉!

    • 易春木 文章作者

      應該會先處理 Linux process的部分喔, 若擬真試題遇到卡關的問題, 歡迎來信提問或留言喔!

  6. 易春木 文章作者回覆

    引用心得推廣 by:

    HC 分享:
    整理面試題目:易春木題庫類 軟韌體工程師面試重點與考題

    mropengate 分享:
    易春木 – 軟體/韌體工程師面試重點與考題- C語言,資料結構,演算法,以及OS作業系統..等題目(筆試考題)

    zmcx16 分享:
    專業知識複習:軟韌體工程師面試- C語言與OS作業系統 常見題目(筆試考題)
    內容很豐富,因為資工的東西真的很多,裡面的內容可以幫你快速複習OS以及C語言相
    關。

    RTZU 分享:
    這個網頁整理了很多面試時會遇到的不管是筆試/面談常常會被問到的問題
    基本上很多考古題和計結資結OS演算法基本概念
    這邊都整理得十分清楚了
    推薦要去面試之前可以靠這邊的筆記惡補一下

  7. 易春木 文章作者回覆

    2017~2018陸續更新:

    *增加更多作業系統:多程序與多執行緒的觀念與實作控制觀念, 這部份真的很常問, 測試對於OS作業系統與多執行緒的熟練程度, 順便知道面試者的程式設計整體思路

    *回應學員問題&更新考題內容

    *增加撲克牌的基本發牌/出牌排型程式碼, 現場考試或上機考會常問到, 建議應知道演算法邏輯!

    • 易春木 文章作者

      隱藏答題內容與關閉複製功能, 是為了避免流出以保障付費讀者的權利, 將再研究如何兼顧兩者需求與平衡, 謝謝建議喔。

  8. 易春木 文章作者回覆

    * 修正volatile部分程式碼
    * 新增了程式語言的定義與分類
    * 另外最近研究了一下Python, 發現也是面試新趨勢的程式語言, 之後陸續更新!

  9. lee 回覆

    請問第12題設置a 的 bit3 或是清除a 的 bit3
    #define BIT3(0x1<<3) /*二進未表示:00001000*/
    這樣是否是會改寫到第4個bit??

    • 易春木 文章作者

      是的, 會再Email與學員聯繫, 並請學員提供收件資訊喔!

  10. I-Chun Yeh 回覆

    list.reverse() 定義應該是對list中的元素進行反向排序,接在list.sort()後才能變成由大到小排序吧?

    • 易春木 文章作者

      對的, list.reverse()會將list元素反向排列, 而本文Python教學是因為先作了sort()排列由小到大, 接著作reverse() 因此為大到小排列 ~ 謝謝提醒, 已更新囉! 感謝

  11. yanwen wang 回覆

    請問一下 考古題1 第11題印字串的%c,line05 *aryPtr = ‘T’是不是有問題,*aryptr = strAry。

  12. 易春木 文章作者回覆

    補充:
    趨勢科技有線上測驗可以選各種語言線上考, 大家可以多練習寫 leetcode 程式碼, 邊寫邊改, 有error再改! 自己練習時可以計時倒數感受看看!


    考考大家, 假設今天面試過程, 主管突然請您寫出 Linked list 基本功能:
    1. 資料結構宣告
    2. 空間配置
    3. 建立新node於list後面
    由於是當場考試, 不可能有機會再上網查, 只能憑印象寫出來, 趕快現在練習試試看吧!


    考考大家, 基本功處理字串的函式夠熟嗎?
    e.g. C語言的 sprintf() 怎麼使用呢

    • 易春木 文章作者

      一年期的閱讀權限, 以及重點紙本寄送, 若有任何問題歡迎討論喔

    • 易春木 文章作者

      昨天已回信, 再麻煩按照email內的步驟操作, 謝謝喔

  13. CONNOR 回覆

    請問一下 要買的話要先跟您通知嗎
    還是直接匯款 然後下面留言跟您提醒就好

    • 易春木 文章作者

      可以直接匯款會通知即可喔, email收到我就會回信給您, 謝謝

    • 易春木 文章作者

      當天已處理完畢囉, 直接寄email比較快, 留言有時候會比較晚看到喔

  14. show 回覆

    您好
    我想向您購買本筆記的授權
    想確認一下您是否在近期有收到我寄出的郵件
    感謝

  15. 易春木 文章作者回覆

    補充: 怎麼透過一行指令做到字串的搜尋與取代 ?

    可以使用 linux s//g
    (1).在vi編輯器: 檔頭到檔尾用str2取代str1

    (2). 指令輸入:

    補充: static function 是什麼意思? (常被問到, 請留意喔!)

    靜態函數僅在同一文件中可見, 在編譯過程中如果編譯器發現function前有加static關鍵字, 經過編譯後會被隱藏在該檔案的 obj file, 所以之後 linker 找尋 symbol 時, 會忽略這個funciton, 所以別的檔案也就看不到!

  16. 易春木 文章作者回覆

    謝謝鄉民PTT發文推薦,
    小編戰戰兢兢持續維護品質 持續加入更多程式設計的面試重點!
    任何問題或考題都歡迎討論研究, 祝大家求職順利!!

    ——————–

    2019/05~
    感謝諸位支持,沒有再逐一列出,邀請函已陸續發送。小編也收到來自海外華人轉職的需求(美國科技業界),出乎小編意料之外,其實軟體科技公司不分台商日商美商歐商,都是同一系統的 Computer Science and Information Engineering. 先恭喜與祝福順利轉職。

    2019/08~
    恭喜 chi****ing, 雖然非本科生
    在準備面試的時候覺得需要這樣一個系統的整理XD 謝謝!
    謝謝易春木筆記,後來有找到喜歡的職缺了,感謝你!

    2019/10~
    如果是windows的 kernel mode driver開發, 務必熟記 windbg的指令與細節!!

    2019/11
    恭喜GJ順利錄取理想職缺, 心得分享如下:

    來信試想告知目前已經順利得到這家公司的工作-香港商司亞樂科技亞太有限公司台灣分公司公司
    https://www.104.com.tw/job/6kgem?jobsource=pda
    之前的講義幫忙許多,也有另外拿到像是 QNAP、中光電、神準口頭offer等。總之感謝您的幫忙!
    另外也寫了一篇medium的blog,告訴大家如何準備面試: 我是如何面試軟體工程師
    若有人需要的話可以分享,為了也是回饋給大家,謝謝
    GJ 2019/11/23

    2019/12 ~
    為方便閱讀, 程式碼區改為預設密封, 只要點擊一下就會展開!

    2020/02
    恭喜Sak***順利拿到offer!!

    版主您好 :
    去年底已順利面試進入一線IC廠,感謝您詳細的筆記分享 !

    2020/05
    恭喜順利拿到offer!!

    您好!謝謝你整理的考古題,幫助很大!此波面試有拿到以下公司的職缺:威達高科、安邁、致茂、聯陽等

    2020/10
    恭喜順利拿到offer!!

    謝謝你的筆記,我已經順利拿到我想要的offer了,真的很感謝,裡面的資料結構那些講得很詳細,也剛好有被考到!

    2021/06
    恭喜順利拿到offer!!

    我是前些日子有和您購買筆記的同學,很感謝你整理的內容,讓我在準備上有更好的方向!
    我目前還剩幾個一兩個面試,但算是告一段落了,目前有錄取 synology、synopsys、MTK,都是我很理想的公司跟職缺。
    不知道未來有沒有緣份在工作上遇到,再次感謝您!

    ——————–

    新增了Complexity Analysis複雜度分析, 與binary tree內容, 純軟體公司會很重視!
    新增C語言基本功, 韌體工程師必備
    新增心態準備
    新增5題面試考題於直接列出考古題1
    新增C++考題關於STL於深度討論考古題2
    新增Python教學
    新增Leetcode實戰討論

    ——————–

    * IBM, 趨勢科技, 微軟, Google, Amazon, ..等軟體開發公司都要線上考試
    * 緊急寄出支援快要面試的學員!
    * 小編從收到各位大大的來信, 就會著手整理印刷然後到郵局郵寄, 需要一定的時間, 請大家耐心等候喔, 謝謝大家不催好棒棒!
    * 新增英文履歷範例檔, 讓大家快速簡便完成自己的英文履歷!

    ——————–

    有學員提到若本身背景不是資工系所,該如何準備,是否需要找專題實作呢?

    我覺得可以雙管齊下,韌體程式設計師的內功實力在於我們的這一整套教材,含演算法/作業系統/程式實作等,是重要的基本功,像是基礎,有了這塊才能幫助日後往上堆積更多技能。

    而搭配硬體的專案經驗也是非常加分的部分,透過基本硬體經驗可以幫助在面試時與主管產生一種特別的共鳴,有點像『原來你也是這樣過來的』的感覺。

    至於專案的選擇可以到天龍挑書本有附小電路板的,主題有8051單晶片設計or類似arduino的C語言實作,可以現場挑比較知道自己要什麼唷。共勉之~

    malloc() 回應學員的說明:
    不論有沒有加上強制轉換碼, malloc() 都是回傳被安排的記憶體位址 對, 它就是強制轉換型態, 依照底下的定義可以發現, 預設的回傳指標是 void* , 但是根據每次需要的型別不同就必須要轉換型別!

    原始定義 : The C library function void *malloc(size_t size) allocates the requested memory and returns a pointer to it. void *malloc(size_t size)
    參數: size − This is the size of the memory block, in bytes.
    回傳值: This function returns a pointer to the allocated memory, or NULL if the request fails.

    Q: Link-list範例第32-33行的過程,多建立一個結構指標是否可以省略,直接使用list結構指標來做即可?

    A: 這裡會再新建一個p指標, 是因為要保留 list 作為 link-list的Head指標, 所以不希望list移動, 所以也有人把 list 取名為 Head, 就更易閱讀了, 表示這個指標就是這一串列的頭, 不會更改

  17. 易春木 文章作者回覆

    2022/02
    收到回應:”謝謝版主,這幾天看了您的網站收穫良多,年後如果面試有上,會再分享心得”
    加油加油!

    2022/04
    筆記與考題等基本功扎實, 建議可以多刷leetcode練習, 對面試當中的coding測試很有幫助!

    2022/6
    收到回應:“最近面試告一段落,拿到工作offer,這陣子真的不是很好面試,機會都有但感覺審核的門檻變得很高,感覺錯過去年混亂的時間點,但我運氣不錯,一直都有面試機會。安霸,一面視訊,二面現場+考試,二面一路面到總經理最後offer get。整體考試,除了安霸考的很廣很雜,其他公司的考試內容與易大整理的相似真的受益良多。”

    2022/6
    收到回應:“您提供的筆記很有幫助,讓我可以很快就把之前所學複習完。從今年4月開始投履歷後,結果拿到了聯發科、聯詠、群聯的SW offer,跟您分享。”

    2022/7
    收到回應:“非常感謝您的筆記和協助唷,後來運氣很好拿到多家很好的offer,最後選擇聯發科的軟體部門!真的很開心呢!”

  18. 易春木 文章作者回覆

    2022/10 更新: 回答學員來信討論的問題, 收到回應 “非常感謝,看了你解說,讓我茅塞頓開”

    問題(1) 關於link-list章節部分, 為什麼是回傳list而非tmp ?
    A:畫了以下三個時間點的指標狀態圖, 需要先了解各指標的用途:
    – list 用來回傳整條串列, 所以會固定不動指向第一個node
    – tmp 用來逐步移動, 將新的節點加入串列
    – newNode用來指向最新的節點

    所以為什麼要傳list而非tmp, 因為只有加入第二節點時候list與tmp指向一樣位置
    之後就不同了

    問題(2) 為什麼list 指向的位址沒有被更新呢?
    從代碼看起來, 你做空間配置的malloc是在 CreatNode(), 所以要回傳list這個指標才OK,
    因為此處非call-by-address, 如果你要做到call-by-address的更新指標方式, 則必須在main就已經配置空間,

    可以參考筆記的這張圖(程式碼內的變數與function pointer 在記憶體中的配置情況), 由main()內做malloc()動態分配記憶體, 如此一來 main()才知道變數p, 如果你是在別的函式作malloc得到的變數p, 這樣main()不會知道的, 除非你把別的p回傳assign給main()裡面的p

  19. 發票魔人君 回覆

    大大,您好,已經寄信詢問您筆記和匯款帳號了
    ,再請您回復,謝謝。

發表迴響