# 2023 年「[資訊科技產業專案設計](https://hackmd.io/@sysprog/info2023/https%3A%2F%2Fhackmd.io%2F%40sysprog%2FS11ooE4Rh)」作業 3
[Resume](https://docs.google.com/document/d/1N8yFnJXR_ty-9cql3cA7NPJxy0Uxbl63Lrh6y-FAerA/edit?usp=sharing)
## 聯發科 4G/5G韌體工程師
Minimum qualifications:
* 應屆碩士/博士畢業生
* 上機考C語言,大概20題選擇題,請熟悉指標、const、static、volatile、call by value、call by reference (C++才有 pass by reference 別搞混)、++在前或在後的差別
* 自我介紹、碩論,請注意聯發科會很著重專題及碩論的架構還有其中技術的部分
Preferred qualifications:
* 熟悉 C/C++, 嵌入式系統,即時作業系統
* 曾有 ARM/MIPS based SOC 和 device driver 開發經驗
* 熟悉 SystemC 和 Simulator 開發 的經驗
* 4G LTE/ 5G NR 軟韌體開發經驗
* 多問OS memory management 相關問題
* 問蠻多系統層面的問題
:::success
問題
---
兩題上機程式題:
第一題 dynamic 2d array (就用malloc或calloc)
第二題 Prefix (就是string searching 這種問題,經典解法就是kmp)
:::
## 群聯 SSD韌體工程師
Minimum qualifications:
* 白板題:
* 1. 寫function return這個整數是不是2的次方 (除了常見解法,還可以了解一下log解法)。
* 2. 考 little/big endian 變數值怎麼存放。
* 3. 寫function 把某個數的第x個bit改成1或0 (改成1直接用or、改成0用mask 之後and)
Preferred qualifications:
* 最好準備能用英文自介和碩論,公司產品不能只是粗淺了解,最好要能回答公司有哪些產品,什麼是nand flash,什麼是ufs
## 瑞昱 多媒體演算法工程師/藍芽SoC韌體工程師
Minimum qualifications:
* 瑞昱二廠集體做性向測驗
* 一樣自介、碩論
* 考merge sort
* 把某個數的第x個bit改成1或0
* 考void pointer之casting和call by refer
```cpp=
unsigned int x = 0xa;
void* ptr= (void*)&x;
*(unsigned int*)ptr = 5;
```
:::success
問題
---
兩題上機程式題:第一題 dynamic 2d array (就用malloc或calloc)、第二題 Prefix (就是string searching 這種問題,經典解法就是kmp)
Q: 寫一程式輸入n,計算距離現在n天後是幾年幾月幾號
A:
```cpp
#include <iostream>
#include <stdio.h>
#include <ctime>
using namespace std;
void time_after_tody_from_now(int n){
time_t now = time(0);
now += (n*60*60*24);
tm *ltm = localtime(&now);
printf("The day after %d day is: %d year %d month %d day",n,1900+ltm->tm_year,1+ltm->tm_mon,ltm->tm_mday);
}
int main(){
int n = 2000;
time_after_tody_from_now(n);
}
```
Q: Please write the following print.
```cpp
char s[] = "0113256";
char *p = s;
printf("%c", *p++);
printf("%c", *(p++));
printf("%c", (*p)++);
printf("%c", *++p);
printf("%c", *(++p));
printf("%c", ++*p);
printf("%c", ++(*p));
printf("\n");
printf(s);
```
A:
```cpp=
0113234
0123456
```
Pre-increment (++i) − Before assigning the value to the variable, the value is incremented by one.
Post-increment (i++) − After assigning the value to the variable, the value is incremented.
:::
Preferred qualifications:
* 刷題:leetcode主練硬實力,基本功、資料結構要很熟並靈活應用;hackerrank就是一些應用題,比較有趣的題目。
* 找韌體就用C語言,盡量別使混用 C++的unordered map、vector、range-based for loop等,要用 hash table 可用 uthash
* 公司產品請花一兩天記熟基本原理及現在的趨勢之類的,會有加分效果。
:::info
資訊整理
---
[[心得] 面試心得(軟韌、演算法)](https://www.ptt.cc/bbs/Tech_Job/M.1561454617.A.A4F.html)
:::