韌體考題較多偏向程式語法的細節、位元運算(Bitwise Operation)以及少數的程式設計, 面試韌體職缺的面試者可以多從以C語言設計的Open Source中學習實際應用的精隨。
#define MUX(a, b) a*b
MUX(10+5, 10-5) = ?
Ans: 10 + 5 * 10 -5 = 55 (由於巨集函式的參數沒有括號,因此不會先做加減法)
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
用一行程式碼判斷是否為2的冪次方
return N>0 && (N&(N-1)) == 0
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
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} (這題考運算子的優先順序)
[一線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)
[一線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迴圈沒有括號)
[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
[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考題較多會考Verilog語法或是TCL語言。TCL是相對冷門的語言,有興趣面CAD職缺的面試者要特別留意, 另外若是資工背景的面試者,也要自學一下Verilog語法。
[2021 二線IC設計廠]
一個長字串裡,裏頭分別用空格分開了6個子字串,ex: str = [substr1 substr2 ... substr6],問如何打印第四個子字串
1. 印象中所有子字串的開頭字元和結尾字元都不一樣,可用此作為打印和結束打印的判斷。
2. 若沒限制使用Standard Function,可以用strstr()。
[2021 二線IC設計廠 ]
"?"在C語言代表的意思是什麼
用於判斷前面敘述是true or false,之後會以":"區分true和false的操作。
[2021 二線IC設計廠]
1. chmod
2. who
3. which
4. echo
以上四個Unix命令分別是做什麼用的?
[2023 一線IC設計廠 資深工程師]
請用任何一種程式語言,設計一套可以剖析Verilog/SPICE語意的程式。
此題主要考驗是否熟悉Regular Expression,我是用TCL去設計。
[2023 一線IC設計廠 資深工程師]
(承上延伸)若只需要取得最後兩個Instance/Module的名稱,該如何設計?
面試官想法是用Stack,而我是用Mod 2在迴圈內讀取名稱。
[2023 新加坡外商 資深工程師]
給一段Verilog語法,口語解釋給面試官
軟體考題較多會考程式設計和演算法相關的考題,少部分會考C語言的觀念題, 若稍微有偏韌體一點的職缺也是會問一些作業系統相關的考題。
[2023 人機介面商, EDA外商]
什麼是多型?
(簡略回答)不同的物件類別給予統一的介面,這其中包含了繼承和多載概念。
[2023 人機介面商]
什麼是Stack Overflow?
程式記憶體配置超過了Stack的上限,這在不好的Recursive設計中可能存在此問題。
[2023 EDA外商]
BFS/DFS相關問題,例如給一個樹狀結構,問BFS/DFS如何走訪
演算法 - 廣度優先搜尋 (Breadth-First Search)
演算法 - 深度優先搜尋 (Depth-First Search)
[2023 EDA外商]
C Language Standard Container各種操作的時間複雜度,例如list.push_back(), set.insert()。
C/C++ Time Complexity of Standard Container
[2023 EDA外商]
給幾段字串,將這些字串轉成地圖,每個字元都有代表的意義,問主角能否走到地圖的終點。
可用DFS走訪。
Last updated: