---
# System prepended metadata

title: 致茂軟體工程師 2024/11
tags: [面試]

---

## 面試時間:2024/11
### 1. C中define/ ifndef/ endif有何作用?
>1. #define: 用來定義macro，常用來定義常數或簡化程式碼的重複部分。
>2. #ifndef: 是 "if not defined" 的縮寫，用來檢查一個符號是否尚未被定義。如果未定義，則執行接下來的程式碼。
>3. #endif: 用來結束 #if 或 #ifndef 的條件編譯區塊。
### 2. #inclde<filename.h> 和 #include"filename.h" 有何差別?
><filename.h>：用於包含系統或標準庫中的檔案。
"filename.h"：用於包含當前目錄或自定義的檔案。
### 3. 寫出對應的輸出
```
int n = 10;
printf("N1=%d\n", n++);
printf("N2=%d\n", ++n);
```
>N1=10
N2=12

```
float f = 1234.56;
float *f1=&f;
float **f2=&f1;
printf("%f\n", **f2);
```
>1234.560000

```
float s[2];
*(s+1)=111.1;
*s=*(s+1);
printf("%f\n", s[0]);
```
>111.100000

```
typedef struct{
    char *s1;
    char *s2;
}SS;

SS s, *ps;
s.s1 = "1234";
ps=&s;
```
* (*ps).s1=?
* *ps->s1=?
* *s.s1=?
* *(ps->s1+3)=?
> (*ps).s1 = "1234"
ps->s1 = "1234"
s.s1 = "1234"
*(ps->s1 + 3) = '4'
### 4. 以C寫function接收字串a和字串b，回傳c字串將a和b接起來
```
#include <stdio.h>
#include <string.h>

void concatStrings(char *a, char *b, char *c) {
    strcpy(c, a);
    strcat(c, b);
}
```
### 5. C++中的copy constructor是什麼? 什麼情況會被呼叫?
>* Copy constructor在以下情況下會被呼叫：
>1. 當物件用其他同類型的物件初始化時。
>2. 當物件作為參數以值傳遞方式傳遞給函式時。
>3. 當物件作為返回值返回時。
### 6. C++中的encapsulationm, polymorphism, inheritance, function overloading是什麼?
>1. encapsulationm：隱藏物件內部細節，只暴露必要的interface。
>2. polymorphism：相同interface，不同implementaion，根據物件類型執行對應方法。
>3. inheritance：從現有類別派生新類別，重用並擴展功能。
>4. function overloading：同名函式接受不同的參數，根據參數類型選擇調用。
### 7. 在unipolar mode下，使用12-bit DAC，referencr voltage 4V，預計的resolution為? 若希望DAC=3V，數位值須給多少?
>* 解析度：每個數位值約為 0.000977 V。
>* DAC 輸出 3V 時的數位值：數位值應為 3068。
### 8. 翻譯
    A. introduction
    B. general-purpose
    C. state-of-the-art
    D. 迴圈
    E. 參數
    F. 架構
>A. introduction - 介紹
B. general-purpose - 通用的
C. state-of-the-art - 先進的、最先進的
D. 迴圈 - loop
E. 參數 - parameter
F. 架構 - architecture