2016q3 Homework1(面試題目)
===
> [name=忠群]
## 格式
* 公司名稱:
* 職務說明:
* 面試題目:
* 流程:
* 出處:
## 面試題
### 連發科技
* 公司名稱:連發科技
* 職務說明:4G 工具軟體工程師
* 幫助RD debug的tool,類似wireshark那種軟體
把手機內部的資訊傳回到PC端用GUI呈現
用PC端下指令或訊息給各module觀察期status和output來確認各module是否正常運作
須要了解LTE的spec
* 面試題目:
```
[C test]
1. Explain "#error"
2. Explain "struct" and "union"
3. Explain "volatile".
Can we use "const" and "volatile" in the same variable?
Can we use "volatile" in a pointer?
4.
unsigned long v1 = 0x 00001111;
unsigned long v2 = 0x 00001202;
unsigned long v;
v = v1&(~v2);
v = v | v2;
ask: the value of v?
5.
int a[5] ={1,2,3,4,5};
int *p = (int *)(&a+1);
ask: the value of *(a+1), (*p-1)?
6. write a code
a) set the specific bit
b) clear the specific bit
c) inverse the specific bit (0->1; 1->0)
7. Re-write void(*(*papf)[3])(char *);
typedef__________;
pf(*papf)[3];
8. write a code that check the input is a multiple of 3 or not without using division or mod
9. Explain lvalue and rvalue.
```
* 流程:
* 上機考試(電腦隨機選取C考題)
* 華德士性格測驗(前一天自己要在家裡做完)
* 出處: [link](http://wubui.pixnet.net/blog/post/41242054-%5B%E9%9D%A2%E8%A9%A6%5D-%E8%81%AF%E7%99%BC%E7%A7%91%E6%8A%80-mtk-(%E5%85%A7%E5%90%AB%E8%80%83%E9%A1%8C))
* 其它條件:
1. 有開發工具軟體或windows programming經驗
2. 熟悉 C/C++
3. 熟悉 Windows Programming OR RTOS platform development
4. 有 Software Architect的技能尤佳
5. 有良好的簡報技巧尤佳
6. 有良好的英文溝通能力尤佳
---
### 連發科技
* 公司名稱:連發科技
* 職務說明:研替 軟韌體部門
* 面試題目:
```
* 考程式
-直接用英文打在螢幕上,不能編譯。
判斷程式回傳值(指標),判斷int溢位(不能用long幫忙)
直接寫出改大小寫跟判斷大小寫的函數
交換兩數的值(不能使用變數幫忙)
用一行程式判斷是否為2的冪次方等等
* 第一場
1. pipeline的機制,假設有一個1MHZ的處理器經過pipeline速度會變幾倍。
2.有pipeline一定會變快嗎(假設沒有latency)?
3.cache假設可以做到無限大,我們為什麼不做得和memory一樣大。
(其實我不太懂他在問什麼,問題就是太貴不是嗎?不然就做很大了啊!)
4.解釋一下mutex, semaphore的差異以及用途。
5.當場寫出一個反轉字串的程式,輸入是一個char*。
(這題我一開始直接硬寫stack,第二次還在那邊交換記憶體位址,主管應該覺得我是智障…)
6.如何判斷一個子串陣列的大小,且不能使用strlen。
7.邏輯問題:一百顆球在袋子裡面,分別是1到100公斤,任意拿掉一顆,只秤剩下的球,要秤幾次才知道拿掉哪顆。
(這題我也莫名其妙,也沒有說一次只能秤幾顆球,害我問題目問半天,
最後我就說把袋子拿去秤就知道少哪一顆了,主管也不打算解釋清楚一點就這樣讓他過去了。)
* 第二場
1.為什麼音訊要用dsp板處理不用CPU,同樣的操作在CPU上也可以做。
2.process和thread的不同點。
3.為什麼multi-thread可以加速,僅僅切換CPU就可以加速。
4.什麼是race-condition,如何解決。
5.優化裡面的remove branching為什麼可以加快程式。
6.專題裡面porting到DSP版上有沒有用到組語優化,和8051有沒有不同。
7.OpenMP和CUDA的平行化機制(因為我專題有)。
8.8051和DSP都是嵌入式系統,知不知道差異,8051可不可以拿來處理音訊。
9.Nyquist rate是什麼,為什麼要大於這個rate(超基本結果我也沒講完整…)。
10.物件導向的好處是什麼,C++的class的好處(我回答了動物繼承的例子還被發現是書上的…)。
11.vim的好處在哪。
12.Volatile變數的使用時機,如果不用它,平常程式會把資料存在哪。
13.談一下通原學到的東西,隨便舉幾個知道的modulation(這我直接說不會…)。
```
* 流程:手寫->兩場面試
* 出處:[link](https://lifeandnote.wordpress.com/2014/08/27/%E7%A0%94%E6%9B%BF-%E8%81%AF%E7%99%BC%E7%A7%91%E7%A0%94%E6%9B%BF%E9%9D%A2%E8%A9%A6-%E8%BB%9F%E9%9F%8C%E9%AB%94%E9%83%A8%E9%96%80/)
---
### Skymizer
* 公司名稱:Skymizer
* 職務說明:軟體工程實習生
* 面試題目:
```
你用過perf和gprof,那他們有何不同的地方嗎?
你覺得perf的結果準確嗎? 還有perf之所以能偵測程式熱點的機制是?
你如何用perf知道程式的cache misses rate有降低,指令是如何下的?
你說你用過gnu toolchain,那除了make和gcc,還有哪些utility是你有用過得?
你有撰寫過ld script的經驗嗎?
請問git rebase是什麼?
* 專題相關問題
簡述畢業專題負責的部份
五子棋AI的部份是到怎樣的程度
有用C++做過什麼專案嗎?Python呢?
```
* 流程:面試題->白板題(不詳)
* 出處:[link](http://good5dog5.github.io/2016/04/28/interview-skymizer-nvidia/)
---