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