Risheng
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    16
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    --- tags: interview --- # 面試經驗 ## 個人資料 大學: 國立中央大學機械工程學系 碩士: 國立成功大學機械工程學系 ## 2022聯發科暑期實習 ### 流程 面試職位: [軟韌體開發_Embedded System software (新竹)](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120220225024?langKey=zh-TW) 很感謝學長內推,也順利拿到限定推薦 ``` D 學長收到履歷 D+1 填寫限定推薦,收到面試時間填寫 D+2 確認面試時間 D+9 面試 D+14 offer get ``` ### C 語言測驗 憑記憶把印象深刻的題目補上去,一共有16題 (7 選擇 + 7 填充 + 2 程式) ,好像是考 50 分鐘(最後檢查到一半突然交出去) #### 選擇題 1. 問輸出 (印象薄弱但大概意思有到) ```c #include <stdio.h> #include <string.h> void foo(int B[][3]) { B[2][1] = 1; } int main(void) { int A[3][3] = { {1,2,3}, {4,5,6}, {7,8,9}}; foo(A); printf("%d", A[2][1]); return 0; } ``` 2. 問編譯會不會過 ```c #include <stdio.h> #define SWAP(a,b,c) (c t; t = a, a = b, b = t) int main(void) { int x = 10, y = 20; SWAP(x, y, int); printf("%d %d\n", x, y); return 0; } ``` 3. 問 `a2` 地址可能為何 (memory layout) ```c #include <stdio.h> static int a1 = 0; // 假設地址為 0x6xxxxxx int a2; // 地址? int main(void) { static int a3 = 0; // 假設地址為 0x6xxxxxx int a4; // 假設地址為 0x4xxxxxxx printf("%p", &a2); return 0; } ``` A. 0x8xxxxxx B. 0x6xxxxxx (a1 地址 + 4) C. 0x4xxxxxxx D. 0x6xxxxxx (a3 地址 + 4) 4. 問 static 變數/函式在函式內外還有模組內外的敘述(敘述有點長忘ㄌQQ) 5. 問下述程式碼行為 ```c #include <stdio.h> int foo(int x, int n) { int val = 1; while (n) { if(n%2 == 1) val = val * x; val = val * foo(x*x, n/2); n /= val; } return val; } ``` A. pow(n, x) B. 都不是 C. x * n D. pow(x, n) 6. 問輸出 (這題超怪,題目的確類似長這樣QQ) ```c #include <stdio.h> int main(void) { int arr[5] = {8, 4, 0, 1, 2}; int *ptr, index; for (index = 0, ptr = arr; index < 2; index++, ptr++) { printf("%d %d ", arr52, *ptr); } (*ptr)++; printf("%d %d ", arr52, *ptr); return 0; } ``` 7. 問輸出 ```c #include <stdio.h> void foo(char *str) { int index = 0; while (*str++) { index++; } printf("%d", index); } int main(void) { foo("I am a FW"); return 0; } ``` #### 填充題 1. 問輸出 ```c int main(void) { char src[] = "Hello world!"; char dst[20]; strncpy(dst, src, sizeof(dst)); printf("%ld\n", strlen(dst)); memcpy(dst, src, 5); printf("%ld\n", strlen(dst)); strncpy(dst, src, 5); printf("%ld\n", strlen(dst)); return 0; } ``` 2. 重新寫函式指標 ```c 原本 void(*(*papf)[3])(char *); 後來 typedef__________; pf(*papf)[3]; ``` 3. 問輸出 ```c #include <stdio.h> #define ADD(a,b) a+b int main(void) { int p = ADD(3, 4) * 5; printf("p = %d", p); return 0; } ``` 4. 問輸出 ```cpp #include <stdio.h> void foo(int *a, int& b, int c) { c = *a; b = 3; *a = 2; } int main(void) { int a = 1, b = 1, c = 3; foo(&a, b, c); printf("%d\t%d\t%d\n", a, b, c); return 0; } ``` 5. 問輸出 ```c #include <stdio.h> int main(void) { int i = 10, j = 0; while(i-- != 0) { j++; } printf("%d", j); return 0; } ``` 6. 問輸出 ```c #include <stdio.h> int main(void) { int A = 26; if(A & 0xF > 0x8) printf("MORE %d", A & 0xF); else printf("LESS %d", A & 0xF); return 0; } ``` #### 程式題 1. 輸入 n 印出 n 層的直角三角形 ``` Input: n = 3 Output: * *** ***** ``` 2. 不使用運算子 `sizeof()` 算出結構大小 (自己是用 `__alignof` 乘上結構成員數量 (雖然過了但感覺不是很對XD)) ```c struct ABC { int a; float b; char c; }; ``` ### 英文測驗 一共 60 分鐘,分成聽力跟閱讀各 50 題,聽力口音很重聽不太懂... ,閱讀我覺得文章不會很困難,單字題反而比較難,很多沒看過的字 ### 面試過程 兩個主管,表定 2 小時,最後面了 1 小時 50 分 先自我介紹,會針對 PPT 問問題,最後是主管介紹部門,過程中都可以問問題 :) #### 一些常見問題 1. 你可以簡介一下什麼是 DMA 2. 我稍微看了你的 Github ,發現你有些程式是直接蓋掉的,想問你為什麼不想把原本的程式碼保留 ? (我自己爛那時候不太會用 github XD) 3. 請問你可以接受的工時大概是多少 ? 4. 如果來實習,大概可以來幾天 ? 5. 平常去實驗室的時數大概多少 ? 6. 實驗室以外的時間大部分都在做什麼 ? 7. 碩論的研究方向大概是什麼 ? 8. 有沒有參加過什麼社團,或是擔任領導的經歷 ? 9. 擔任幹部的期間有沒有遇過什麼困難 ? 10. 有用過示波器嗎,什麼課程使用 ? 11. 有使用過 FPGA 嗎 ? #### [biRISC-V](https://github.com/Risheng1128/biriscv) 1. 闡述為什麼這個 CPU 會產生 dual-issue ? 2. 根據你產生 dual-issue 的條件,為什麼這樣不會導致 race condition ? 3. 說明一下這個 CPU 的 branch prediction 為何 ? 4. 你在做這個專題的時候,是怎麼跟隊友溝通的 ? #### [fibdrv](https://github.com/Risheng1128/fibdrv) 1. 量測的結果有一些的突刺,你認為這是什麼原因 ? (我回答可能是 page fault 或是 cache miss) 2. 那你覺得 page fault 和 cache miss 哪個比較可能才是對的 ? #### [ARM](https://github.com/Risheng1128/CM4-FreeRTOS) 1. 根據 FreeRTOS 的 context switch 原始碼,這邊的 `isb` 指令是做什麼的 ? (跟 memory barrier 有關) 2. 你知道 thumb 嗎 ? 4. ARM cortex-M 是怎麼控制 thumb ? 5. ARM 跟 thumb 指令集有什麼差別 ? 6. 既然你提到 AAPCS ,能否說明一下 AAPCS 的主要流程 ? 7. 你知道 trusted zone 是什麼嗎 ? (M 系列 ARMv8 後才有的樣子) 8. 有用過 A 系列嗎 ? #### [kecho](https://github.com/Risheng1128/kecho) 1. 稍微解釋為什麼 kernel space 比 user space 還速度還快 ? 2. 可以說明一下 CMWQ 是什麼嗎 ? 3. 為什麼使用 CMWQ 可以增加效能 ? 4. CMWQ 是怎麼去管理 CPU 的 ?

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully