HOME ABOUT CONTACT

軟韌體工程師面試考題 - 程式碼考題

Rain February 25, 2024
Outline

題目說明

韌體考題

CAD考題

軟體考題

題目說明top

本篇題目累積時日已有七年之久,相當於我任職工程師的年資,目前每年都還是會參與至少一兩場的面試,若有時間我仍會持續更新本篇內容。

有些題目已經算是歷史題目(約在2017~2018年左右),特別是韌體考題的部分,過去很多題目都是為了考而考而設計,不確定現在是否還會這樣出題,但若讀者是應屆畢業生,建議還是可以多多參考。這一兩年的面試經驗,感覺比較流行的是考系統設計或是經驗相關的問題,特別是外商或新創公司,但也可能是因為我已經有一定年資了,才不太考基本的 Coding,頂多問問一些觀念是否還清楚而已。

本篇題目是從時間最早到最近的面試考題來排序,也相當於我工作領域的轉換路程,希望這些題目可以幫助到大家準備面試。

韌體考題 top

韌體考題較多偏向程式語法的陷阱題、位元運算(Bitwise Operation)以及少數的 Coding,關於陷阱題的準備,只能建議大家多參考留意,一般工作時並不太會遇到這種題目的情況。

題目1:

#define MUX(a, b) a*b
MUX(10+5, 10-5) = ?

解答:

Ans: 10 + 5 * 10 -5 = 55 (由於巨集函式的參數沒有括號,因此不會先做加減法)


題目2:

unsigned long v1 = 0x00001111;
unsigned long v2 = 0x00001202;
unsigned long v;
v = v1&(~v2);
v = v | v2;
v = ?

解答:

~v = 0xffffedfd
v1&(~v2) = 0x00001111 & 0xffffedfd = 0x111
(此運算等於最低四個16位元只要是奇數都會是1)
0x111 | v2 = 0x111 | 0x1202 = 0x1313

Ans: 0x00001313


題目3:

用一行程式碼判斷是否為2的冪次方

解答:

return N>0 && (N&(N-1)) == 0


題目4:

int a[5] = {1, 2, 3, 4, 5};
int *p = (int*)(&a+1); // a+1 is meaning shift address of an array length.
ask: the value of *(a+1) and *(p-1)?

解答:

*(a+1) = 2

*(p-1) = 5


題目5:

What's the content of array a?
int a[] = {6, 7, 8, 9, 10};
int *p=a;
*(p++)+=123;
*(++p)+=123;

解答:

a[] = {129, 7, 131, 9, 10} (這題考運算子的優先順序)


題目6:

[一線IC設計廠]


int fun(int x)
{
    Int count = 0;
    while(x){
        count++;
        x = x & (x-1)
    }
    return count;
}
                        

fun(456) + fun(123) + fun(789) = ?

解答:

4 + 6 + 5 = 15 (計算輸入進來的數字,其二進位表示有幾個1)


題目7:

[一線IC設計廠]


#define INC(x) x*=2; x+=1

int main()
{                       
    int i, j;
    for (i = 0, j = 1; i < 5; i++)
        INC(j);
    printf("j = %d\n", j);
}
                        

求J輸出值是多少?

解答:

2 (注意for迴圈沒有括號)


題目8:

[2021 外商IC設計廠]


int a = 25;
int b = 30;
int ques1 = a++ + b++;
int ques2 = ++a + ++b;
printf("%d, %d", ques1, ques2);
                        

問打印結果

解答:

右運算會較晚處理,左運算會優先處理, 因此第一行會先進行a+b,這是ques1得到的值,之後a和b各自+1。第二行會先進行a和b各自+1,然後再進行a+b,這是ques2得到的值。

Ans: 55, 59


題目9:

[2021 外商IC設計廠]
請設計一段程式碼輸出如下:
        1
      121
    12321
  1234321
123454321

參考解答:

Ans:


