---
# System prepended metadata

title: 5/18 群聯面試

---

# 5/18 群聯面試

1.

請問下列程式碼運行結果

```c
main()
{
	int i, x, y;
	i = x = y = 0;
	do {
		++ i;
		if (i%2!=0)
		{
			x= x + i;
			i++;
		}
		y = y+i++;
	} while(i<=7);
	printf ("x=%d,y=%d\n", x, y);
}
```

Ans:

複製編譯跑一下，就有答案，我面試時候這題就答錯，人腦compiler太爛

2.

 細節忘記了
大概是我們有兩個char陣列 src和trg，程式想將值從src複製到trg上面，用一個loop 複製，請問你複製完畢之後會顯示啥結果
答案好像是 copy success = 0x55
不過有可能會爆錯，在最後一個 for loop， trg與src 會指向並沒有配置的記憶體空間，有可能導致error，可是面試官跟我說gcc compiler會自己handle 並不會爆error

(以上是我跟他討論出來的答案)

3.
![](https://i.imgur.com/n64nhWy.jpg)



```
3.請你寫一個程式inpute 是 unsigned short十進位數字，請你將她轉換成16進位之後，接著確定四個16進位位數是否相同，相同return true 不相同return false 舉例來說
16  (十進位)   => 0010 (十六進)  返回 false
1234  (十進位) => 04D2 (十六進)  返回 false
43690 (十進位) => AAAA (十六進)  返回 true
43690 (十進位) => AAAA (十六進)  返回 true
48059 (十進位) => BBBB (十六進)  返回 true

注意你寫的函數不可以使用if else 還有 loop，請盡量都是用bitwise operation
```

Ans:

```
bool fun( unsinged short x){
	unsigned short x1 = x & (0x000F);
	unsigned short x2 = x & (0x00F0) >> 4;
	unsigned short x3 = x & (0x0F00) >> 8;
	unsigned short x4 = x & (0xF000) >> 12;
	return (x1==x2)&&(x1==x3)&&(x1==x4)&&(x2==x3)&&(x2==x4)&&(x3==x4);
}
```

這個答案其實有錯誤，因為``x1==x2`` 這個隱含了if else，面試官提示我可以用 xor ``^``來取代``==``


