軟體/韌體工程師面試重點與考題- 程式語言(C/C++/C#/JAVA),資料結構,演算法,以及OS作業系統..等題目(筆試考題)

目錄:
面試須知與應答技巧
資料結構 / 變數儲存與記憶體
關於多處理序(Process)與多執行緒(multi-thread) 在Linux / Windows
基本演算法
轉自ptt: [重要] 發文前務必閱讀:C/C++常見問題十三誡
擬真試題1/擬真試題2/擬真試題3/擬真試題4
直接列出考古題1(精華完整48題含解答)
直接列出考古題2(精華完整34題含解答)
深度討論考古題1(DEMO完整10題含解答) 選擇使用C,C++,C#或JAVA
深度討論考古題2(DEMO完整10題含解答) 選擇使用C,C++,C#或JAVA

關於多處理序(Process)與多執行緒(multi-thread) 在Linux / Windows

在Linux 撰寫簡單 Process/Thread 程式

Linux process/thread特點:

  • 可直接執行sleep()等系統呼叫,而不會影響其他threads
  • threads其實是共用記憶體空間等資源的processes,因此可以使用kill命令,送訊號或殺掉thread
  • clone()為Linux特有, 不相容於其他Unix系統
  • Linux沒有另外定義thread: Linux的threads (例如: POSIX threads),其實是利用clone()產生的child processes
  • sleep()系統呼叫: 會使得該process睡覺,所有thread因此全部睡覺。若只是要讓某一thread睡覺,必須設計另一系統呼叫,例如: pthread_delay()

更多重點與程式碼:

筆記分享於2017/1/1起轉型成部分不對外開放。
閱讀請繳交1,500元,您就會收到授權一年的邀請函

匯款帳號: 台新銀行 內湖分行
銀行代碼:812 帳號:20481000205406
站長信箱:eeepage@gmail.com
匯款後,請來信告知您的帳號後三碼與您Facebook ID或 Gmail帳號,易春木會寄出邀請函,並且開啟權限。

執行結果 :

執行thread.c
>> gcc –o thread thread.c –lpthread
>> ./thread
seed: 91821

在Windows 撰寫簡單 Process/Thread 程式

參考自Microsoft MSDN
執行緒(thread)基本上是一個經由程式的執行路徑。 它也是 Win32 排程執行的最小單位。 執行緒由堆疊、CPU 暫存器的狀態和系統排程器之執行清單裡的項目所組成。 每個執行緒共用所有處理序的資源。

處理序(process)由一或多個執行緒和程式碼、資料以及程式在記憶體中的其他資源所組成。 一般的程式資源是開啟檔案、號誌 (Semaphore) 和動態配置的記憶體。 當系統排程器給與一個執行緒執行控制權,程式就會執行。 排程器決定哪些執行緒要執行以及何時執行。 當較高優先權執行緒在完成工作時,優先權較低的執行緒可能必須等待。 在多處理器的電腦上,排程器可以將各個執行緒移到不同的處理器上來平衡 CPU 的負載。

在處理序(process)中每一個執行緒都獨立作業。 除非您讓它們彼此看得見對方,否則執行緒是個別執行而且不知道處理序 (Process) 裡有其他執行緒存在。 然而,共用通用資源的執行緒必須藉著使用號誌或其他處理序之間的通訊方法來協調。

更多重點與程式碼:

筆記分享於2017/1/1起轉型成部分不對外開放。
閱讀請繳交1,500元,您就會收到授權一年的邀請函

匯款帳號: 台新銀行 內湖分行
銀行代碼:812 帳號:20481000205406
站長信箱:eeepage@gmail.com
匯款後,請來信告知您的帳號後三碼與您Facebook ID或 Gmail帳號,易春木會寄出邀請函,並且開啟權限。

執行結果 :

Print Message: Thread1
Print Message: Thread2
Thread1 return 0
Thread2 return 0

 

34 thoughts on “軟體/韌體工程師面試重點與考題- 程式語言(C/C++/C#/JAVA),資料結構,演算法,以及OS作業系統..等題目(筆試考題)

  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. 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;}

  3. 1

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

    1. 易春木 Post author

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

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

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

  4. Pingback: 工作面試心得(QNAP、緯穎、正文、 工研院、啟碁、全景、智易、CHTTL) – Cinnating

  5. 易春木 Post author

    感謝Cha****支持, 已發送邀請函!
    感謝Ron****支持, 已發送邀請函!
    感謝Eri****支持, 已發送邀請函!
    感謝Sym****支持, 已發送邀請函!
    感謝But****支持, 已發送邀請函!
    感謝1qa****支持, 已發送邀請函!
    感謝Chl*** 支持, 已發送邀請函!
    感謝P51****支持, 已發送邀請函!
    感謝Vin****支持, 已發送邀請函!
    感謝Chu** 支持, 已發送邀請函!
    感謝Dcp*** 支持, 已發送邀請函!
    感謝Pet** 支持, 已發送邀請函!
    感謝Lbj****支持, 已發送邀請函!
    感謝Fre** 支持, 已發送邀請函!
    感謝Pai.** 支持, 已發送邀請函!
    感謝Can** 支持, 已發送邀請函!
    感謝Car****支持, 已發送邀請函!
    感謝Lin****支持, 已發送邀請函!
    感謝Cy6****支持, 已發送邀請函!
    感謝Mrd****支持, 已發送邀請函!
    感謝Jim****支持, 已發送邀請函!
    感謝11*****支持, 已發送邀請函!
    感謝lin****支持, 已發送邀請函!
    感謝leb****支持, 已發送邀請函!
    感謝siu****支持, 已發送邀請函!
    感謝kek****支持, 已發送邀請函!
    感謝all****支持, 已發送邀請函!
    感謝j_a****支持, 已發送邀請函!
    感謝tiz****支持, 已發送邀請函!
    感謝w7****支持, 已發送邀請函!
    感謝rs****支持, 已發送邀請函!

    謝謝熱烈支持, 小編會持續加入更多程式設計的面試重點!
    任何問題或考題都歡迎討論研究, 祝大家求職順利!!

發表迴響

Copy Protected by Chetan's WP-Copyprotect.