# 2017Homework1
- [ ] 整理面試題目
:::info
* 公司名稱: 聯發科
* 職務說明: 4G 軟體工程師
* 面試題目:
~~~
[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 = 0x00001111;
unsigned long v1 = 0x00001202;
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->
7.Re-write void(*(*papf)[3])(char*)
typedef____________;
pf(*papf)[3];
8.write a code that check the input is amultiple of 3 or not without using division or mod
9.Explain lvalue and rvalue.
~~~
* 流程:
* 上機考試(電腦隨機選 C 考題)
* 華德士性格測驗(前一天在家做完)
* 出處:[pixnet部落格](http://wubui.pixnet.net/blog/post/41242054)
:::
- [ ]列出目標規劃
1. 聯發科
* 營運項目:
* 2017年公司進行組織重整,產品部門如下:
* 行動運算平台:
包括智慧型手機與平板電腦晶片
* 成長型產品
包括物聯網、ASIC、STB IC、類比IC
* 成熟型產品
應用包括功能型手機、電視、光碟機等
* 該類型職缺:[嵌入式Linux軟體工程師 ](https://www.104.com.tw/job/?jobno=3ygzg&jobsource=)
* 工作內容:
* 撰寫或移植裝置驅動程式
* 撰寫硬體模組測試程式
* 進行硬體模組測試及驗証
* 分析系統問題
* 分析及改善系統功耗效能
* [IoT 職缺](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120161226000?langKey=en-US)
* 想選擇的部門:[物聯網部門---機器端對機器端(M2M)](https://www.mediatek.tw/products/m2m/mt2503)
* 隨著微型處理器的尺寸越加精巧、電源效率越加提升,智慧裝置的觸角將更深入消費者生活。聯發科技領先業界,開發各式智慧穿戴裝置、手錶、追蹤器、家庭與辦公室應用裝置、連結設備、公共設備等晶片平台,為連接裝置領域帶來革命性進展,協助一般消費者與公司企業有效追蹤、管理、控制周遭環境的設備,藉由更優異的使用方式、效能與電源效率,體驗前所未有的便利,提升消費者的生活品質。
* MT2503
基於ARMv7,為高度整合式的物聯網晶片平台,支持高精度全球衛星導航系統 (GNSS)、藍牙3.0和2G數據,適用於功能簡單的移動設備、安全或工業應用等領域。
* 而在研究所之後要使用的智慧眼鏡是 jorjin 的 JGK-S101
* CPU OMAP 4460 搭載 crotex A9 (Comparison of ARMv7-A cores)
---
2. MStar_晨星半導體股份有限公司
* 職務名稱:[嵌入式系統軟體工程師 ](https://www.104.com.tw/job/?jobno=37qha)
* 接受身份:上班族、應屆畢業生
* 學歷要求:碩士以上
* 科系要求:資訊工程相關、數學及電算機科學學科類、電機電子工程相關
* 語文條件:英文 -- 聽 /中等、說 /中等、讀 /中等、寫 /中等
* 擅長工具:Linux、Android、C、C++、Assembly、Drivers、Firmware
* 工作技能:作業系統基本操作、系統架構規劃、系統整合分析、軟體工程系統開發、韌體工程開發、軟體整合測試、韌體整合測試、軟體程式設計、韌體程式設計
* 其他條件:
有以下經驗者尤佳:
1、有driver或kernel (任何operating system) 或embedded system 開發相關經驗。
2、熟悉Embedded Linux。
3、熟悉ARM、MISP或其他RISC CPU架構。
4、有DTV or STB晶片驅動或其系統軟體開發經驗。
5、有平台架構規畫、評估與IC驗證經驗。
6、有性能優化與除錯設計經驗。
---
* 列出生涯規劃
* 我35歲後願意繼續寫程式,但不想熬夜
* 列出你目前的競爭能力
* 修習嵌入式系統相關課程,學習把效能數據化及考量使用方法的成本及代價
* 大學的專題使用 Kinect 和 iRobot 用影像處理追蹤物體
* 大學時期有和系上同學 3 人一起參加 2016 年 ARM Design Contest
* 研究所協助教授所開大學部嵌入式課程,使用開發板 PXA270
* 三分鐘自我介紹逐字稿(HR可以理解的版本)
HR 您好,我是 WEN,大學就讀成大工科系,大一到大三上的時候因為本來想念機械方面所以那時候對資工的認知很淺,但到了大三下開始接觸一些微介實驗課程(我們使用的是 8051 )和計算機組織,開始對這領域有了興趣,大三的那個年就和系上同學一起參加了 ARM Design Contest ,試圖了解這個領域的應用面,大四修習效能分析相關課程,讓我認知到寫程式除了能動就好在效能分析和設計實驗及觀察結果上,都有新的層面開拓,研究所推甄時選擇了成大電通所,目前碩一,繼續往嵌入式方面學習﹐有協助教授所開大學部嵌入式課程,使用開發板 PXA270。
* 在做過的 Project 方面:
* [mergesort-concurrent](https://hackmd.io/s/r12FM-MeW) :
* 這是一個將 mergesort 拆解成能夠分給多執行緒憶起運作的實驗
* 遇到的困難 : 我們先利用 gprof 分析程式,發現沒有工作時,tqueue_pop 還是一直在 task_run 詢問有沒有工作
* 解決方法 : 找尋可以讓執行緒停下來的方法,後來我們找到 condition variable 讓沒有工作時的 thread sleep,等有工作時再喚醒
* [prefix-search](https://hackmd.io/JwDhDMAYHYGMBYC0sDMliPgNgIa0QEbgBMKiWkWF4KWArBQIxA==) : 這是一個利用三元樹將資料(城市或國家名)進行搜尋,刪除,插入的project
* 在這份專題中我一開始遇到的困難是利用二維固定大小矩陣去存放那進來的資料,後來發現所需付出的成本太大(裡面我宣告每個國家城市名有128空間可以存放,但那些剩下的空間其實就浪費掉了)
* 改進方法 :利用 memory pool,名字需要多少大小空間就分配給他,就不會有多餘的浪費
* 利用工具 :有使用 perf 去觀察 cache-miss,還有算出不同情況下需要的 cycle time,分析出使用 memory pool 的資料時間比較小且比較集中
- [ ]完成個人履歷表
:::info
#### Professional Skills
Familiar with C programing language.
Familiar with Linux development environment.
Experienced in STM32-f4-ARM Education
Experienced in PXA270 Education
#### Education
~~~
National Cheng Kung University
- Bachelor of Engineering Science
Tainan, Taiwan 2013 -2017
- GPA :3.5/4.0
National Cheng Kung University
- Master of Institute of Computer and Communication Engineering
Tainan, Taiwan 2013 - present
~~~
#### Grade of Bachelor
>> 列出大學中跟系統和嵌入式有關的課程
| Course | Credits | Grade |
|:--------: | :--------: | :--------: |
|COMPUTER ORGANIZATION AND ASSEMBLY LANGUAGE|3.0|A-|
|SYSTEM SOFTWARE|3.0|A|
|DESIGN AND IMPLEMENTATION OF EMBEDDED OPERATING SYSTEMS|3.0|A|
| INTERNET OF THING(IOT):FROM THEORY TO REALITY-AN OPEN-SOURCED APPROACH | 3.0 | A |
#### Academic Projects
~~~
PROJECT : Image Processing And Tracking System
Hardware : KINECT AND IROBOT
Language : C + C# + OpenCV
ARM Design Contest : Wisdom plants
Hardware : STM32-f4
Language : C
FINAL PROJECT OF COURSE : mergesort-concurrent
Language : C
[Hyperlink](https://hackmd.io/IwDg7ATGAszQtAUwGYEMCs9oDYDMATecfVeVMATlX2AuAAYL9kg=)
~~~
:::
## 2.聯發科技
**公司**:聯發科技
**職務說明**:軟韌體開發工程師
**面試題目** : (無提供詳細題目內容)
```
1.上機測驗:
1.指標
2.位元運算
3.函式呼叫
4.排序
5.前置處理器的宣告
6.怎麼實作C++ Class Overloading
```
```
2.面試
1.問自我介紹中提到的經驗
白板題
1.任寫一個整數排序
2.通訊原理:
請解釋何謂AM, FM, QPSK
3.計算機組織:
請解釋何謂Pipeline, DMA
4.作業系統:
請解釋何謂Memory Allocation, Stack, Queue, Heap, FIFO, ISR, Mutex, SpinLock
5.網路:
請解釋何謂 OSI
6.C language:
請解釋何謂 static, global, extern
```
**流程**:
(1)現場電腦測驗(C語言)
(2)面試
(3)感謝函
**出處** :
實驗室同學親身經歷
---
## 3.群暉科技
**公司**:群暉科技
**職務說明**:軟體工程師(研替)
**面試題目** :
```
第一關:
口頭問答:
1.請解釋何謂static
白板題:
1.Binary searching tree:
給一個數字,看他是否在tree中?
2.link-list:
給一串link-list,將它反向排列,不能用額外的array存取
3.爬樓梯:
假如有m階樓梯,一次可走1步或2步,總共走法有幾種?
4.有一個m*n的網格,從最左上角走到最右下角,共有幾種走法?
```
```
第二關
口頭問答:
1.process和thread的差別
2.同步跟非同步的差別
3.假使你寫了一個服務,可以讓使用者在觀看影片的同時按讚,請問此時要使用multiprocess和multithread,為什麼?
白板題:
1.給一個矩陣,請問要如何向右旋轉90度
2.實作小畫家調色盤,input:n,output:n種不相近的顏色
```
```
第三關(HR面試)
```
```
第四關
口頭問答:
1.有什麼方法可以防止deadlock?
白板題:
1.給1~15的數字序列,最多可以拿5個,至少拿一個,先拿到15的人就贏了,請問必勝方法是什麼?
2.給一個random的數列,其中只有一個數字佔數列的一半以上,請問如何找出這個數字?
```
```
第五關
口頭問答:
1.看履歷問專長
2.問Neural Network的運作原理
3.什麼是Word2vec
```
**流程**:
(1)填寫基本資料
(2)面試(工程師)
(3)面試(工程師)
(4)面試(HR)
(5)面試(工程師)
(6)面試(主管)
(7)Offer get!!
**出處** :
實驗室同學親身經歷
---
## 4.Appier
**公司** : Appier
**職務說明** : Data Backend Engineer/無提供職務
**面試題目** :
```
Data Backend Engineer
1.若是今天要設計一個Pokemon go,你會如何儲存資料以及如何在手機上顯示附近的神奇寶貝?
2.根據回答程度做調整併繼續追問:
說明Apache Phoenix的寫入流程
```
```
沒寫職務
1.上機考
1.quick sort,須限制記憶體用量
2.履歷相關問題(英文面試)
3.白板題
1.hadoop 中 runtime 某個地方異常得慢或資源用量異常,說明原因
作者Ans:
基本上系統就是 A 出事,但原因通常是 C or D 設定值過大或過小,就是要從 D 開始說明,一路到影響的 C -> B,最後到結果 A