---
# System prepended metadata

title: 2023 年「資訊科技產業專案設計」作業 3
tags: [資訊科技產業專案設計]

---

# 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)
:::