int main()
{
    for (int i = 0; i < 5; i++) // height
    {
        int print = 1;
        int plus = 1;
        for (int j = 0; j < 9; j++) // width
        {
            if (abs(4 - j) <= i)
            {
                printf("%d", print);
                print += plus;
            }
            else
                printf(" ");
                        
            if (j == 3)     // mid
            plus = -1;
        }
        printf("\n");
    }
}
                        

CAD考題 top

CAD 考題較多會考 Verilog 語法或是 TCL Script 和 C Shell Commands。TCL 的部分比較會考 RegExp 使用情境,而若是有 CAD 工作經驗的面試者,Verilog 語法也可能會是常被問的題目。

題目1:

[2021 二線IC設計廠]
一個長字串裡,裏頭分別用空格分開了6個子字串,ex: str = [substr1 substr2 ... substr6],問如何打印第四個子字串

參考解答:

1. 印象中所有子字串的開頭字元和結尾字元都不一樣,可用此作為打印和結束打印的判斷。
2. 若沒限制使用Standard Function,可以用strstr()。


題目2:

[2021 二線IC設計廠 ]
"?"在C語言代表的意思是什麼

參考解答:

用於判斷前面敘述是true or false,之後會以":"區分true和false的操作。


題目3:

[2021 二線IC設計廠]
1. chmod
2. who
3. which
4. echo
以上四個Unix命令分別是做什麼用的?


題目4:

[2023 一線IC設計廠 資深工程師]
請用任何一種程式語言,設計一套可以剖析Verilog/SPICE語意的程式。

參考解答:

此題主要考驗是否熟悉Regular Expression,我是用TCL去設計。


題目5:

[2023 一線IC設計廠 資深工程師]
(承上延伸)若只需要取得最後兩個Instance/Module的名稱,該如何設計?

參考解答:

面試官想法是用Stack,而我是用Mod 2在迴圈內讀取名稱。


題目6:

[2023 新加坡外商 資深工程師]
給一段Verilog語法,口語解釋給面試官


軟體考題 top

軟體考題較多會考 LeetCode 題型或演算法相關的情境題,以及系統設計,少部分會考 C 語言的觀念題,若稍微有偏韌體一點的職缺也是會問一些作業系統相關的考題,可參考另一篇 軟韌體工程師面試考題 - 專有名詞解釋

題目1:

[2023 EDA外商]
BFS/DFS相關問題,例如給一個樹狀結構,問BFS/DFS如何走訪

參考解答:

演算法 - 廣度優先搜尋 (Breadth-First Search)
演算法 - 深度優先搜尋 (Depth-First Search)


題目2:

[2023 EDA外商]
C Language Standard Container各種操作的時間複雜度,例如list.push_back(), set.insert()。

參考解答:

C/C++ Time Complexity of Standard Container


題目3:

[2023 EDA外商]
給幾段字串,將這些字串轉成地圖,每個字元都有代表的意義,問主角能否走到地圖的終點。

參考解答:

可用DFS走訪。


題目4:

[2024 FAANG外商]
GPU 伺服器系統架構、Job Scheduler 設計 (例如有300台機器同時撒 Job,該如何排班? 又該如何分辨優先級?)。

參考解答:

可參考書籍 - [內行人才知道的系統設計面試指南]


題目5:

[2025 AI 語言模型外商 - C++ GPU Engineer 職缺]
LLM 開發經驗相關問題、如何偵測使用者的設備、如何下載正確版本的 Binary File、在 Windows 上實作寫 Log File,會遇到那些可預期的問題。

Last updated:

Related Article List

  1. 軟韌體工程師面試考題 - 專有名詞解釋
  2. 2024年台灣谷歌(Google)面試心得
  3. CAD工作對應徵EDA職缺有哪些幫助
  4. 如何準備外商軟體公司的面試
  5. 我在竹科從台商到外商之路
  6. 聊聊我覺得有毒職場具備了哪些特徵